Mybatis-plus与SB框架整合入门
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.9</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.china</groupId>
<artifactId>HandleMybatis</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>HandleMybatis</name>
<description>HandleMybatis</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-boot-starter -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.2</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
数据库脚本文件
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '姓名',
`age` int(11) NULL DEFAULT NULL COMMENT '年龄',
`email` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '邮箱',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 10 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES (1, 'Jone', 18, 'test1@baomidou.com');
INSERT INTO `user` VALUES (2, 'Jack', 20, 'test2@baomidou.com');
INSERT INTO `user` VALUES (3, 'Tom', 28, 'test3@baomidou.com');
INSERT INTO `user` VALUES (4, 'Sandy', 21, 'test4@baomidou.com');
INSERT INTO `user` VALUES (5, 'Billie', 24, 'test5@baomidou.com');
INSERT INTO `user` VALUES (8, 'Tom', 28, 'test3@baomidou.com');
SET FOREIGN_KEY_CHECKS = 1;
User类文件
package com.china.handlemybatis.dao;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
//实体类
public class User {
//定义属性: 属性名和表中的列名一样
@TableId(
// value 主键字段的名称 如果是id,可以不用写
value = "id",
// type 指定主键的类型 主键的值如何生成 IdType.AUTO表示自动增长
type = IdType.AUTO
)
private Long id;
private String name;
private Integer age;
private String email;
public User() {
}
public User(Long id, String name, Integer age, String email) {
this.id = id;
this.name = name;
this.age = age;
this.email = email;
}
public User(String name, Integer age, String email) {
this.name = name;
this.age = age;
this.email = email;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge(int i) {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getEmail(String s) {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Integer getAge() {
return age;
}
public String getEmail() {
return email;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
", email='" + email + '\'' +
'}';
}
}
UserMapper接口文件
package com.china.handlemybatis.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.china.handlemybatis.dao.User;
import org.apache.ibatis.annotations.Mapper;
/*
* 自定义Mapper 就是Dao接口*
* 1. 要实现BaseMapper
* 2.指定实体类
*
* BaseMapper是mybatis-plus框架中的对象,定义17个操作方法(CRUD)
* */
@Mapper
public interface UserMapper extends BaseMapper<User> {
}
application.yml配置文件
spring:
datasource:
url: jdbc:mysql://192.168.0.119:3306/handlemybatis?useUnicode=true&zeroDateTimeBehavior=convertToNull&autoReconnect=true&characterEncoding=utf-8
username: root
password: 1
driver-class-name: com.mysql.cj.jdbc.Driver
# 日志配置
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
单元测试HandleMybatisApplicationTests
package com.china.handlemybatis;
import com.china.handlemybatis.dao.User;
import com.china.handlemybatis.mapper.UserMapper;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/*
* 定义测试方法
* */
/*
@MapperScan(value = "com/china/handlemybatis/mapper")
* @SuppressWarnings("all")*
* */
@SpringBootTest
class HandleMybatisApplicationTests {
@Autowired
private UserMapper userDao;
@Test
void contextLoads() {
}
@Test
void insertData() {
// 创建User对象
User user = new User();
user.setId(8L);
user.setName("wanson");
user.setAge(18);
user.setEmail("wanson@163.com");
// 调用UserMapper的方法,也就是父接口BaseMapper中的提供的方法
int rows = userDao.insert(user);
System.out.println("insert的结果:\t" + rows);
}
// 添加数据后,获取主键值
@Test
void testInsertGetId() {
User user = new User();
user.setName("中国");
user.setAge(100);
user.setEmail("china@163.com");
int row = userDao.insert(user);
System.out.println("insert user rows:\t" + row);
// 获取主键id,刚添加数据库中的数据的id
Long id = user.getId();
System.out.println("主键id:\t" + id);
}
@Test
void testUpdateUser() {
User user = new User();
user.setName("修改的数据");
user.setAge(36);
user.setEmail("edit@163.com");
user.setId(8L);
// 执行更新,根据主键值更新
int row = userDao.updateById(user);
System.out.println("update rows:\t" + row);
}
/*
* 控制更新的属性
* */
@Test
void testUpdateControlUser() {
User user = new User();
user.setId(2L);
user.setName("纸老虎");
// 更新数据
int i = userDao.updateById(user);
System.out.println("i:\t" + i);
}
/*
*
* 数据库删除
* */
// 根据id 删除一条数据
@Test
void testDeleteById() {
int rows = userDao.deleteById(1);
System.out.println("update user rows:\t" + rows);
}
// 根据条件 删除一条数据 条件封装在Map对象中
@Test
void testDeleteByMap() {
// 创建Map对象,保存条件值
Map<String, Object> map = new HashMap<>();
// put("表的字段名",条件值),可以封装多个条件
map.put("name", "Tom");
map.put("age", 28);
// 删除调用的方法
int rows = userDao.deleteByMap(map);
System.out.println("deleteByMap rows:\t" + rows);
}
// 使用多个主键值,删除数据
@Test
void testDeleteByBatchIds() {
// 方法1
/*List<Integer> ids=new ArrayList<>();
ids.add(4);
ids.add(5);
ids.add(8);*/
// 方法2 使用lambda创建List集合
List<Integer> ids = Stream.of(1, 2, 3, 4, 5).collect(Collectors.toList());
// 删除操作
int i = userDao.deleteBatchIds(ids);
System.out.println("testDeleteByBatchIds:\t" + i);
}
/*
查询数据
*/
// 根据主键查询
@Test
void testSelectById() {
User user = userDao.selectById(1);
System.out.println("SelectById:\t" + user);
// 在使用对象之前,需要判断对象是否为null
if (user != null) {
// 业务方法的调用
}
}
//批处理 根据多个主键值查询 获取到List
@Test
void testSelectByBatchId() {
// 方法1集合
/*List<Integer> ids = new ArrayList<>();
ids.add(2);
ids.add(3);
ids.add(4);*/
// 方法2lambda查询数据
List<Integer> ids = Stream.of(2, 3, 4, 5).collect(Collectors.toList());
// 查询数据
List<User> users = userDao.selectBatchIds(ids);
System.out.println("size:\t" + users.size());
// 遍历方法1
for (User u : users) {
System.out.println("查询的用户1:\t" + u);
}
// 遍历方法2
users.forEach(u -> System.out.println("查询的用户2:\t" + u));
}
// 使用Map做多条件查询
@Test
void testSelectByMap() {
// 创建Map,封装查询条件
Map<String,Object>map=new HashMap<>();
// key是字段名 value是字段值 多个keny 是and 连接
map.put("name","Tom");
map.put("age",28);
// 根据Map查询
List<User> users=userDao.selectByMap(map);
users.forEach(user1 -> {
System.out.println("selectByMap:\t"+user1);
});
}
/*
* 获取数据库所有数据
* */
@Test
void getData() {
System.out.println("----- selectAll method test ------");
List<User> userList = userDao.selectList(null);
userList.forEach(System.out::println);
}
}
posted on 2023-03-24 17:10 Indian_Mysore 阅读(73) 评论(2) 收藏 举报