掌握了这些,你才算真正的Mybatis入门😊
概述
Mybatis是SSM框架中的M,百度百科,是一个优秀的持久层框架,对jdbc过程进行封装,更加专注于SQL。本文将详细的带你快速掌握Mybatis入门操作和配置。
教程
1.jdbc存在的问题及Mybatis和hibernate的区别
jdbc存在的问题
- 频繁对数据库进行连接的创建释放,浪费系统资源
- sql代码不易维护
- 如果查询多个条件,需要where 1==1等前提条件,较为麻烦
- pojo(bean)对象和数据库有关联但是不能利用此关联简化代码
Mybatis如何解决
- 在sqlMapConfig.xml中配置数据连接池,使用连接池管理数据库链接。
- 将Sql语句配置在XXXXmapper.xml文件中与java代码分离
- Mybatis自动将java对象映射至sql语句,通过statement中的parameterType定义输入参数的类型。
- Mybatis自动将sql执行结果映射至java对象,通过statement中的resultType定义输出结果的类型。
Mybatis和hibernate的区别
Mybatis需要自己写Sql语句,而hibernate可以做到真正的只操作对象实现dao层操作,在更换数据库软件时,Mybatis需要重新编写特定的sql语句,而hibernate只需要改配置即可,由此得出mybatis无法做到数据库无关性。但是,正因为可以自己写sql语句,Mybatis可以利用其灵活的特性编写复杂的服务。
2.环境搭建
2.1下载Mybatis
mybatis-3.2.7.jar mybatis的核心包
lib文件夹 mybatis的依赖包所在
mybatis-3.2.7.pdf mybatis使用手册
2.2.创建配置文件
db.properties
1 | jdbc.driver=com.mysql.jdbc.Driver |
sqlMapConfig.xml
在src下创建sqlMapConfig.xml(名称固定),添加如下代码:
1 |
|
sqlMapConfig.xml是mybatis核心配置文件,配置文件内容为数据源、事务管理。
log4j.properties
src下创建log4j.properties(日志配置),代码如下
1 | # Global logging configuration |
mybatis默认使用log4j作为输出日志信息。
2.3创建JavaBean文件
此处需要由你自定义的表结构来写(后续介绍逆向工程可以简化此步骤)
2.4创建sql映射文件
新建包mapper,在其下创建User.xml
1 |
|
加载映射文件,将users.xml添加在SqlMapConfig.xml,如下:
1 | <mappers> |
3.写测试代码
3.1编写sql
1 | <!-- 通过id查询一个用户 --> |
这里我们注意到入参或者结果是我们定义的类时需要写相对路径,我们可以在sqlMapConfig加入如下代码:
1 | <!-- 别名 包及其子包下所有类 头字母大小写都行 --> |
3.2创建junit包测试
方法通用部分
1 | //加载核心配置文件 |
编写原始dao开发方式会发现selectOne/selectList很繁琐,我们更推荐用Mapper动态代理方式
3.3Mapper动态代理方式
在Mapper包下新建UserMapper.java接口,并把User.xml重命名UserMapper.xml(原则4用到)
Mapper接口遵循四个原则:
- 接口方法名 ==Mapper.xml中id名
- 返回值类型与Mapper.xml文件中返回值类型要一致
- 方法的入参类型与Mapper.xml中入参类型要一致
- 命名空间绑定此接口
3.4MapperTest
1 | //SqlSession帮我生成一个实现类(给接口) |
4.动态sql
如果sql查询字段名和pojo的属性名不一致,需要用到resultMap
if标签,where标签,foreach标签
1 | <sql id="select">//公共部分 |
5.关联查询
5.1一对一查询
需要在Orders.java添加User user属性
1 | <!-- 一对一关联查询 以订单为中心关联用户 --> |
5.2一对多查询
需要在User.java添加List
1 | <!-- 一对多关联查询 --> |
6. Mybatis整合spring
6.1配置头
1 |
|
6.2传统Dao开发
1 | <!-- Mybatis的工厂 --> |
6.3Mapper动态代理开发
1 | <!-- Mapper动态代理开发 |
6.4SpringTest
1 | ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml"); |
7.Mybatis逆向工程
使用官方网站的Mapper自动生成工具mybatis-generator-core-1.3.2来生成po类和Mapper映射文件
导入逆向工程Project,修改配置运行即可得到
注意:
- 逆向工程生成的代码只能做单表查询
- 不能在生成的代码上进行扩展,因为如果数据库变更,需要重新使用逆向工程生成代码,原来编写的代码就被覆盖了。
- 一张表会生成4个文件
结语
上述基本就是Mybatis入门所有的内容啦,如果这篇文章对你有帮助的话,动动小手点个赞吧🤭