昆仑山:眼中无形心中有穴之穴人合一

夫君子之行,静以修身,俭以养德;非澹泊无以明志,非宁静无以致远。夫学须静也,才须学也;非学无以广才,非志无以成学。怠慢则不能励精,险躁则不能冶性。年与时驰,意与岁去,遂成枯落,多不接世。悲守穷庐,将复何及!

 

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)    收藏  举报

导航