ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2021-01-14 09:30:43  阅读:149  来源: 互联网

标签:妙用 Java 插入 Mybatis 使用 MyBatis WHERE 主键


作者:悠悠
来源:http://uusama.com/356.html

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

官方中文文档地址:

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

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

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

<<小于号
>>大于号
&&
'单引号
"双引号

可以使用:

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 类型。

<!-- 以下为错误写法,会抛NumberFormatException异常 -->
<if test="username == 'U'">

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

3、Mybatis实现WHERE IN查询

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

<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。

<insert id="User" useGeneratedKeys="true" keyProperty="id"> </insert>

MyBatis 面试题和答案我都整理好了,关注公众号Java技术栈​,回复:面试,​可以免费阅读。

近期热文推荐:

1.Java 15 正式发布, 14 个新特性,刷新你的认知!!

2.终于靠开源项目弄到 IntelliJ IDEA 激活码了,真香!

3.我用 Java 8 写了一段逻辑,同事直呼看不懂,你试试看。。

4.吊打 Tomcat ,Undertow 性能很炸!!

5.《Java开发手册(嵩山版)》最新发布,速速下载!

觉得不错,别忘了随手点赞+转发哦!

标签:妙用,Java,插入,Mybatis,使用,MyBatis,WHERE,主键
来源: https://blog.csdn.net/youanyyou/article/details/112599466

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有