一、在mybatis中,${} 和 #{} 的区别是什么

${}: 底层用的是statement,有sql注入的风险
#{}:底层用的是preparestatement,没有sql注入的风险

二、如何获取自动生成的(主)键值?

三、在mybatis中,resultType和ResultMap的区别是什么

resultType: 查询返回的结果字段名与实体类的属性名完全一致,则用resultType
resultMap: 查询返回的结果字段名与实体类中的属性名不完全一致,则需要用resultMap为表和实体类建立一一对应的映射关系

四、在Mybatis中你知道的动态SQL的标签有哪些?作用分别是什么?

: 判断其test中的结果为true,再把标签内的sql动态拼接上
:去除sql语句中多余的where and or
:去除sql语句中多余的set和逗号
:sql语句中需要多选一的情况下使用,类似java中的switch
:sql语句中需要多选一的情况下配合choose使用,类似java中的case
:sql语句中需要多选一的情况下配合choose使用,类似java中的default
:遍历传入的集合对象,把每一项内容作为参数传到sql语句中
:引用 标签的内容,里面有个属性refid可以引入对应id的SQL标签内容
( 修剪):where和set都可以通过trim去实现,其中有prefix(前缀)和prefixOverrides(覆盖前缀)两个方法
: 将可复用的内容抽取出来