当前位置:   article > 正文

MyBatis框架笔记,全网最详细!!!(10)_mybaits框架笔记

mybaits框架笔记

文章目录

一、框架概述

1.软件开发常用结构

在这里插入图片描述

2.框架是什么

在这里插入图片描述

3.使用JDBC的缺陷

在这里插入图片描述

4.MyBatis框架概述

在这里插入图片描述

二、 Mybatis框架的快速入门

在这里插入图片描述

1.使用Mybatis的准备

在这里插入图片描述
在这里插入图片描述
我们主要使用帮助文档,核心jar包,我们之后都在Maven中导入了

2.传统dao的使用例子

在这里插入图片描述

1. 新建student表

在这里插入图片描述

2. 在maven的pom.xml中加入Mybatis的坐标、mysql驱动的坐标和build中的一个Maven插件

在这里插入图片描述
在这里插入图片描述
插件的作用介绍:
在这里插入图片描述

3. 创建实体类Student

在这里插入图片描述

4. 创建dao接口,定义操作数据库的方法

在这里插入图片描述

5. 创建SQL映射文件(可以有多个)

写SQL语句的文件,Mybatis会执行这些SQL,
这样的好处是Sql语句和原先的代码分开了,修改Sql语句不会影响到原先代码的执行

把SQL语句查询到的id,name,email,age,依次赋值给Student类中定义的变量
在这里插入图片描述
在这里插入图片描述

6. Mybatis的主配置文件(只有一个)

主要定义了数据库的配置信息,连接数据,确定SQL映射文件的位置
在这里插入图片描述
插入setting,这样在做查询,删除,更新,添加的时候能在控制台看见sql语句和参数了
在这里插入图片描述
显示如下:这是查询
在这里插入图片描述

7. 创建接口的实现类(用了工具类)

创建SqlSession去访问了数据库,接着传数据给controller层
在这里插入图片描述

8. 然后在controller层中调用即可

在这里插入图片描述
在这里插入图片描述

9. 如果我们要加入一个添加方法

在StudentDao中加上方法
在这里插入图片描述
在StudentDao.xml中加入
在这里插入图片描述
在impl下添加一个方法
在这里插入图片描述

3.封装一个工具类

原始代码
SQLSession创建,并访问数据库的代码
在这里插入图片描述
Mybatis类中的代码重复太多,我们需要封装一下
在这里插入图片描述
使用工具类后的代码
在这里插入图片描述

4.Mybatis类中主要类的介绍

在这里插入图片描述

三、 动态代理的使用例子(以后主要使用)

1.原理

在这里插入图片描述
我们以后主要就是写dao接口方法和对应的sql映射文件即可
Mybatis的动态代理:
动态代理的话就不用写dao接口的实现类了,通过getMapper()方法自动在内部创建实现类,并且在实现类中自动调用SqlSession的方法来执行sql语句
在这里插入图片描述

2.实现方法

在这里插入图片描述
前提是Pom.xml中已经配置好了,Mybatis的主配置文件也配置好了

第一步:只需要在接口中写上方法即可,不用写实现类,然后在StudentDao.xml中添加上方法
在这里插入图片描述
第二步:service层中,通过getMapper()获取StudentDao接口的对象即可

传统方法是在dao层的impl包下的实现类中进行数据库操作,再传递给controller层
动态代理方法是,在service层中的impl包下自动的创建实现类,调用dao层方法,获得数据,再传递给controller层
在这里插入图片描述
在这里插入图片描述

3.深入理解参数

在这里插入图片描述

1.parameterType介绍

在这里插入图片描述

2.传入一个参数

在这里插入图片描述
在这里插入图片描述

3.传入多个参数(使用@Param)

接口中
在这里插入图片描述
SQL映射文件中
在这里插入图片描述
主方法中
在这里插入图片描述

4.传入多个参数(使用对象)用的最多

因为一个项目中肯定有一个对象

Java对象
在这里插入图片描述
接口中
在这里插入图片描述
Sql映射文件中
在这里插入图片描述
主方法中
在这里插入图片描述

5.#和$的使用

在这里插入图片描述
能使用#就使用#

1.#:占位符介绍

在这里插入图片描述

2.#和$的对比

在这里插入图片描述

3.#和$的区别

在这里插入图片描述

4.MyBatis封装jdbc的原理

MyBatis帮你连接数据库,帮你执行sql语句,最后按你接口中定义的返回值把输出结果给你,你只需要写sql语句和处理返回的结果即可
在这里插入图片描述

四、 封装MyBatis输出结果

在这里插入图片描述

1.resultType

在这里插入图片描述
resultType和接口方法的返回值是保持一致的
建议使用返回值是对象的

1.返回值是简单类型的

在这里插入图片描述

2.返回值是对象的

在这里插入图片描述

3.返回值是Map的

缺点是只能返回一行数据
如果sql语句是where id>#{stuid},那么结果就会报错,因为查询结果不只一行

接口中
在这里插入图片描述
Sql映射文件中
在这里插入图片描述

4.resultType赋值的特点

Sql语句中的列名必须和Student中的属性名一样,才能把列名的值赋给对应的属性名
在这里插入图片描述
如果不一致,那么就无法赋值
比如:我们改变了id和name的属性名
在这里插入图片描述
而SQL语句中的名字没变
在这里插入图片描述
结果改变名字的就没有赋到值
在这里插入图片描述

2.定义自定义类型的别名

不建议使用别名,建议使用全限定名称

1.第一种方式,

在这里插入图片描述
在Mybatis主配置文件中
在这里插入图片描述
在sql映射文件中
在这里插入图片描述

2.第二种方式,(使用居多)

在Mybatis主配置文件中
在这里插入图片描述
Sql映射文件中,直接用对象的类名
在这里插入图片描述

3.resultMap

在这里插入图片描述
在这里插入图片描述

4.resultType列名和属性名不一致的问题

resultType必须指定sql的列名和对象的属性名,名称一致,如果不一致但是还想保证赋值成功,就得用resultMap来做结果映射

Student对象属性名
在这里插入图片描述
列名 id和name不一致
在这里插入图片描述
结果赋值失败
在这里插入图片描述

1.方法一:使用resultMap指定属性名

在SQL映射文件中,resultMap指定列名赋给哪个属性名
在这里插入图片描述
在这里插入图片描述

2.方法二:给列名起别名

resultType的默认原则是:同名的列赋值给同名的属性
那么我们就把不同名的列名改成和属性名一致就行
在这里插入图片描述
在这里插入图片描述

五、模糊查询

1.第一种 java代码中指定link的内容(推荐)

接口方法
在这里插入图片描述
SQL映射文件
在这里插入图片描述
主方法中
在这里插入图片描述
在这里插入图片描述

2.第二种,在mapper文件中拼接Link的内容

接口方法
在这里插入图片描述
SQL映射文件中
在这里插入图片描述
主方法中
在这里插入图片描述
在这里插入图片描述

六、动态SQL

在这里插入图片描述

1.动态SQL之< if >

对于该标签的执行,当 test 的值为 true 时,会将其包含的 SQL 片断拼接到其所在的 SQL 语句中。
语法:< if test=”条件”> sql 语句的部分< /if>
在这里插入图片描述

2.动态SQL之< where >

Where能解决if中存在的问题
用来包含多个< if>的,当多个if有一个成立的, < where>会自动增加一个where关键字,并去掉 if中多余的 and ,or等。
在这里插入图片描述
测试例子:
当第一个条件不成立,第二个条件成立时,where会自动添加上,并且会去掉if中多余的or,and
在这里插入图片描述

3.动态SQL之< foreach>主要用在in语句中

原始手动写法
select * from student where id in (1001,1002,1003)
在这里插入图片描述
< foreach> 循环java中的数组,list集合的。 主要用在sql的in语句中。会自动帮你进行字符串的拼接
在这里插入图片描述

1.第一种:集合中的成员是个简单的类型

接口方法中
在这里插入图片描述
Sql映射文件中
在这里插入图片描述
主方法中
在这里插入图片描述

2.第二种:集合中的成员是个对象

接口中
在这里插入图片描述
SQL映射中
在这里插入图片描述
主方法中
在这里插入图片描述

4.动态SQL之代码片段

在这里插入图片描述
定义Sql片段
在这里插入图片描述
使用Sql片段
在这里插入图片描述

七、主配置文件

在这里插入图片描述

1.主配置文件下的标签介绍

< transactionManager>
在这里插入图片描述
< dataSource>
在这里插入图片描述

2.数据库的属性配置文件

把数据库连接信息放到一个单独的文件中。 和mybatis主配置文件分开。
目的是便于修改,保存,处理多个数据库的信息。

这是在主配置文件中,原来我们把连接数据库的信息写在这,现在应该写在一个配置文件中
在这里插入图片描述

1.具体操作:

第一步:在resources包下创建一个配置属性文件,在里面写上数据库的连接信息,格式是Key-value
都是自定义的
在这里插入图片描述
第二步:在主配置文件中使用指定配置文件的位置
在这里插入图片描述
通过${}引入配置属性文件中的key,这样以后只需要改配置属性文件的内容即可,便于维护
在这里插入图片描述

3.主配置文件中标签

1.第一种方式:指定多个mapper文件

在这里插入图片描述

2.第二种方式:使用包名(推荐)

在这里插入图片描述

八、PageHelper组件实现分页查询

在这里插入图片描述
原始的Sql分页查询:select * from student limit 1,3 表示从第一条数据开始显示,一共显示3条数据,这表示第一页,第二页就得是select * from student limit 4,3 从第四条数据开始显示,一共显示3条
原始方法每次写下一页的时候都得计算前面的数据很麻烦

我们用PageHelper这个组件只需要写第几页显示几条数据即可,内部给你算好了
这个组件不是Mybatis自带的,而是国内的一个人写的

1.第一步:加入Maven坐标

pom.xml中加入PageHelper依赖
在这里插入图片描述

2.第二步:在主配置文件中加入 plugin 配置

在< environments>之前加入
在这里插入图片描述

3.第三步:添加方法执行方法

接口中
在这里插入图片描述
SQL映射文件中
查询所有的学生按id排序
在这里插入图片描述
主方法中使用PageHelper
例子是第1页显示3行数据,要查询第二页的只需要改一下pageNum为2即可
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/822769
推荐阅读
相关标签
  

闽ICP备14008679号