SqlMapConfig.xml配置文件的参数
SqlMapConfig.xml中配置的内容和顺序如下
1.properties(属性)
2.settings(全局配置参数)
3.typeAliases(类型别名)
4.typeHandlers(类型处理器)
5.objectFactory(对象工厂)
6.plugins(插件)
7.environments(环境集合属性对象)
8.environment(环境子属性对象)
9.transactionManager(事务管理)
10.dataSource(数据源)
11.mappers(映射器)
常用到的几个参数信息
1.properties(在这里我们可以引用java属性文件中的配置信息(例如数据库的基本信息))
我们新建一个资源文件夹(在idea下创建这个比较麻烦),具体过程是
右键项目创建一个普通文件夹
然后打开
进去里面找到model
然后我们就可以把配置文件放到这里了(其下还可以创建子包,方便整合其它框架时的配置文件)
其中db.properties文件就是我们把数据库信息提取到这里,然后再SqlMapConfig文件中用ognl表达式获取,这样做的目的是以后修改数据库的内容就更加方便
接下来就去SqlMapConfig文件中加载即可
测试一下根据id查询是否成功(其它配置查看这里)
其中还要注意一些问题
MyBatis 将按照下面的顺序来加载属性:
1.在 properties 元素体内定义的属性首先被读取。
2.然后会读取properties 元素中resource或 url 加载的属性,它会覆盖已读取的同名属性。
3.最后读取parameterType传递的属性,它会覆盖已读取的同名属性。
所以给出建议
1.不要在properties元素体内添加任何属性值,只将属性值定义在properties文件中。
2.在properties文件中定义属性名要有一定的特殊性,如:XXXXX.XXXXX.XXXX
2.setting(全局配置参数)
mybatis框架在运行时可以调整一些运行参数。
比如:开启二级缓存、开启延迟加载。。
全局参数将会影响mybatis的运行行为。(参数很多,来源于网络收集,用到再翻开来查看)
3.typeAliases(类型别名)(常用)
如果开发过程中每次resultType或者parameterType都要指定类的全路径,这样开发起来就很麻烦,所以引入类型别名
在mybatis中支持默认的类型别名,如下所示
可以看出就是基本类型和包装类型都可以直接使用
然后还有们自定义的类型(pojo类型)
现在我们去使用一下这个别名(在mapper.xml文件中)
测试一下效果
4.mappers(映射配置)
1.通过resource加载单个映射文件
2.通过mapper接口加载单个mapper
3.批量加载mapper(推荐使用)
Mapper.xml文件参数
1.id:标识sql的statement
2.parameterType:输入类型
3.resultType
4.resultMap
parameterType
1.当传入简单类型时
但是${}这个占位符传入简单类型时只能使用value
如果传入的是pojo时,那么就应该用ognl表达式传值
测试一下
结果
如果你其中的属性名字输入错误的话就会这样
结果
如果包装类的话那么应该用包装类.包装类属性名获取值
首先我们创建一个pojo类,它的属性就是user
去mapper.xml文件配置好
在Mapper接口中配置好
测试类
结果
resultType
使用resultType进行输出映射,只有查询出来的列名和pojo中的属性名一致,该列才可以映射成功。
1.如果查询出来的列名和pojo中的属性名全部不一致,没有创建pojo对象。
2.只要查询出来的列名和pojo中的属性有一个一致,就会创建pojo对象。
1.输出简单类型(只有查询结果为一条记录且只有一个字段才能使用),例如查询相同用户名的数量
配置mapper.xml文件
编写接口方法
手动向数据库加入重复信息
测试类
结果
2.输出pojo对象或者列表,不管是单个用户还是一个列表,在指定resultType类型是一样的
比如下面的根据id查询一个用户和根据用户名模糊查询多个用户
mapper接口方法,可见最后的返回值根据我们的查询经验得另一个是用列表形式的
测试类
结果
可知底层是根据接口的返回值调用selectOne或者selectList方法的
resultMap实现高级输出结果映射
如果查询出来的列名和pojo的属性名不一致,通过定义一个resultMap对列名和pojo属性名之间作一个映射关系,就可以让结果不为空了
映射配置文件如下
mapper接口方法编写如下
测试类
结果
总结resultType和resultMap的不同
1.使用resultType进行输出映射,只有查询出来的列名和pojo中的属性名一致,该列才可以映射成功。
2.如果查询出来的列名和pojo的属性名不一致,通过定义一个resultMap对列名和pojo属性名之间作一个映射关系。
基本配置内容就学习到这里,mapper.xml文件中还有一个动态sql内容就下次再来搞清楚把