mybatis的简介这里就不多说了,百度一大堆,我们只需要这是一个JDBC的升级版,让我们更好的操作数据库,减少不必要的代码,让我们专注于实现自己的业务逻辑.
web开发的三层架构 (mvc )
- 三层架构
界面层: 和用户打交道的, 接收用户的请求参数, 显示处理结果的。(jsp ,html ,servlet)
业务逻辑层: 接收了界面层传递的数据,计算逻辑,调用数据库,获取数据
数据访问层: 就是访问数据库, 执行对数据的查询,修改,删除等等的。三层对应的包
界面层: controller包 (servlet)
业务逻辑层: service 包(XXXService类)
数据访问层: dao包(XXXDao类)三层对应的处理框架
界面层—servlet—springmvc(框架)
业务逻辑层—service类–spring(框架)
数据访问层—dao类–mybatis(框架)
使用 JDBC 的缺陷
- 代码比较多,开发效率低
- 需要关注 Connection ,Statement, ResultSet 对象创建和销毁
- 对 ResultSet 查询的结果,需要自己封装为 List
- 重复的代码比较多些
- 业务代码和数据库的操作混在一起
MyBatis 解决的主要问题
- 注册数据库的驱动,
- 创建 JDBC 中必须使用的 Connection , Statement, ResultSet 对象
- 从 xml 中获取 sql,并执行 sql 语句,把 ResultSet 结果转换 java 对象
4.关闭资源
ResultSet.close() , Statement.close() , Conenection.close()
mybatis使用步骤:
1.导入maven环境
2.创建dao接口,里面定了你需要对数据库执行什么操作
3.编写mapper文件,sql映射文件,写上你的sql语句
4.创建mybatis主配置文件,读取配置文件中的内容,连接到数据库
5.使用mybatis对象执行sql语句:sqlSession对象
6.关闭连接:sqlSession.close();
新建数据库表
CREATE TABLE (
int NOT NULL AUTO_INCREMENT,
varchar(255) DEFAULT NULL,
varchar(255) DEFAULT NULL,
varchar(255) DEFAULT NULL,
varchar(255) DEFAULT NULL,
PRIMARY KEY ()
) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
1.使用maven新建一个项目(项目 目录结构)

1.1准备一个java Use 类
2.配置pom.xml文件导入相应的依赖包
3.编写dao接口
4.编写dao接口的xml文件
5.资源目录下的 mybatis.xml文件
6.测试是否可以用
7.测试结果:

注意事项:
1:target目录下一定要有这两个文件,如果没有,手动复制进去也行

2.mysql的依赖配置如果是高版本的:
driver的值是:com.mysql.cj.jdbc.Driver
3.mysql的依赖配置如果是高版本的,url是这样的:
dbc:mysql://localhost/book_ctiy?serverTimezone=GMT%2B8
一定要加上时区,不然会报错
4.在pom.xml配置文件中需要加上,才能更好的将pom.xml和UserManagerDao.xml文件映射出去

项目的目录结构: :
需要注意的是target目录下必须有标记红色框的那两个文件,否则执行的时候回报错

1.准备数据库表
2.创建实体类
3.创建maven项目,大多数配置一样,但是某些配置根据自己的来
注意:
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.9</maven.compiler.source>
<maven.compiler.target>1.9</maven.compiler.target>
4.配置mybatis的主配置文件
注意点:
mysql驱动包如果是高版本的:
driver的值需要些成:com.mysql.cj.jdbc.Driver 否则会报异常
url需要加上时区:否则执行会报错
url= jdbc:mysql://主机名/数据库名?serverTimezone=GMT%2B8
5.编写mybatis工具类
工具类就是为了简化代码,因为有很多重复写,而且没有意义的代码,可以创建工具类,有工具类完成,使我们的代码更加简洁.
5.定义dao接口,看我们需要实现哪些功能
6.编写Dao.xml文件.让这个xml文件去代替我们的JDBC
注意点:
mapper 标签的namespace的值
尽量按照这个规范:com.mybatis.dao.UserManagerDao
方便后面使用动态代理,使用反射机制.
模糊查询的sql语句参数是$不是#
是这样
而不是这样
7.编写daoImpl
注意点:
执行完sql语句之后一定要几点关闭数据库连接
sqlSession.close();
在执行增删改的时候mybatis是默认手动提交事务,需要我们手动设置为自动提交事务
方法1: sqlSession.commit();
方法2:在工具类中设置:sqlSession = factory.openSession(true);//自动提交事务
8.编写Test类 测试我们的方法是否可用
- Resources: mybatis中的一个类, 负责读取主配置文件
InputStream in = Resources.getResourceAsStream(“mybatis.xml”);
2.SqlSessionFactoryBuilder : 创建SqlSessionFactory对象,
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
//创建SqlSessionFactory对象
SqlSessionFactory factory = builder.build(in);
3.SqlSessionFactory : 重量级对象, 程序创建一个对象耗时比较长,使用资源比较多。
SqlSessionFactory:接口 , 接口实现类: DefaultSqlSessionFactory
SqlSessionFactory作用: 获取SqlSession对象。
SqlSession sqlSession = factory.openSession();
openSession()方法说明:
1. openSession() :无参数的, 获取是非自动提交事务的SqlSession对象
2. openSession(boolean): openSession(true) 获取自动提交事务的SqlSession.
openSession(false) 非自动提交事务的SqlSession对象
4.SqlSession: 执行sql语句的对象
SqlSession接口 :定义了操作数据的方法 例如 selectOne() ,selectList() ,insert(),update(), delete(), commit(), rollback()
SqlSession接口的实现类DefaultSqlSession。
在mybatis增删改查的基础上,我们只需要删除daoImpl实现类就好了,其余的不变
使用mybatis动态代理的注意事项:

测试userManagerDao中的接口方法

其实传参的方式有很多种,我们掌握以下三种,已经完全够用,如果不够用可以上网的传参方式。
使用@Param进行传参:
1.1接口中的写法
1.2.dao.xml文件中的写法 @Param(“myId”) 和我们的参数是相对应的
1.3.使用动态代理的时候传参方式
使用java对象进行传参:
2.dao接口
2.2.dao.xml文件配置
2.3.调用dao接口方法
3:使用map集合传参
3.1集合中传map集合
3.2dao.xml中使用map的key值进行传参
3.3测试类的实现

mybatis返回值类型支持的别名机制对应表

resultType:的返回值可以是别名,也可以是返回值类型的全限定义名称(可以是任意类型)
自定义 resultType:的返回值类型
第一种方式:
1.在mybatis主配置文件中加上typeAliases标签
2.在dao.xml文件中使用即可
第二种方式:
1.在mybatis主配置文件中:
2.在dao.xml文件中使用即可
查询结果的返回值
1.返回map类型
1.1dao接口
1.2dao.xml配置文件
1.3测试类
2.返回对象
2.1 dao接口
2.2dao接口配置文件
2.3测试方法
使用Map映射关系解决数据库列名和实体类对象属性名不一致,
导致反射异常无法赋值的解决方案:一 (重点掌握)
1.1dao接口方法
1.2dao接口配置文件
1.3测试是否可行
数据库表:

实体类对象属性:

测试结果 : ok 可行

使用给列名起别名解决数据库列名和实体类对象属性名不一致,
导致反射异常无法赋值的解决方案:2 (重点掌握)
2.1dao接口方法
2.2 dao接口配置文件
2.3 测试方法
总结:两种都可以 :不过第二种要简单一些;
if , where, Foreach的使用
MyBatis工具类
1.1 dao接口
1.2 dao.xml配置文件
1.3 测试方法
1.1 dao接口
1.2 dao.xml配置文件
1.3 测试方法
1.mybatis.xml配置文件
2.配置文件

mapper文件映射的2中方式
1.pom.xml中导入依赖
2.在mybatis配置文件中配置插件environments标签之前
3.dao接口方法
4.dao.xml配置文件
5.测试方法
扩展资料
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.mushiming.com/mjsbk/1160.html