文章目录

一、框架概述

1.软件开发常用结构

MyBatis框架知识点(10)

2.框架是什么

MyBatis框架知识点(10)

3.使用JDBC的缺陷

MyBatis框架知识点(10)

4.MyBatis框架概述

MyBatis框架知识点(10)

二、 Mybatis框架的快速入门

MyBatis框架知识点(10)

1.传统dao的使用例子

MyBatis框架知识点(10)

1. 新建student表

MyBatis框架知识点(10)

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

MyBatis框架知识点(10)
MyBatis框架知识点(10)
插件的作用介绍:
MyBatis框架知识点(10)

3. 创建实体类Student

MyBatis框架知识点(10)

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

MyBatis框架知识点(10)

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

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

把SQL语句查询到的id,name,email,age,依次赋值给Student类中定义的变量
MyBatis框架知识点(10)
MyBatis框架知识点(10)

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

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

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

创建SqlSession去访问了数据库,接着在主方法中调用即可
MyBatis框架知识点(10)

8. 然后在主方法中调用即可

MyBatis框架知识点(10)
MyBatis框架知识点(10)

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

在StudentDao中加上方法
MyBatis框架知识点(10)
在StudentDao.xml中加入
MyBatis框架知识点(10)
在impl下添加一个方法
MyBatis框架知识点(10)

2.封装一个工具类

原始代码
SQLSession创建,并访问数据库的代码
MyBatis框架知识点(10)
Mybatis类中的代码重复太多,我们需要封装一下
MyBatis框架知识点(10)
使用工具类后的代码
MyBatis框架知识点(10)

3.Mybatis类中主要类的介绍

MyBatis框架知识点(10)

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

1.原理

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

2.实现方法

MyBatis框架知识点(10)
前提是Pom.xml中已经配置好了,Mybatis的主配置文件也配置好了

第一步:只需要在接口中写上方法即可,不用写实现类,然后在StudentDao.xml中添加上方法
MyBatis框架知识点(10)
第二步:主方法中,通过getMapper()获取StudentDao接口的对象即可
传统方法是在dao接口实现类中进行数据库操作,再用主方法进行调用,传参并输出
动态代理方法是,直接在主方法中进行自动的实现类创建和传参并输出
MyBatis框架知识点(10)
MyBatis框架知识点(10)

3.深入理解参数

MyBatis框架知识点(10)

1.parameterType介绍

MyBatis框架知识点(10)

2.传入一个参数

MyBatis框架知识点(10)
MyBatis框架知识点(10)

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

接口中
MyBatis框架知识点(10)
SQL映射文件中
MyBatis框架知识点(10)
主方法中
MyBatis框架知识点(10)

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

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

Java对象
MyBatis框架知识点(10)
接口中
MyBatis框架知识点(10)
Sql映射文件中
MyBatis框架知识点(10)
主方法中
MyBatis框架知识点(10)

5.#和$的使用

MyBatis框架知识点(10)
能使用#就使用#

1.#:占位符介绍

MyBatis框架知识点(10)

2.#和$的对比

MyBatis框架知识点(10)

3.#和$的区别

MyBatis框架知识点(10)

4.MyBatis封装jdbc的原理

MyBatis帮你连接数据库,帮你执行sql语句,最后按你接口中定义的返回值把输出结果给你,你只需要写sql语句和处理返回的结果即可
MyBatis框架知识点(10)

四、 封装MyBatis输出结果

MyBatis框架知识点(10)

1.resultType

MyBatis框架知识点(10)
resultType和接口方法的返回值是保持一致的
建议使用返回值是对象的

1.返回值是简单类型的

MyBatis框架知识点(10)

2.返回值是对象的

MyBatis框架知识点(10)

3.返回值是Map的

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

接口中
MyBatis框架知识点(10)
Sql映射文件中
MyBatis框架知识点(10)

4.resultType赋值的特点

Sql语句中的列名必须和Student中的属性名一样,才能把列名的值赋给对应的属性名
MyBatis框架知识点(10)
如果不一致,那么就无法赋值
比如:我们改变了id和name的属性名
MyBatis框架知识点(10)
而SQL语句中的名字没变
MyBatis框架知识点(10)
结果改变名字的就没有赋到值
MyBatis框架知识点(10)

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

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

1.第一种方式,

MyBatis框架知识点(10)
在Mybatis主配置文件中
MyBatis框架知识点(10)
在sql映射文件中
MyBatis框架知识点(10)

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

在Mybatis主配置文件中
MyBatis框架知识点(10)
Sql映射文件中,直接用对象的类名
MyBatis框架知识点(10)

3.resultMap

MyBatis框架知识点(10)
MyBatis框架知识点(10)

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

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

Student对象属性名
MyBatis框架知识点(10)
列名 id和name不一致
MyBatis框架知识点(10)
结果赋值失败
MyBatis框架知识点(10)

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

在SQL映射文件中,resultMap指定列名赋给哪个属性名
MyBatis框架知识点(10)
MyBatis框架知识点(10)

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

resultType的默认原则是:同名的列赋值给同名的属性
那么我们就把不同名的列名改成和属性名一致就行
MyBatis框架知识点(10)
MyBatis框架知识点(10)

五、模糊查询

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

接口方法
MyBatis框架知识点(10)
SQL映射文件
MyBatis框架知识点(10)
主方法中
MyBatis框架知识点(10)
MyBatis框架知识点(10)

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

接口方法
MyBatis框架知识点(10)
SQL映射文件中
MyBatis框架知识点(10)
主方法中
MyBatis框架知识点(10)
MyBatis框架知识点(10)

六、动态SQL

MyBatis框架知识点(10)

1.动态SQL之< if >

对于该标签的执行,当 test 的值为 true 时,会将其包含的 SQL 片断拼接到其所在的 SQL 语句中。
语法:< if test=”条件”> sql 语句的部分< /if>
MyBatis框架知识点(10)

2.动态SQL之< where >

Where能解决if中存在的问题
用来包含多个< if>的,当多个if有一个成立的, < where>会自动增加一个where关键字,并去掉 if中多余的 and ,or等。
MyBatis框架知识点(10)
测试例子:
当第一个条件不成立,第二个条件成立时,where会自动添加上,并且会去掉if中多余的or,and
MyBatis框架知识点(10)

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

原始手动写法
select * from student where id in (1001,1002,1003)
MyBatis框架知识点(10)
< foreach> 循环java中的数组,list集合的。 主要用在sql的in语句中。会自动帮你进行字符串的拼接
MyBatis框架知识点(10)

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

接口方法中
MyBatis框架知识点(10)
Sql映射文件中
MyBatis框架知识点(10)
主方法中
MyBatis框架知识点(10)

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

接口中
MyBatis框架知识点(10)
SQL映射中
MyBatis框架知识点(10)
主方法中
MyBatis框架知识点(10)

4.动态SQL之代码片段

MyBatis框架知识点(10)
定义Sql片段
MyBatis框架知识点(10)
使用Sql片段
MyBatis框架知识点(10)

七、主配置文件

MyBatis框架知识点(10)

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

< transactionManager>
MyBatis框架知识点(10)
< dataSource>
MyBatis框架知识点(10)

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

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

这是在主配置文件中,原来我们把连接数据库的信息写在这,现在应该写在一个配置文件中
MyBatis框架知识点(10)

1.具体操作:

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

3.主配置文件中标签

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

MyBatis框架知识点(10)

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

MyBatis框架知识点(10)

八、PageHelper组件实现分页查询

MyBatis框架知识点(10)
原始的Sql分页查询:select * from student limit 1,3 表示从第一条数据开始显示,一共显示3条数据,这表示第一页,第二页就得是select * from student limit 4,3 从第四条数据开始显示,一共显示3条
原始方法每次写下一页的时候都得计算前面的数据很麻烦

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

1.第一步:加入Maven坐标

pom.xml中加入PageHelper依赖
MyBatis框架知识点(10)

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

在< environments>之前加入
MyBatis框架知识点(10)

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

接口中
MyBatis框架知识点(10)
SQL映射文件中
查询所有的学生按id排序
MyBatis框架知识点(10)
主方法中使用PageHelper
例子是第1页显示3行数据,要查询第二页的只需要改一下pageNum为2即可
MyBatis框架知识点(10)

相关文章: