mybatiscdata,mybatiscdata用法

http://www.itjxue.com  2023-01-20 00:46  来源:未知  点击次数: 

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语句,这里就会把它当成一个查询值了。

(责任编辑:IT教学网)

更多

推荐网络工程师文章