框架:Mybatis开发规范及输入输出映射配置时注意事件

程序员需要编写mapper.xml映射文件

程序员编写mapper接口需要遵循一些开发规范,mybatis可以自动生成mapper接口实现类代理对象。

框架:Mybatis开发规范及输入输出映射配置时注意事件

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指定的类型一致。  

框架:Mybatis开发规范及输入输出映射配置时注意事件


2.配置SqlMapConfig.xml


mybatis的全局配置文件SqlMapConfig.xml,配置内容如下: 

properties(属性)

settings(全局配置参数)

typeAliases(类型别名)

typeHandlers(类型处理器)

objectFactory(对象工厂)

plugins(插件)

environments(环境集合属性对象)

environment(环境子属性对象)

transactionManager(事务管理)

dataSource(数据源)

mappers(映射器)

批量加载mapper(推荐使用)(一个mapper.xml对应于一个DAO的接口。namespace指定)
框架:Mybatis开发规范及输入输出映射配置时注意事件

3.输入映射


通过parameterType指定输入参数的类型,类型可以是简单类型hashmappojo的包装类型

 

POJO

  POJO是Plain OrdinaryJava Object的缩写

  可以当作简单的Java对象

  实际就是普通JavaBeans

框架:Mybatis开发规范及输入输出映射配置时注意事件

 POJO类中有属性和get、set方法,但是没有业务逻辑。说白了就是实体类嘛

3.1传递pojo的包装对象


3.1.1需求
完成用户信息的综合查询,需要传入查询条件很复杂(可能包括用户信息、其它信息,比如商品、订单的)

1)  定义包装类型pojo
针对上边需求,建议使用自定义的包装类型的pojo

在包装类型的pojo中将复杂的查询条件包装进去。

框架:Mybatis开发规范及输入输出映射配置时注意事件

2)  mapper.xml
在UserMapper.xml中定义用户信息综合查询(查询条件复杂,通过高级查询进行复杂关联查询)。

框架:Mybatis开发规范及输入输出映射配置时注意事件

1)  mapper.java

框架:Mybatis开发规范及输入输出映射配置时注意事件
4.输出映射


resultType


使用resultType进行输出映射,只有查询出来的列名和pojo中的属性名一致,该列才可以映射成功。

如果查询出来的列名和pojo中的属性名全部不一致,没有创建pojo对象。

只要查询出来的列名和pojo中的属性有一个一致,就会创建pojo对象

 

输出简单类型


1)  需求
用户信息的综合查询列表总数,通过查询总数和上边用户综合查询列表才可以实现分页

2)  mapper.xml

框架:Mybatis开发规范及输入输出映射配置时注意事件
3)  mapper.java

框架:Mybatis开发规范及输入输出映射配置时注意事件
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

框架:Mybatis开发规范及输入输出映射配置时注意事件
mapper.java

框架:Mybatis开发规范及输入输出映射配置时注意事件


小结


使用resultType进行输出映射,只有查询出来的列名和pojo中的属性名至少有一个一致,该列才可以映射成功。

如果查询出来的列名和pojo的属性名不一致,通过定义一个resultMap对列名和pojo属性名之间作一个映射关系。