• MyBatis-plus:简介、入门、插入测试(狂)



    目录:

    (1)mybatis-plus简介

    (2)快速入门 

    (3)配置日志 

    (4)插入测试

    (5)不同主键的策略


    (1)mybatis-plus简介

    开元项目tk-mapper用的比较多,继承springboot的话JPA用的比较多

    使用了MyBatis-plus之后,非常方便,提高了效率,不用在通过配置文件写sql语句了。简化了CRUD,提高了效率。

     f98a9754e7204e89834a0eced31f483b.png

     17bd7c3e52334938b0f495bf87a47c25.png

     06ba3f100b1f40f4b69223b120ab8879.png

     0089bebbc95048aca3952b558c38dd80.png

     47e4b057a30d4713ac79826327678f28.png

    595b8d3156394062a72d758d5945255e.png daa2467342a640abb112b8b132dc38d0.png

    (2)快速入门 

     b204b1be9a27409caee327586f9a3b59.png

     9be957bb19d24f17895cad5ab4e4dbc1.png

     a690ba95d89e4859907550b445d5181c.png

     835fd8d6fb564f8abc3e2270e900ca7d.png

     863e24aefbcc47a581444c01e8177ddb.png

     e9f6a58e2c4a451b8dbfa6f9a1f99899.png

     f3bc2363b88642a589a5ae3c42053439.pngf356bd4a098940d7a59531cc8f4bc525.png

    快速入门:

    创建springboot项目:

    ac6b2295dbcf4643b5d6ba876bfa22ee.png

     b0254f62fd7c4faa94c1b1206b35e517.png

    这几项可以删去,删除多余的文件 

    360fe839697a4e8a9fd6f21384973f84.png

    点击+号连接上创建的mybatis-plus数据库 

     03d1daf60cfd4b02a45a97487765f12b.png

     06f38a8449bd49eebd3db5cf7beda83c.png

    fe0cab92d1f5454faa06d7b2af53e30d.png

     pom.xml:加入依赖:

    1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    2. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    3. <modelVersion>4.0.0modelVersion>
    4. <parent>
    5. <groupId>org.springframework.bootgroupId>
    6. <artifactId>spring-boot-starter-parentartifactId>
    7. <version>2.7.2version>
    8. <relativePath/>
    9. parent>
    10. <groupId>com.kuanggroupId>
    11. <artifactId>mybatis_plusartifactId>
    12. <version>0.0.1-SNAPSHOTversion>
    13. <name>mybatis_plusname>
    14. <description>Demo project for Spring Bootdescription>
    15. <properties>
    16. <java.version>1.8java.version>
    17. properties>
    18. <dependencies>
    19. <dependency>
    20. <groupId>mysqlgroupId>
    21. <artifactId>mysql-connector-javaartifactId>
    22. dependency>
    23. <dependency>
    24. <groupId>org.projectlombokgroupId>
    25. <artifactId>lombokartifactId>
    26. dependency>
    27. <dependency>
    28. <groupId>com.baomidougroupId>
    29. <artifactId>mybatis-plus-boot-starterartifactId>
    30. <version>3.0.5version>
    31. dependency>
    32. <dependency>
    33. <groupId>org.springframework.bootgroupId>
    34. <artifactId>spring-boot-starter-webartifactId>
    35. dependency>
    36. <dependency>
    37. <groupId>org.springframework.bootgroupId>
    38. <artifactId>spring-boot-starter-testartifactId>
    39. <scope>testscope>
    40. dependency>
    41. dependencies>
    42. <build>
    43. <plugins>
    44. <plugin>
    45. <groupId>org.springframework.bootgroupId>
    46. <artifactId>spring-boot-maven-pluginartifactId>
    47. plugin>
    48. plugins>
    49. build>
    50. project>

    实体类:User:使用lombok简化实体类开发

    1. package com.kuang.pojo;
    2. import lombok.AllArgsConstructor;
    3. import lombok.Data;
    4. import lombok.NoArgsConstructor;
    5. @Data
    6. @AllArgsConstructor
    7. @NoArgsConstructor
    8. public class User {
    9. //对应数据库中的主键(主键策略:uuid、自增id、雪花算法、redis、zookeeper)
    10. private Long id;
    11. private String name;
    12. private Integer age;
    13. private String email;
    14. }

    UserMapper:接口:用了MyBatis-plus之后,UserMapper接口里面不用在写方法了,只要它继承一个BaseMapper接口就行,里面包含了基本CRUD的方法,还有再也不用谢UserMapper.xml去写sql语句了,上面创建的UserMapper.xml:只是做了个样子,回忆一下原来的MyBatis

    1. package com.kuang.mapper;
    2. import com.baomidou.mybatisplus.core.mapper.BaseMapper;
    3. import com.kuang.pojo.User;
    4. import org.springframework.stereotype.Repository;
    5. @Repository //注解代表持久层
    6. //现在不用谢UserMapper.xml了 需要在对象的接口Mapper上面继承基本的类 BaseMapper
    7. public interface UserMapper extends BaseMapper {
    8. //所有的CRUD操作都已经编写完成了,BaseMapper里面包含了常用所有的CRUDF方法
    9. //你不需要像以前那样配置一堆文件了
    10. //这里面还可以编写自己的方法
    11. }

    主启动类MybatisPlusApplication:添加注解,扫描包

    1. package com.kuang;
    2. import org.mybatis.spring.annotation.MapperScan;
    3. import org.springframework.boot.SpringApplication;
    4. import org.springframework.boot.autoconfigure.SpringBootApplication;
    5. @MapperScan("com.kuang.mapper") //注解扫描
    6. @SpringBootApplication
    7. public class MybatisPlusApplication {
    8. public static void main(String[] args) {
    9. SpringApplication.run(MybatisPlusApplication.class, args);
    10. }
    11. }

    application.properties:配置文件:

    1. #mysql5 驱动不同 com.mysql.jdbc.Driver
    2. #mysql8 驱动com.mysql.cj.jdbc.Driver 需要增加时区配置
    3. spring.datasource.username=root
    4. spring.datasource.password=123456
    5. spring.datasource.url=jdbc:mysql://localhost:3306/mybatis-plus?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8
    6. spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

    测试类:

    1. package com.kuang;
    2. import com.kuang.mapper.UserMapper;
    3. import com.kuang.pojo.User;
    4. import org.junit.jupiter.api.Test;
    5. import org.springframework.beans.factory.annotation.Autowired;
    6. import org.springframework.boot.test.context.SpringBootTest;
    7. import java.util.List;
    8. @SpringBootTest
    9. class MybatisPlusApplicationTests {
    10. //测试,我们没有写任何CRUD,测试我们能不能使用
    11. //继承了BaseMapper,所有的方法都来自父类,我们也可以编写自己的扩展方法
    12. @Autowired
    13. private UserMapper userMapper;
    14. @Test
    15. void contextLoads() {
    16. //参数是一个Wapper,条件构造器,类似sql我们要编写的条件,这里我们先不用 null,没有条件,查询所有的用户
    17. //查询全部用户
    18. List users = userMapper.selectList(null);
    19. users.forEach(System.out::println);
    20. }
    21. }

    运行测试类:成功的搜索出来

    ad3f01ad973845fbb48ee6eb2f46037b.png

     3e2f231a13aa4859817dfb33996cd433.png

    (3)配置日志 

    c5e635d587b8439c82ce547eca22c496.png

    1. #mysql5 驱动不同 com.mysql.jdbc.Driver
    2. #mysql8 驱动com.mysql.cj.jdbc.Driver 需要增加时区配置
    3. #数据库连接配置
    4. spring.datasource.username=root
    5. spring.datasource.password=123456
    6. spring.datasource.url=jdbc:mysql://localhost:3306/mybatis-plus?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8
    7. spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
    8. #配置日志 使用控制态输出
    9. mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

    重新运行 

    d39f08a097294cdf8067e3c147587cf6.png

    (4)插入测试

    3e77a772040b4cc682e6cb94339f0a2d.png

    1. package com.kuang;
    2. import com.kuang.mapper.UserMapper;
    3. import com.kuang.pojo.User;
    4. import org.junit.jupiter.api.Test;
    5. import org.springframework.beans.factory.annotation.Autowired;
    6. import org.springframework.boot.test.context.SpringBootTest;
    7. import java.util.List;
    8. @SpringBootTest
    9. class MybatisPlusApplicationTests {
    10. //测试,我们没有写任何CRUD,测试我们能不能使用
    11. //继承了BaseMapper,所有的方法都来自父类,我们也可以编写自己的扩展方法
    12. @Autowired
    13. private UserMapper userMapper;
    14. //查询测试
    15. @Test
    16. void contextLoads() {
    17. //参数是一个Wapper,条件构造器,类似sql我们要编写的条件,这里我们先不用 null,没有条件,查询所有的用户
    18. //查询全部用户
    19. List users = userMapper.selectList(null);
    20. users.forEach(System.out::println);
    21. }
    22. //插入测试
    23. @Test
    24. public void testInsert(){
    25. User user=new User();
    26. user.setName("狂神说Java");
    27. user.setAge(3);
    28. user.setEmail("241374565@qq.com");
    29. int result=userMapper.insert(user);//这里我们没有设置id,帮助我们自动的生成id
    30. System.out.println(result);//受影响的行数
    31. System.out.println(user);//发现,id会自动回填
    32. }
    33. }

    运行插入测试 

    cbf101331fcc4642954e81547351d6d5.png

     (4)不同主键的策略

    abafee45b3894853964fb4cf16c2fd67.png743975dad91447088c39d1159fa58db0.png

     默认主键策略是:ID_WORK全局唯一7c7e8f159f064d43bbfa280817d91509.png

    在User类设置主键策略:设置成自增策略

    1. package com.kuang.pojo;
    2. import com.baomidou.mybatisplus.annotation.IdType;
    3. import com.baomidou.mybatisplus.annotation.TableId;
    4. import lombok.AllArgsConstructor;
    5. import lombok.Data;
    6. import lombok.NoArgsConstructor;
    7. @Data
    8. @AllArgsConstructor
    9. @NoArgsConstructor
    10. public class User {
    11. //对应数据库中的主键(主键策略:uuid、自增id、雪花算法、redis、zookeeper)
    12. @TableId(type = IdType.AUTO) //注解设置主键id策略
    13. private Long id;
    14. private String name;
    15. private Integer age;
    16. private String email;
    17. }

     重新插入一条数据:重新运行测试类:插入测试

    99ba96622ca648a28e3f8856343d7a0a.png

    可以看到主键id是自增的 

     50c28c4dd13742b59af1a3be639064a1.png

     INPUT策略:需要在增加数据的时候手动设置id

    1. package com.kuang.pojo;
    2. import com.baomidou.mybatisplus.annotation.IdType;
    3. import com.baomidou.mybatisplus.annotation.TableId;
    4. import lombok.AllArgsConstructor;
    5. import lombok.Data;
    6. import lombok.NoArgsConstructor;
    7. @Data
    8. @AllArgsConstructor
    9. @NoArgsConstructor
    10. public class User {
    11. //对应数据库中的主键(主键策略:uuid、自增id、雪花算法、redis、zookeeper)
    12. @TableId(type = IdType.INPUT) //一旦手动输入id之后,就需要自己配置id了
    13. private Long id;
    14. private String name;
    15. private Integer age;
    16. private String email;
    17. }
    1. package com.kuang;
    2. import com.kuang.mapper.UserMapper;
    3. import com.kuang.pojo.User;
    4. import org.junit.jupiter.api.Test;
    5. import org.springframework.beans.factory.annotation.Autowired;
    6. import org.springframework.boot.test.context.SpringBootTest;
    7. import java.util.List;
    8. @SpringBootTest
    9. class MybatisPlusApplicationTests {
    10. //测试,我们没有写任何CRUD,测试我们能不能使用
    11. //继承了BaseMapper,所有的方法都来自父类,我们也可以编写自己的扩展方法
    12. @Autowired
    13. private UserMapper userMapper;
    14. //插入测试
    15. @Test
    16. public void testInsert(){
    17. User user=new User();
    18. user.setId(6L);
    19. user.setName("狂神说Java2");
    20. user.setAge(3);
    21. user.setEmail("241374565@qq.com");
    22. int result=userMapper.insert(user);//这里我们没有设置id,帮助我们自动的生成id
    23. System.out.println(result);//受影响的行数
    24. System.out.println(user);//发现,id会自动回填
    25. }
    26. }

    20e55e90d1be4487a053b0283bee8e33.png

    插入了一条id为整型的6 

     4486a9310cce43669a82eb2b1dfe2d49.png

  • 相关阅读:
    狂神说SSM之Spring5 从入门到脱发
    非科班菜鸡算法学习记录 | 代码随想录算法训练营第57天|| 647. 回文子串 516.最长回文子序列 动态规划总结篇
    MyBatisCodeHelper Pro3.x新版本插件自由
    Vue源码学习(十三):nextTick()方法
    prim算法求解最小生成树 C++实现
    计算机毕业设计(附源码)python知识付费运营管理系统
    好用的C C++ 日志宏 OutputDebugStringA 写到文件或界面
    搭建深度学习网络时节约GPU显存的技巧
    特约|数码转型思考:Web3.0与银行
    反射和注解
  • 原文地址:https://blog.csdn.net/dengfengling999/article/details/125992435