目录
1.SpringBoot简化Mybatis
1.1 项目整合
1.1.1 创建项目
1.1.2 导入jar包
1.1.3 删除多余的文件
1.1.4 关于主启动类异常的说明
1.1.5 修改YML配置文件和pojo类
1.1.6 将Mapper接口交给容器管理
1.1.7 编辑测试类
2. Mybatis 基本用法
2.1 根据ID查询数据
2.1.1 编辑测试方法
2.1.2 编辑Mapper接口
2.1.3 编辑UserMapper.xml映射文件
2.2 Sql语句打印
2.3 根据name和age查询
2.3.1 编辑测试类
2.3.2 编辑UserMapper
2.3.3 编辑UserMapper.xml映射文件
18 age <100 的用户">2.4 查询age>18 age <100 的用户
2.4.1 Sql语句
2.4.2 编辑测试类
2.4.3 编辑Mapper接口
2.4.4 编辑xml 映射文件
2.4.5 转义标签
2.5 利用注解@Param实现数据封装
2.5.1 编辑测试类
2.5.2 编辑接口文件
2.5.3 编辑xml映射文件
2.6 模糊查询
2.6.1 业务需求
2.6.2 编辑测试方法
2.6.3 编辑接口方法
2.6.4 编辑xml映射文件
2.7 Sql标签用法
2.7.1 业务需求
2.7.2 Sql标签用法
2.8 Mybatis中的集合参数写法
2.8.1 业务需求
2.8.2 编辑测试类
2.8.3 编辑Mapper接口
2.8.4 编辑Mapper 映射文件
2.9 用户新增
2.9.1 编辑测试方法
2.9.2 编辑接口方法
2.9.3 编辑xml映射文件
1.SpringBoot简化Mybatis
1.1 项目整合
1.1.1 创建项目
1.1 项目整合
1.1.1 创建项目
1.1.2 导入jar包
说明: 在pom.xml文件中 添加jar包文件
org.mybatis.spring.boot
mybatis-spring-boot-starter
2.2.0
mysql
mysql-connector-java
org.projectlombok
lombok
1.1.3 删除多余的文件
说明: 将多余的文件删除,保留图中的文件即可
2. 修改配置文件名称
1.1.4 关于主启动类异常的说明
提示: “开箱即用” 原则
报错信息:
报错原理说明:
由于Mybatis依赖了JDBC的jar包. 但是该jar包文件是启动项. 当主启动类运行时,开始加载主启动项. 但是JDBC需要链接数据库.所以必须有相关的配置信息.但是此时YML文件中没有数据源的配置.所以报错.
1.1.5 修改YML配置文件和pojo类
YML配置文件
#1.配置端口号 注意缩进!!!!!
server:
port: 8090
#2.配置数据源
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/jt?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true
username: root
password: root
mybatis:
type-aliases-package: com.jt.pojo
#将所有的映射文件全部加载
mapper-locations: classpath:/mappers
@Test
public void testFindByNA(){
String name = "孙尚香";
int age = 18;
User user = new User();
user.setName(name).setAge(age);
List userList = userMapper.findUserByNA(user);
System.out.println(userList);
}
2.3.2 编辑UserMapper
@Mapper //将接口交给Spring容器管理 Map
public interface UserMapper {
//指定接口方法 查询demo_user的全部数据
List findAll();
//根据ID查询数据库
User findUserById(int id);
List findUserByNA(User user);
}
2.3.3 编辑UserMapper.xml映射文件
select * from demo_user where
name = #{name} and age = #{age}
2.4 查询age>18 age <100 的用户
2.4.1 Sql语句
select * from demo_user where age>18 and age <100
2.4.2 编辑测试类
@Test
public void testFindByAge(){
int minAge = 18;
int maxAge = 100;
Map map = new HashMap<>();
map.put("minAge",minAge);
map.put("maxAge",maxAge);
List userList = userMapper.findUserByAge(map);
System.out.println(userList);
}
2.4.3 编辑Mapper接口
@Mapper //将接口交给Spring容器管理 Map
public interface UserMapper {
//指定接口方法 查询demo_user的全部数据
List findAll();
//根据ID查询数据库
User findUserById(int id);
List findUserByNA(User user);
//习惯: 参数只有一个
List findUserByAge(Map map);
}
2.4.4 编辑xml 映射文件
select * from demo_user where age > #{minAge}
and age < #{maxAge}
2.4.5 转义标签
select * from demo_user where
name = #{name} and age = #{age}
2.4 查询age>18 age <100 的用户
2.4.1 Sql语句
select * from demo_user where age>18 and age <100
2.4.2 编辑测试类
@Test
public void testFindByAge(){
int minAge = 18;
int maxAge = 100;
Map map = new HashMap<>();
map.put("minAge",minAge);
map.put("maxAge",maxAge);
List userList = userMapper.findUserByAge(map);
System.out.println(userList);
}
2.4.3 编辑Mapper接口
@Mapper //将接口交给Spring容器管理 Map
public interface UserMapper {
//指定接口方法 查询demo_user的全部数据
List findAll();
//根据ID查询数据库
User findUserById(int id);
List findUserByNA(User user);
//习惯: 参数只有一个
List findUserByAge(Map map);
}
2.4.4 编辑xml 映射文件
select * from demo_user where age > #{minAge}
and age < #{maxAge}
2.4.5 转义标签
select * from demo_user where age>18 and age <100
2.4.2 编辑测试类
@Test
public void testFindByAge(){
int minAge = 18;
int maxAge = 100;
Map map = new HashMap<>();
map.put("minAge",minAge);
map.put("maxAge",maxAge);
List userList = userMapper.findUserByAge(map);
System.out.println(userList);
}
2.4.3 编辑Mapper接口
@Mapper //将接口交给Spring容器管理 Map
public interface UserMapper {
//指定接口方法 查询demo_user的全部数据
List findAll();
//根据ID查询数据库
User findUserById(int id);
List findUserByNA(User user);
//习惯: 参数只有一个
List findUserByAge(Map map);
}
2.4.4 编辑xml 映射文件
select * from demo_user where age > #{minAge}
and age < #{maxAge}
2.4.5 转义标签
@Mapper //将接口交给Spring容器管理 Mappublic interface UserMapper { //指定接口方法 查询demo_user的全部数据 List findAll(); //根据ID查询数据库 User findUserById(int id); List findUserByNA(User user); //习惯: 参数只有一个 List findUserByAge(Map map); }
2.4.4 编辑xml 映射文件
select * from demo_user where age > #{minAge}
and age < #{maxAge}
2.4.5 转义标签
2.5 利用注解@Param实现数据封装
2.5.1 编辑测试类
@Test
public void testFindByAge2(){
int minAge = 18;
int maxAge = 100;
List userList = userMapper.findUserByAge2(minAge,maxAge);
System.out.println(userList);
}
2.5.2 编辑接口文件
//原则:Mybatis只支持单值传参 将多值封装为单值
//注解:@Param("key") int minAge(值)
// 作用:将数据封装为Map
List findUserByAge2(@Param("minAge") int minAge, @Param("maxAge") int maxAge);
2.5.3 编辑xml映射文件
@Test
public void testFindByAge2(){
int minAge = 18;
int maxAge = 100;
List userList = userMapper.findUserByAge2(minAge,maxAge);
System.out.println(userList);
}
2.5.2 编辑接口文件
//原则:Mybatis只支持单值传参 将多值封装为单值
//注解:@Param("key") int minAge(值)
// 作用:将数据封装为Map
List findUserByAge2(@Param("minAge") int minAge, @Param("maxAge") int maxAge);
2.5.3 编辑xml映射文件
2.6 模糊查询
2.6.1 业务需求
查询name字段中包含"君"的用户.
Sql语句:
SELECT * FROM demo_user WHERe NAME LIKE "%君%"
2.6.2 编辑测试方法
@Test
public void testFindUserByLike(){
String name = "%" + "君" + "%";
List userList = userMapper.findUserByLike(name);
System.out.println(userList);
}
2.6.3 编辑接口方法
List findUserByLike(String name);
2.6.4 编辑xml映射文件
SELECT * FROM demo_user WHERe NAME LIKE #{name}
方式2: xml配置文件动态拼接%
ListfindUserByLike(String name);
2.6.4 编辑xml映射文件
SELECT * FROM demo_user WHERe NAME LIKE #{name}
方式2: xml配置文件动态拼接%
2.7 Sql标签用法
2.7.1 业务需求
说明: Sql语句中经常出现重复的数据.如果每次重复的内容都自己手写.则开发的效率低.
优化: 将公共的Sql进行抽取
优势: Sql标签可以节省代码
缺点: 可读性变差了, 如果是关联操作 则根据情况而定.
2.7.2 Sql标签用法
2.8 Mybatis中的集合参数写法
2.8.1 业务需求
查询id=1,2,3,5,7的数据
select * from demo_user where id in (1,2,3,5,7........)
2.8.2 编辑测试类
//前端: URL?id=1,2,3,4,5 获取之后一般采用数组接收
@Test
public void testFindListByIn(){
int[] array = {1,2,3,5,7};
List userList = userMapper.findListByIn(array);
System.out.println(userList);
}
2.8.3 编辑Mapper接口
List findListByIn(int[] array);
2.8.4 编辑Mapper 映射文件
select * from demo_user where id in (
#{id}
)
2.9 用户新增
2.9.1 编辑测试方法
@Test
public void testInsertUser(){
User user = new User();
user.setName("张三").setAge(18).setSex("男");
userMapper.saveUser(user);
System.out.println("新增成功!!!!");
}
2.9.2 编辑接口方法
void saveUser(User user);
2.9.3 编辑xml映射文件
insert into demo_user(id,name,age,sex)
value (null, #{name},#{age},#{sex})
ListfindListByIn(int[] array);
2.8.4 编辑Mapper 映射文件
select * from demo_user where id in (
#{id}
)
2.9 用户新增
2.9.1 编辑测试方法
@Test
public void testInsertUser(){
User user = new User();
user.setName("张三").setAge(18).setSex("男");
userMapper.saveUser(user);
System.out.println("新增成功!!!!");
}
2.9.2 编辑接口方法
void saveUser(User user);
2.9.3 编辑xml映射文件
insert into demo_user(id,name,age,sex)
value (null, #{name},#{age},#{sex})
2.9.1 编辑测试方法
@Test
public void testInsertUser(){
User user = new User();
user.setName("张三").setAge(18).setSex("男");
userMapper.saveUser(user);
System.out.println("新增成功!!!!");
}
2.9.2 编辑接口方法
void saveUser(User user);
2.9.3 编辑xml映射文件
insert into demo_user(id,name,age,sex)
value (null, #{name},#{age},#{sex})
void saveUser(User user);
2.9.3 编辑xml映射文件
insert into demo_user(id,name,age,sex)
value (null, #{name},#{age},#{sex})



