mybatis的映射器包含两部分:接口和映射文件。映射器的配置元素包括:select、insert、update、delete、sql、resultMap。mybatis映射文件的总结:
1、对于parameterType入参类型常用的有java.util.Map、java.lang.Integer等,可以采用系统自带的别名如byte、long、short、int、integer、float、double、boolean、string、date、map、list、decimal、bigdecimal等简化配置,也可以在mapper中自定义别名如
传递多个参数的情况下,有如下传参方式:
1) 封装到map,用map接收;
2) 通过@Param("userId")传递,无需parameterType接收可直接使用;
3) 通过POJO封装同时用它接收。
建议5个以下参数采用第二种方式,5个以上采用第三种。返回类型一般有resultType和resultMap两种,insert、update、delete是不需要返回类型的,默认是整型。
2、resultMap用来映射结果集。type为映射的实体类,可以是类的全限定名或别名;id为此resultMap的标识。resultMap包含id、result、association 子元素,id和result用来将POJO的属性和SQL的列名做对应。
resutltMap的type属性设置为java.util.Map可以在dao中用Map
而实际上type为实体类的情况更常用,resultMap="BaseResultMap"表示返回类型为实体类
association – 复杂类型的结合;多个结果合成的类型
3、主键回填,插入操作后返回自增Id,useGeneratedKeys用来控制是否打开自动生成主键这个功能,默认是false,当打开了这个开关,还要配置其属性keyProperty或keyColumn,告诉系统将生成的主键放入到哪个属性中。
4、字段为sql关键字如from,可使用反引号
INSERT IGNORE INTO t_user_info( member_code, enterprise_id, `from` ) VALUES ( #{memberCode}, #{enterpriseId}, #{from})
动态SQL的基本元素包括:if、set、where、bind、foreach、choose(when,otherwise)、trim(where,set)
1、
prefix代表的是语句的前缀,而prefixOverrides代表的是那种字符串。
insert into t_user_info
MEMBER_CODE,
enterprise_id,
update_time
#{memberCode,jdbcType=VARCHAR},
#{enterpriseId,jdbcType=INTEGER},
#{updateTime,jdbcType=TIMESTAMP}
2、批量操作或in需要使用到
insert ignore into t_user_info (
MEMBER_CODE,
DEPARTMENT_ID,
UPDATE_TIME
)
values
(
#{item.memberCode,jdbcType=VARCHAR},
#{item.departmentId,jdbcType=INTEGER},
#{item.updateTime,jdbcType=TIMESTAMP}
)
3、数值比较时不允许出现">"、"&&"这样的字符,因为这个mapper文件是xml格式的,使用这类符号不再进行解析
m.`music_name` AS resultName
4、选择判断
5、以上示例如果不使用1=1,有时会出错,加入后又觉得多余,可以通过
6、更新操作使用
update t_role
role_name = #{roleName},
note = #{note},
where role_no = #{roleNo}
7、
参考:mybatis官方文档