一:mybatis的全局配置文件SqlMapConfig.xml(命名可以任意),配置内容如下:
properties(属性)
settings(全局配置参数)
typeAliases(类型别名)
typeHandlers(类型处理器)
objectFactory(对象工厂)
plugins(插件)
environments(环境合属性对象)
environment(环境子属性对象)
transactionManager(事务管理)
dataSource(数据源)
mappers(映射器)
1:typeAliases
在mapper.xml中,定义了很多的statement,statement需要parameterType指定输入参数类型,resultType指定输出结果的映射类型。
如果在指定类型时输入类型的全路径,不方便进行开发,可以针对parameterType或resultType指定的类型来定义一些别名,在mapper.xml中通过别名定义,方便开发
单个别名
<typeAlias type="全路径" alias="别名"/>
批量别名
<typeAliases> <!--批量别名定义 指定报名,mybatis自动扫描包中的po类,自动定义别名,别名就是类名(首字母大小写都行) --> <package name="包名"/> </typeAliases>
2:typeHandlers(类型处理器)
mybatis通过typehandlers完成jdbc类型和java类型的转换
一般情况下,mybatis默认提供的类型处理器已经能够满足我们日常的需要,不需要自定义
3:mappers(映射器)
1):通过resource加载单个映射文件
<mapper resource="mapper/user.xml" />
2):通过mapper接口来加载单个mapper
<!--通过mapper接口加载映射文件 遵循一些规范:需要将mapper接口类名和mapper.xml映射文件名称保持一致,且在一个目录中 上面规范的前提是:使用mapper代理的方法--> <mappers > <mapper class="main/config/User.xml"/> </mappers>
3):批量加载
<!--批量加载mapper 指定mapper接口的包名,mybatis自动的来扫描包下面的mapper接口进行加载 遵循一些规范:需要将mapper接口类名和mapper.xml映射文件名称保持一致,且在一个目录中 上面规范的前提是:使用mapper代理的方法--> <mappers> <package name="包名"/> </mappers>
二:输入类型
通过paramterType指定输入参数的类型,类型可以是简单类型,HashMap,pojo包装类型
传递pojo的包装类型(当传入的查询条件很复杂时,要自定包装类型)
包装类:
public class UserQueryVo { //这里可以包装所查询的条件 //用户查询条件 private User user; //可以包装其他的查询条件,订单等 public User getUser() { return user; } public void setUser(User user) { this.user = user; } }
接口:
public List<User> findUserList(UserQueryVo user);
映射文件
<!--用户信息的综合查询--> <select id="findUerList" parameterType="main.test.UserQueryVo"> select * from user where user.sex=#{user.sex} and user.username LIKE '%${user.username}' </select>
三:输出映射
1):resultType
使用resultType进行输出映射,只有查询出来的列名和pojo中的属性名一致,该列才可以映射成功
如果查询出来的列名和pojo中的属性名全部不一致,没有创建pojo
只要查询出来的列名和pojo中的属性有一个一致,就会创建pojo对象
2):resultMap:mybatis中使用resultMap完成高级输出结果映射
如果查询出来的列名和pojo的属性名不一致,通过定义一个resultMap对列名和pojo属性名之间作为一个映射关系。