当前java后端的M层用的最常用的就是mybatis了,所以能够熟练使用mybatis不但在工作中事半功倍,而在找工作中也可以为你加分不少。为什么mybatis这么火爆。首先MyBatis 支持定制化 SQL,免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以对配置和原生Map使用简单的 XML 或注解,将接口和普通的 Java对象映射成数据库中的记录非常智能。
1. #{}和${}的区别是什么?
#{}是预编译处理,${}是字符串替换。
Mybatis在处理#{}时,会将sql中的#{}替换为?号,调用PreparedStatement的set方法来赋值;
Mybatis在处理${}时,就是把${}替换成变量的值。
使用#{}可以有效的防止SQL注入,提高系统安全性
2.如何执行批量新增?
<insert id="batch_insert" parameterType="java.util.List">
insert into names (name,password) VALUES
<foreach collection="names" item="n" separator="," index="index" >
(#{n.name}, #{n.password})
</foreach>
</insert>
3.Mybatis动态SQL?
Mybatis的动态SQL语句方便在SQL语句中实现某些逻辑;可以使用标签组合成灵活的sql语句,提供开发的效率
Mybatis的动态SQL组成主要由以下几类:
If语句(简单的条件判断)
Choose(when/otherwise),相当于java语言中的switch,
Foreach(一般使用在mybatis in语句查询时特别有用)
另外4种为:trim|where|set|bind。
4.mybatis的一对一,一对多,多对多的配置
一对一:主要是<resultMap>与<association>
一对多:主要是<collection>