• MyBatisPlus的增删改查SpringBoot方式


    1、POM文件添加引用

    <?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.5.6</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
        <groupId>com.example</groupId>
        <artifactId>MyBatisBoot</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>MyBatisBoot</name>
        <description>Demo project for Spring Boot</description>
        <properties>
            <java.version>1.8</java.version>
        </properties>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-boot-starter</artifactId>
                <version>3.4.3</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-devtools</artifactId>
                <scope>runtime</scope>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <scope>runtime</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-configuration-processor</artifactId>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <optional>true</optional>
            </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>
                    <configuration>
                        <excludes>
                            <exclude>
                                <groupId>org.projectlombok</groupId>
                                <artifactId>lombok</artifactId>
                            </exclude>
                        </excludes>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </project>

    2、配置文件(application.yml)

    mybatis-plus:
      #  config-location: classpath:mybatis/mybatis-config.xml
      mapper-locations: classpath:mybatis/mapper/*.xml
      type-aliases-package: com.yas.entity
      configuration:
        lazy-loading-enabled: true
        aggressive-lazy-loading: false
        log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
        map-underscore-to-camel-case: false
        cache-enabled: false
    
      global-config:
        db-config:
          id-type: auto

    3、配置类(解决分页问题)

     1 package com.yas.config;
     2 
     3 import com.baomidou.mybatisplus.annotation.DbType;
     4 import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
     5 import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
     6 import org.mybatis.spring.annotation.MapperScan;
     7 import org.springframework.context.annotation.Bean;
     8 import org.springframework.context.annotation.Configuration;
     9 
    10 @Configuration
    11 @MapperScan("com.yas.dao")
    12 public class MybatisPlusConfig {
    13 
    14     //配置mp分页插件
    15     @Bean
    16     public MybatisPlusInterceptor mybatisPlusInterceptor() {
    17         MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
    18         interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
    19         return interceptor;
    20     }
    21 }

    4、实体类(POJO)

     1 package com.yas.entity;
     2 
     3 import com.baomidou.mybatisplus.annotation.IdType;
     4 import com.baomidou.mybatisplus.annotation.TableField;
     5 import com.baomidou.mybatisplus.annotation.TableId;
     6 import lombok.AllArgsConstructor;
     7 import lombok.Data;
     8 import lombok.NoArgsConstructor;
     9 import lombok.ToString;
    10 
    11 import java.util.Date;
    12 
    13 @Data
    14 @NoArgsConstructor
    15 @AllArgsConstructor
    16 @ToString
    17 public class SysUser {
    18     //指定主键生成方式为数据库自增
    19     @TableId(type= IdType.AUTO)
    20     private Integer id;
    21     private String account;
    22     private String username;
    23 
    24     //查询时不反悔该字段的值
    25     @TableField(select = false)
    26     private String pwd;
    27 
    28     private Date gmt_create;
    29 
    30     //假如属性名与数据库表中的列名不同,可以在这里设置列名
    31     @TableField(value = "gmt_modified")
    32     private Date gmt_modified;
    33 
    34     //这个属性不会进行映射
    35     @TableField(exist = false)
    36     private String otherProperty;
    37 }

    5、测试方法:

      1 package com.yas;
      2 
      3 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
      4 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
      5 import com.baomidou.mybatisplus.core.metadata.IPage;
      6 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
      7 import com.yas.dao.SysUserPlusDAO;
      8 import com.yas.entity.SysStaff;
      9 import com.yas.entity.SysUser;
     10 import org.junit.jupiter.api.Test;
     11 import org.springframework.beans.factory.annotation.Autowired;
     12 import org.springframework.boot.test.context.SpringBootTest;
     13 
     14 import java.sql.Timestamp;
     15 import java.util.*;
     16 
     17 @SpringBootTest
     18 public class MyBatisPlusTests {
     19     @Autowired
     20     SysUserPlusDAO sysUserPlusDAO;
     21 
     22     //插入
     23     @Test
     24     void testInsert() {
     25         SysUser user = new SysUser(null, "manager", "王羲之", "000000", new Date(), new Date(), null);
     26         int result = sysUserPlusDAO.insert(user);
     27         System.out.println(result);
     28         System.out.println("主键回填:" + user.getId());
     29     }
     30 
     31     //根据id查询
     32     @Test
     33     void testSelectById() {
     34         SysUser sysUser = sysUserPlusDAO.selectById(8);
     35         System.out.println(sysUser);
     36     }
     37 
     38     //根据id更新
     39     @Test
     40     void testUpdateById() {
     41         SysUser user = new SysUser();
     42         user.setId(8);
     43         user.setUsername("王献之");
     44         int result = sysUserPlusDAO.updateById(user);
     45         System.out.println(result);
     46     }
     47 
     48     //根据条件更新
     49     @Test
     50     void testUpdate() {
     51         SysUser user = new SysUser();
     52         user.setPwd("888888");
     53 
     54         QueryWrapper<SysUser> wrapper = new QueryWrapper<>();
     55         wrapper.eq("account", "manager");
     56         int result = sysUserPlusDAO.update(user, wrapper);
     57         System.out.println(result);
     58     }
     59 
     60 
     61     //根据条件更新2
     62     @Test
     63     void testUpdate2() {
     64         UpdateWrapper<SysUser> wrapper = new UpdateWrapper<>();
     65         wrapper.set("pwd", "666666").eq("account", "manager");
     66         int result = sysUserPlusDAO.update(null, wrapper);
     67         System.out.println(result);
     68     }
     69 
     70     //根据条件删除
     71     @Test
     72     void testDeleteById() {
     73         int result = sysUserPlusDAO.deleteById(8);
     74         System.out.println(result);
     75     }
     76 
     77     //根据map条件删除,多条件之间是and关系
     78     @Test
     79     void testDeleteByMap() {
     80         Map<String, Object> map = new HashMap<>();
     81         map.put("username", "王维");
     82         map.put("pwd", "666666");
     83         //根据map删除,多条件之间是 and 关系
     84         int result = sysUserPlusDAO.deleteByMap(map);
     85         System.out.println(result);
     86     }
     87 
     88     //使用条件删除
     89     @Test
     90     void testDeleteByWrapper() {
     91         //用法一:
     92 //        QueryWrapper<SysUser> wrapper = new QueryWrapper<>();
     93 //        wrapper.eq("username","杜甫").eq("pwd","666666");
     94 
     95         //用法二:(推荐)
     96         SysUser user = new SysUser();
     97         user.setUsername("李白");
     98         user.setPwd("666666");
     99         QueryWrapper<SysUser> wrapper = new QueryWrapper<>(user);
    100 
    101         int result = sysUserPlusDAO.delete(wrapper);
    102         System.out.println(result);
    103     }
    104 
    105     //根据id批量删除数据
    106     @Test
    107     void testDeleteByBatchIds() {
    108         int result = sysUserPlusDAO.deleteBatchIds(Arrays.asList(9, 10));
    109         System.out.println(result);
    110     }
    111 
    112     //查询 条件in
    113     @Test
    114     void testSelectBatchIds() {
    115         List<SysUser> users = sysUserPlusDAO.selectBatchIds(Arrays.asList(1, 2, 3, 4, 5));
    116         for (SysUser user : users) {
    117             System.out.println(user);
    118         }
    119     }
    120 
    121     //查询单条,返回结果最多只能有1条
    122     @Test
    123     void testSelectOne() {
    124         SysUser user = new SysUser();
    125         user.setId(1);
    126         user.setAccount("admin");
    127         user.setUsername("管理员");
    128         QueryWrapper<SysUser> wrapper = new QueryWrapper<>(user);
    129 
    130         SysUser user2 = sysUserPlusDAO.selectOne(wrapper);
    131         System.out.println(user2);
    132     }
    133 
    134     @Test
    135     void testSelectCount() {
    136         QueryWrapper<SysUser> wrapper = new QueryWrapper<>();
    137         wrapper.isNotNull("username");
    138         int result = sysUserPlusDAO.selectCount(wrapper);
    139         System.out.println(result);
    140     }
    141 
    142     @Test
    143     void testSelectList() {
    144         QueryWrapper<SysUser> wrapper = new QueryWrapper<>();
    145         wrapper.isNotNull("username");
    146         List<SysUser> users = sysUserPlusDAO.selectList(wrapper);
    147         for (SysUser user : users) {
    148             System.out.println(user);
    149         }
    150     }
    151 
    152     @Test
    153     void testSelectPage() {
    154         Page<SysUser> page = new Page<>(1, 1);
    155 
    156         QueryWrapper<SysUser> wrapper = new QueryWrapper<>();
    157         wrapper.like("username", "C");
    158         IPage<SysUser> iPage = sysUserPlusDAO.selectPage(page, wrapper);
    159         System.out.println("数据总条数:" + iPage.getTotal());
    160         System.out.println("总页数:" + iPage.getPages());
    161         System.out.println("当前是第" + iPage.getCurrent() + "页");
    162 
    163         List<SysUser> records = iPage.getRecords();
    164         for (SysUser record : records) {
    165             System.out.println(record);
    166         }
    167     }
    168 
    169     @Test
    170     void testAllEq(){
    171         Map<String,Object> map = new HashMap<>();
    172         map.put("id",1);
    173         map.put("account","admin");
    174         map.put("username","管理员");
    175 
    176         QueryWrapper<SysUser> wrapper = new QueryWrapper<>();
    177 //        wrapper.allEq(map);//is null 可以作为条件
    178 //        wrapper.allEq(map,false);//is null 不会作为条件
    179         wrapper.allEq((k,v)->(k.equals("age") || k.equals("id")),map);//指定条件
    180         List<SysUser> users = sysUserPlusDAO.selectList(wrapper);
    181         for (SysUser user : users) {
    182             System.out.println(user);
    183         }
    184     }
    185 }

    对于一些比较简单的SQL语句,可以直接用MybatisPlus提供的方法。

    对于复杂的SQL语句,还是用Mybaits直接编写SQL语句更加易于编写和维护。

  • 相关阅读:
    Direct2D教程(二)来看D2D世界中的Hello,World
    绕任意轴旋转
    XPDM vs WDDM
    也谈杨辉三角形
    用DirectX实现粒子系统(一)
    Alpha混合(一)Vertex Alpha
    几何变换详解
    用DirectX实现粒子系统(三)
    Alpha混合(二)Material Alpha
    Direct2D教程(五)复合图形
  • 原文地址:https://www.cnblogs.com/asenyang/p/15476286.html
Copyright © 2020-2023  润新知