当前位置:首页 > mybatis从入门到精通
1)dao接口实现类方法中存在大量模板代码,设想能否将这些代码提取出来,大大减少程序员的工作量
2)调用sqlSession的方法时将statement的id硬编码了
3)调用sqlSession的方法时传入的变量,由于sqlSession方法使用泛型,即使变量传入错误,在编译阶段也不会报错
4.3 mapper代理方法(程序员只需要mapper接口[相当于dao接口]) 思路:
4.3.1 程序员还需要编写mapper.xml映射文件
4.3.2 程序员编写mapper.java接口需要遵循一些开发规范,mtbatis可以自动生成mapper接口实现类代理对象 开发规范:
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指定的类型一致
// 根据用户id查询用户信息
publicUser findUserById(int uid)throwsException;
SELECT * FROM USER WHERE uid=#{id}
总结:以上开发规范主要对下边的代码进行统一生成,
User user = sqlSession.selectOne(\, uid);
4.3.4 最后还要将mapper.xml映射文件添加到SqlMapConfig.xml配置文件中
5、mybatis配置文件SqlMapConfig.xml
mybatis的全局配置文件SqlMapConfig.xml。配置内容如下:
PUBLIC \ \>
5.1 properties属性
需求:将数据库的连接参数单独配置在db.properties中,只需在SqlMapConfig.xml中加载db.properties的属性值
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/shop jdbc.username=root jdbc.password=123456
注意:mybatis将按照下面的顺序来加载属性: properties特性:
◇在properties元素体内定义的属性首先被读取
◇然后读取properties元素中resource或url加载的属性,它会覆盖已加载的同名属性
◇最后都去parameterType传递的属性,它会覆盖已读取得同名属性 建议:不要在properties元素体内定义任何属性;在properties属性文件中定义的属性名一定要有特殊性
5.2 settings全局参数配置
mybatis框架在运行时可以调整的一些运行参数。 比如:开启二级缓存、开启延迟加载...
5.3 typeAliases(别名)----重点
需求:在mapper.xml中,定义了很多statement,statement需要parameterType指定输入参数的类型、需要resultType指定输出结果的映射类型。
如果在指定类型是输入类型全路径,不方便进行开发,可以针对parameterType、resultType定义别名,方便开发 5.3.1 自定义别名:
5.4 typeHandlers(类型处理器)
mybatis中通过typeHandlers完成jdbc类型和java类型的转化----------mybatis提供的默认的类型处理器就够用了,不需要自己定义了
5.5 mappers加载映射文件
录中-->
6、mybatis核心:mybatis输入映射、mybatis输出映射 6.1 输入映射
通过parameterType指定输入参数的类型 6.6.1 传递pojo的包装对象
需求:完成用户信息的综合查询,需要传入查询条件(可能包括用户信息、其他信息)
针对上述需求,建议使用自定义的包装类型pojo,在包装类中将复杂的查询条件包装进去
1)首先,自定义包装类型UserQueryVo.java,里面包装了所有的查询条件
package com.liyuan.po;
共分享92篇相关文档