前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MyBatis 的 4 个妙用,别再踩坑了!

MyBatis 的 4 个妙用,别再踩坑了!

原创
作者头像
程序员白楠楠
修改2021-01-08 10:15:35
8220
修改2021-01-08 10:15:35
举报

Mybatis 是 Java 中一个非常好用的数据库框架,这儿记录一下在使用过程中遇到的坑。

官方中文文档地址:

http://www.mybatis.org/mybatis-3/zh/getting-started.html

1、在Mybatis mapping.xml映射配置文件中使用大于>号小于号<

由于Mybatis的映射文件遵循xml文件的格式,所以不能使用像大于号或者小于号这样的xml文件特殊字符,需要使用转义字符代替。整理了一份272页MybatisPDF文档

<

<

小于号

>

>

大于号

&

&

'

单引号

"

双引号

可以使用:

代码语言:javascript
复制
SELECT?*?FROM?test?
WHERE?1?=?1?AND?start_date??&lt;=?CURRENT_DATE?AND?end_date?&gt;=?CURRENT_DATE
<![CDATA[?when?min(starttime)<='12:00'?and?max(endtime)<='12:00'?]]>

2、Mybatis中使用OGNL表达式test比较字符串

Mybatis映射配置文件中,使用OGNL表达式test的时候,比较字符串时,需要调用 toString()方法保证 == 两边的值都是 String 类型。

代码语言:javascript
复制
<!--?以下为错误写法,会抛NumberFormatException异常?-->
<if?test="username?==?'U'">

<!--?正确写法如下两种?-->
<if?test="username?==?'U'.toString()">
<if?test='username?==?"U"'>

3、Mybatis实现WHERE IN查询

WHERE IN查询中,IN的参数是一个列表,需要传送一个列表参数,使用 foreach 实现。

代码语言:javascript
复制
<select?id="selectPostIn"?resultType="domain.blog.Post">
?SELECT?*?FROM?POST?P
?WHERE?ID?in
?<foreach?item="item"?index="index"?collection="list"??open="("?separator=","?close=")">
????#{item}
?</foreach>
</select>

当使用可迭代对象或者数组时,index是当前迭代的次数,item的值是本次迭代获取的元素。当使用字典(或者Map.Entry对象的集合)时,index是键,item是值。

你可以将任何可迭代对象(如列表、集合等)和任何的字典或者数组对象传递给foreach作为集合参数。

4、Mybatis插入数据的时候返回插入记录的主键id

在进行输入库插入的时候,如果我们需要使用已经插入的记录的主键,则需要返回刚才插入的数据的主键id。

通过设置 insert 标签的 useGeneratedKeys 属性为 true 可以返回插入的记录的主键的id。整理了一份272页MybatisPDF文档

代码语言:javascript
复制
<insert?id="User"?useGeneratedKeys="true"?keyProperty="id">?</insert>

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、在Mybatis mapping.xml映射配置文件中使用大于>号小于号<
  • 2、Mybatis中使用OGNL表达式test比较字符串
  • 3、Mybatis实现WHERE IN查询
  • 4、Mybatis插入数据的时候返回插入记录的主键id
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com