mybatis配置涉及模块&配置文件说明

1.      搭建框架:

web.xml

Springmvc

spring-service

spring-transaction

spring-mapper

SqlMapConfig.xml

 

 

 

 

 

 

 

 

 

 

 

 

2.      生成Mapper接口和Mapper配置文件(接口和配置文件中的方法名要一一对应),以及POJO

3.      mybatis配置文件说明:

a.      用#表示占位符,如where stuID = #{stuid}

b.      拼接符$,如where username like ‘%${value}$%’ 定义输入到sql中的映射类型,${value}表示使用参数将${value}替换,做字符串的拼接。注意:如果是取简单数量类型的参数,括号中的值必须为value,POJO类型时参数可以是属性名。

#{} 和 ${} 区别:

#{}表示一个占位符,通过#{}可以实现preparedStatement(预处理语句)向占位符中设置值,自动进行java类型和jdbc类型转换,#{}可以有效防止sql注入。#{}可以接收简单类型值或POJO属性值。如果parameterType传输单个简单类型值,#{}括号中可以是value或其它名称。

${}表示拼接sql串,通过${}可以将parameterType传入的内容拼接在sql中且不进行jdbc类型转换,${}可以接收简单类型值或POJO属性值。如果parameterType传输单个简单类型值,${}括号中只能是value。

c.      自增主键插入数据库后,返回自增的id值,

如果值自增的整数类型,是在插入之后才有值,所以主键值的获取阶段是after,order = “AFTER”,插入成功后MyBatis会把自增的id值赋值给POJO。

第二种主键形式,UUID形式,这种形式的主键是需要在插入之前为POJO对象赋主键值,如果不想自己通过java代码来手动赋值,那么可以让MyBatis自动为POJO的主键属性赋值,这时就得在插入之前执行,Mybatis会自把生成的UUID值赋值给POJO。

4.      一对一映射:由于MyBatis是半自动化的映射,所以不会自动加载对应关联属性,需要自己进行查询结果映射。(在POJO中添加关联属性的get,set方法)

在mapper.xml中配置返回属性映射,因为这种非字段属性MyBatis不会自动组装,一对一用association节点进行包裹关联属性,关联属性和查询的结果字段中,如果和主表栏目字段名冲突了得起别名,如左连接结果id改为uid别名进行关联。

5.      一对多映射:

POJO中添加集合属性;

mapper中配置属性映射,集合属性包裹在collection节点中

6.      批量查询:

sql中的 in(1,2,3,4) 在MyBatis中也可以通过内置的循环标签属性foreach进行,如查询ids,这时用 in 就比较快一些,foreach 标签支持传入 list 和 map 进行遍历,但是map用的不多,因为多个属性时一般传入POJO,但是 list 用的地方还挺多,其可以遍历POJO下的list类型属性,也支持直接传入 list 集合进行遍历(直接传入 list 集合)。

批量操作如果传入的是POJO,那么collection 指定为 POJO 属性名。

 

参考:https://www.cnblogs.com/javabg/p/7472287.html

posted on 2019-01-29 16:17  arrows  阅读(177)  评论(0编辑  收藏  举报

导航