程序员需要编写mapper.xml映射文件
程序员编写mapper接口需要遵循一些开发规范,mybatis可以自动生成mapper接口实现类代理对象。
1.开发规范:
1、在mapper.xml中namespace等于mapper接口地址
2、mapper.java接口中的方法名和mapper.xml中statement的id一致
3、mapper.java接口中的方法输入参数类型和mapper.xml中statement的parameterType指定的类型一致。
4、mapper.java接口中的方法返回值类型和mapper.xml中statement的resultType指定的类型一致。
2.配置SqlMapConfig.xml
mybatis的全局配置文件SqlMapConfig.xml,配置内容如下:
properties(属性)
settings(全局配置参数)
typeAliases(类型别名)
typeHandlers(类型处理器)
objectFactory(对象工厂)
plugins(插件)
environments(环境集合属性对象)
environment(环境子属性对象)
transactionManager(事务管理)
dataSource(数据源)
mappers(映射器)
批量加载mapper(推荐使用)(一个mapper.xml对应于一个DAO的接口。namespace指定)
3.输入映射
通过parameterType指定输入参数的类型,类型可以是简单类型、hashmap、pojo的包装类型
POJO
POJO是Plain OrdinaryJava Object的缩写
可以当作简单的Java对象
实际就是普通JavaBeans
POJO类中有属性和get、set方法,但是没有业务逻辑。说白了就是实体类嘛
3.1传递pojo的包装对象
3.1.1需求
完成用户信息的综合查询,需要传入查询条件很复杂(可能包括用户信息、其它信息,比如商品、订单的)
1) 定义包装类型pojo
针对上边需求,建议使用自定义的包装类型的pojo。
在包装类型的pojo中将复杂的查询条件包装进去。
2) mapper.xml
在UserMapper.xml中定义用户信息综合查询(查询条件复杂,通过高级查询进行复杂关联查询)。
1) mapper.java
4.输出映射
resultType
使用resultType进行输出映射,只有查询出来的列名和pojo中的属性名一致,该列才可以映射成功。
如果查询出来的列名和pojo中的属性名全部不一致,没有创建pojo对象。
只要查询出来的列名和pojo中的属性有一个一致,就会创建pojo对象。
输出简单类型
1) 需求
用户信息的综合查询列表总数,通过查询总数和上边用户综合查询列表才可以实现分页。
2) mapper.xml
3) mapper.java
4) 小结
查询出来的结果集只有一行且一列,可以使用简单类型进行输出映射。
5.resultMap使用方法
如果查询出来的列名和pojo的属性名不一致,通过定义一个resultMap对列名和pojo属性名之间作一个映射关系。
1、定义resultMap
2、使用resultMap作为statement的输出映射类型
将下边的sql使用User完成映射
SELECT id_ , username_ FROM USER WHERE id=#{value}
User类中属性名和上边查询列名不一致。
表中id_对应pojo中id,表中username_对应于pojo中的username
定义reusltMap
mapper.java
小结
使用resultType进行输出映射,只有查询出来的列名和pojo中的属性名至少有一个一致,该列才可以映射成功。
如果查询出来的列名和pojo的属性名不一致,通过定义一个resultMap对列名和pojo属性名之间作一个映射关系。