做者:悠悠
来源:http://uusama.com/356.htmlhtml
Mybatis 是 Java 中一个很是好用的数据库框架,这儿记录一下在使用过程当中遇到的坑。java
官方中文文档地址:面试
http://www.mybatis.org/mybatis-3/zh/getting-started.htmlspring
一、在Mybatis mapping.xml映射配置文件中使用大于>号小于号<数据库
因为Mybatis的映射文件遵循xml文件的格式,因此不能使用像大于号或者小于号这样的xml文件特殊字符,须要使用转义字符代替。数组
< | < | 小于号 |
---|---|---|
> | > | 大于号 |
& | & | 和 |
' | ’ | 单引号 |
" | “ | 双引号 |
可使用:mybatis
SELECT * FROM test WHERE 1 = 1 AND start_date <= CURRENT_DATE AND end_date >= CURRENT_DATE <![CDATA[ when min(starttime)<='12:00' and max(endtime)<='12:00' ]]>
二、Mybatis中使用OGNL表达式test比较字符串intellij-idea
在Mybatis映射配置文件中,使用OGNL表达式test的时候,比较字符串时,须要调用 toString()方法保证 == 两边的值都是 String 类型。app
<!-- 如下为错误写法,会抛NumberFormatException异常 --> <if test="username == 'U'"> <!-- 正确写法以下两种 --> <if test="username == 'U'.toString()"> <if test='username == "U"'>
三、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做为集合参数。
四、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 写了一段逻辑,同事直呼看不懂,你试试看。。
以为不错,别忘了随手点赞+转发哦!