目录
一,准备工作
1.1 创建工程
1.2 准备数据
1.3 数据库连接字符串
1.4 创建持久层接口UserInfoMapper
1.5 单元测试
二,注解的基础操作
2.1 打印日志
2.2 参数传递
2.3 增(Insert)
2.4 删(Delete)
2.5 改(Update)
编辑2.6 查(Select)
三,XML的基础操作
3.1 配置数据库
3.2 指明xml路径
3.3 写xml的实现
3.4 增(Insert)
3.5 删(Delete)
3.6 改(Update)
3.7 查(Select)
一,准备工作
1.1 创建工程
创建springboot工程,导入mybatis的起步依赖,mysql的驱动包。
然后在pom。xml文件中导入Mybits依赖和MySQL驱动依赖
Mybits依赖包:
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.3.1</version>
</dependency>MySQL驱动包:
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<scope>runtime</scope>
</dependency>
1.2 准备数据
导入MySQL的User用户表
-- 创建数据库
DROP DATABASE IF EXISTS mybatis_test;
CREATE DATABASE mybatis_test DEFAULT CHARACTER SET utf8mb4;
-- 使⽤数据数据
USE mybatis_test;
-- 创建表[⽤⼾表]
DROP TABLE IF EXISTS userinfo;
CREATE TABLE `userinfo` (
`id` INT ( 11 ) NOT NULL AUTO_INCREMENT,
`username` VARCHAR ( 127 ) NOT NULL,
`password` VARCHAR ( 127 ) NOT NULL,
`age` TINYINT ( 4 ) NOT NULL,
`gender` TINYINT ( 4 ) DEFAULT '0' COMMENT '1-男 2-⼥ 0-默认',
`phone` VARCHAR ( 15 ) DEFAULT NULL,
`delete_flag` TINYINT ( 4 ) DEFAULT 0 COMMENT '0-正常, 1-删除',
`create_time` DATETIME DEFAULT now(),
`update_time` DATETIME DEFAULT now(),
PRIMARY KEY ( `id` )
) ENGINE = INNODB DEFAULT CHARSET = utf8mb4;
-- 添加⽤⼾信息
INSERT INTO mybatis_test.userinfo ( username, `password`, age, gender, phone )
VALUES ( 'admin', 'admin', 18, 1, '18612340001' );
INSERT INTO mybatis_test.userinfo ( username, `password`, age, gender, phone )
VALUES ( 'zhangsan', 'zhangsan', 18, 1, '18612340002' );
INSERT INTO mybatis_test.userinfo ( username, `password`, age, gender, phone )
VALUES ( 'lisi', 'lisi', 18, 1, '18612340003' );
INSERT INTO mybatis_test.userinfo ( username, `password`, age, gender, phone )
VALUES ( 'wangwu', 'wangwu', 18, 1, '18612340004' );
创建userInfo实体类:
1.3 数据库连接字符串
Mybatis要连接数据库,需要数据库相关参数配置
①Mysql驱动类
②登录名
③密码
④数据库连接字符串
application.yml文件和application的配置内容如下:
# yml数据库连接配置
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/mybatis_test?characterEncoding=utf8&useSSL=
username: root
password: 123456#密码修改为自己数据库的密码!!!
driver-class-name: com.mysql.cj.jdbc.Driverperties
#properties
#驱动类名称
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#数据库连接的url
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/mybatis_test?characterEncoding
#连接数据库的⽤⼾名
spring.datasource.username=root
#连接数据库的密码
spring.datasource.password=123456
1.4 创建持久层接口UserInfoMapper
@Mapper注解:表示Mybatis中的Mapper接口,程序运行时,框架会自动生成接口的实现类对象,并交给Spring的IOC容器管理。
@Select注解:代表的就是selsct查询,也就是注解对应方法的具体实现内容
1.5 单元测试
在创建出来的SPringleBoot工程中,test目录下已经创建好了测试类,可以直接使用这个测试类来进行测试。
idea自动生成测试类,选择要测试的方法,书写测试代码
二,注解的基础操作
2.1 打印日志
yml文件中配置
结果为:
2.2 参数传递
正常的查找语句是这样的
这样的话就只能查找id=1的数据,所以id需要写成动态的数值
这样就可以了。
也可以通过@Param,设置参数的别名,如果使用@Param设置别名,#{}里面的属性必须和@Param设置的一样。
2.3 增(Insert)
SQL语句
把SQL中的常量替换为动态的参数
使用Mapper接口:
返回主键:insert默认返回的是受影响的行数,数据插入后需要后续的一系列操作,则需要获取到新插入数据的id,如果想拿到自增id需要在Mapper接口方法上添加一个Option的注解。
(useGeneratedKeys:它将Mybatis使用的JDBC的getGeneraterKeys方法来取出由数据库内部生成的主键【比如像Mysql这种关系型数据库管理系统的自动递增字段】默认值为false)
(keyPropeerty:它能够唯一识别对象的属性,MyBatis会使用getGeneraterKets的返回值或者insert语句的selectKey子元素设置它的值,默认值:未设置)
测试数据:
2.4 删(Delete)
SQL语句
Mapper接口:
2.5 改(Update)
SQL语句:
Mapper接口:
2.6 查(Select)
使用XML的方式进行查询,存在数据封装的问题
查询结果为:
Mybatis会自动的根据数据库字段名和Java对象的属性名,进行映射,如果名称一样,就进行赋值。
有如下解决方式:
①:对字段进行重命名,结果映射方法页
重命名前:
重命名后:
②: 使用Results注解
结果的复用:
③:驼峰命名(推荐)
三,XML的基础操作
MyBatisXML的实现方式需要以下几步
3.1 配置数据库
3.2 指明xml路径
3.3 写xml的实现
selectAll()与下面id名称一致,返回的是对象或者list,此处定义的都是返回的数据的类型
常见一些错误:①xml和接口定义的方法名称不一致 ②mapper的路径配置和xml的路径不一样
3.4 增(Insert)
方法的声明:
方法的实现:
拿返回值(获取自增ID):
3.5 删(Delete)
方法的声明:
生成测试用例
3.6 改(Update)
方法的声明:
方法的实现:
3.7 查(Select)
结果映射也是三种方式:
①sql字段别名(同上)
②自动转驼峰(同上)
③定义Result
板书: