mybatiscdata,mybatiscdata用法
Mybatis语句怎么写?
mybatis的sql和你在数据库客户端执行的sql是一样的,但是在mybatis中调用的sql一般都是动态的,所以用到了参数传递。这个mybatis有对应的标签以及相应的变量来实现。你可以搜索下mybatis标签。同时给你一个参考的你看看,这个是一个查询用户的
select?id="queryUsers"?parameterType="map"?resultType="xx.xx.xx.bean.UserBean"
????![CDATA[
select?
?? ID,
LOGIN_NAME?AS?loginName,
PASSWORD,
REAL_NAME?AS?realName,
POSITION,
(SELECT?D.POSITION_NAME?FROM?UNIT_POSITION?D?WHERE?D.POSITION_CODE=T.POSITION)?POSITIONNAME,
USER_TYPE?AS?userType,
SEX,
PID,
TO_CHAR(T.BIRTHDAY,'YYYY-MM-DD')?BIRTHDAY,
EMAIL,
CONTACT_TEL?AS?contactTel,
CONTACT_MOBILE?AS?contactMobile,
CONTACT_FAX?AS?contactFax,
CONTACT_ZIP?AS?contactZip,
CONTACT_ADDR?AS?contactAddr,
STATUS,
EDUCATION,
(SELECT?D.EDUCATION_NAME?FROM?UNIT_EDUCATION?D?WHERE?D.EDUCATION_CODE=T.EDUCATION?AND?D.STATUS=0)?EDUCATIONNAME,
NATION,
POLITICAL,
REMARK,
TO_CHAR(T.CREATE_DATE,'YYYY-MM-DD?HH24:MI:SS')?createDate,
(SELECT?D.REAL_NAME?FROM?UNIT_USER?D?WHERE?D.ID=?T.CREATE_USER_ID)?createUserId,
TO_CHAR(T.UPDATE_DATE,'YYYY-MM-DD?HH24:MI:SS')?updateDate,
(SELECT?D.REAL_NAME?FROM?UNIT_USER?D?WHERE?D.ID=?T.UPDATE_USER_ID)?updateUserId
? from?UNIT_USER?T
]]
where
T.STATUS='1'
if?test="realName?!=null?and?realName?!=''"
and?T.REAL_NAME?like?'%${realName}%'
/if
if?test="nexusDpartment?!=null"
AND?T.ID?IN?(SELECT?DISTINCT?D.USER_ID?FROM?UNIT_USER_DEPT?D?WHERE?D.DEPT_CODE?IN?(${nexusDpartment}))
/if
if?test="deptCode?!=null?and?deptCode?!=''"
AND?T.ID?IN?(SELECT?DISTINCT?D.USER_ID?FROM?UNIT_USER_DEPT?D?WHERE?D.DEPT_CODE?=?#{deptCode})
/if
/where
if?test="sort?!=?null?and?sort?!=?''"?
order?by?${sort}?
if?test="direction?!=?null?and?direction?!=?''"
${direction}
/if
/if
/select
MyBatis中CDATA的作用
在XML文档的解析过程中,首先查找元素的起始符,即字符""和字符""。字符""表示为新元素的开始,字符""表示为字符实体的开始。CDATA的作用是保护这些特殊字符(例如,小于号等)不被解析。
使用![CDATA[]]来包含不被XML解析器解析的内容。但要注意的是:不允许嵌套使用;不能再包含"]]"。
在使用MyBatis过程中,有时我们的SQL是写在XML 映射文件中,如果写的SQL中有一些特殊的字符的话,在解析XML文件的时候会被当做XML自身元素,但我们不希望如此操作,所以我们要使用![CDATA[ ]]来解决。如下所示:
如果不想使用![CDATA[]],那么请使用转义字符,效果一样的:
提示:严格地讲,在 XML 中仅有字符 ""和"" 是非法的。省略号、引号和大于号是合法的,但是把它们替换为实体引用是个好的习惯,从而避免歧义。
最后,说说![CDATA[]]和XML转义字符的关系,它们的功能就是一样的,只是应用场景有些不同:
(1)![CDATA[]]不能适用所有情况,转义字符可以;
(2) 对于短字符串![CDATA[]]写起来繁琐,对于长字符串转义字符可读性差;
(3) ![CDATA[]]表示XML解析器忽略解析,所以更快一些。
mybatis执行SQL查不到数据,在数据库执行可以查到
datasource或者jdbc中的配置url不对 , 设置编码格式,表创建时候的编码格式需要在url中声明,并且传入的数据也应该是相同编码格式的(这个没注意,一直用的utf8).
比如 你创建一张表 使用的是engine innodb charset utf8;那么你的数据源url连接就应该是 jdbc:mysql://(数据库地址+端口)/(数据库名)?useUnicode=truecharacterEncoding=utf8(可能还会有别的参数需要指定);
究其原因 还是因为编码格式的问题,你的李四 到数据库的前,会在myabtis做一些处理,做这些处理的时候,李四就可能不在是李四了 所以使用mybatis查询不到,但是在mysql中直接查询是查询得到的
【转载】mybatis中的转义字符表
mybatis中写自定义sql的时候,可能需要用到的转义字符,在此记录:
需要注意的是分号是必不可少的。 比如 a b 我们就写成 a b
我们也可以用另外一种,就是![CDATA[ ]]符号。 在mybatis中这种符号将不会解析。 比如
mybatis中的作用
今儿在修改一个时间区间检索的问题的时候,看到了![CDATA[]],以前也看到过,但是不知道是什么意思,今儿就度娘了下,进行一个自我的记录
在使用mybatis 时我们sql是写在xml 映射文件中,如果写的sql中有一些特殊的字符的话,在解析xml文件的时候会被转义,但我们不希望他被转义,所以我们要使用![CDATA[ ]]来解决。
CDATA的形式如下: ![CDATA[文本内容]] 。
CDATA的文本内容中不能出现字符串“]]”。另外,CDATA不能嵌套。
CDATA区域是由“![CDATA["为开始标记,以“]]”为结束标记,注意CDATA为大写。
mybatis 配置文件文件中 是什么意思
#能做数据类型匹配,$则不可以。
像你![CDATA[
${value}]]
如果value是sql语句,那这里就是个动态的sql语句了,最终会执行这条sql语句。
select
*
from
student
where
id
=
#{id}
如果你这个id也传入个sql语句,这里就会把它当成一个查询值了。