当前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>