美文网首页
springboot集成Mybatis-Plus

springboot集成Mybatis-Plus

作者: 晚风吹___ | 来源:发表于2020-12-26 12:08 被阅读0次

    10、SpringBoot -集成MP-基础

    一、Mybatis-Plus简介

    官方网站
    Mybatis-Plus 是一款 Mybatis 动态 SQL 自动注入 Mybatis 增删改查 CRUD 操作中间件, 减少你的开发周期优化动态维护 XML 实体字段,是对Mybatis的增强。
    愿景:我们的愿景是成为 MyBatis 最好的搭档,基友搭配,效率翻倍
    他主要的特点:

    • 无侵入,损耗小
    • 通用CRUD操作,支持分页操作
    • 预防Sql注入,支持多种数据库
    • 支持ActiveRecord支持代码生成等等

    二、前期准备工作

    导入相关jar包

        <properties>
            <java.version>1.8</java.version>
            <mybatis-plus.starter.version>2.1.5</mybatis-plus.starter.version>
            <mybatis.starter.version>2.0.1</mybatis.starter.version>
            <druid.starter.version>1.1.20</druid.starter.version>
        </properties>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>${mybatis.starter.version}</version>
            </dependency>
            <!--  添加MP依赖-->
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-boot-starter</artifactId>
                <version>3.1.2</version>
            </dependency>
           </dependency>
            <!--  lombok 工具包-->
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
            </dependency>
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid-spring-boot-starter</artifactId>
                <version>${druid.starter.version}</version>
            </dependency>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <scope>runtime</scope>
            </dependency>
    
    

    sql语句

    --  数据库名 db_boot_example
    DROP TABLE IF EXISTS user;
    CREATE TABLE `user`
    (
        `uid`        INT(11) PRIMARY KEY AUTO_INCREMENT COMMENT '用户Id',
        `username`   VARCHAR(100) NOT NULL COMMENT '用户名',
        `password`   VARCHAR(128) NOT NULL COMMENT '密码',
        `phone`      VARCHAR(11)  DEFAULT NULL COMMENT '手机',
        `sex`        TINYINT(1)   DEFAULT 1 COMMENT '性别 1 表示男 0 表示女',
        `email`      VARCHAR(100) NOT NULL COMMENT '邮箱',
        `mark`       VARCHAR(100) DEFAULT NULL COMMENT '备注',
        `last_login` TIMESTAMP    DEFAULT current_timestamp NOT NULL COMMENT '最后一次登录时间',
        `login_ip`   VARCHAR(30)  DEFAULT NULL COMMENT '登录ip',
        `head`       VARCHAR(100) DEFAULT '/img/default.png' COMMENT '头像图片路径',
        `reg_time`   TIMESTAMP    DEFAULT current_timestamp NOT NULL COMMENT '注册时间',
        `locked`     TINYINT(1)   DEFAULT 0 COMMENT '账号是否被锁定 1 表示未锁定 0 表示锁定',
        UNIQUE KEY `uk_u_name` (`username`),
        UNIQUE KEY `uk_u_phone` (`phone`),
        UNIQUE KEY `uk_u_email` (`email`)
    ) ENGINE = InnoDB
      AUTO_INCREMENT = 1
      DEFAULT CHARSET = utf8;
    
    

    entity

    @Data
    public class User {
        /**
         * 用户Id
         */
        private Integer uid;
        /**
         * 用户名
         */
        private String username;
        /**
         * 密码
         */
        private String password;
        /**
         * 手机
         */
        private String phone;
        /**
         * 性别 1 表示男 0 表示女
         */
        private Boolean sex;
        /**
         * 邮箱
         */
        private String email;
        /**
         * 备注
         */
        private String mark;
        /**
         * 最后一次登录时间
         */
        private Date lastLogin;
        /**
         * 登录ip
         */
        private String loginIp;
        /**
         * 头像图片路径
         */
        private String head;
        /**
         * 注册时间
         */
        private Date regTime;
        /**
         * 账号是否被锁定 1 表示未锁定 0 表示锁定
         */
        private Boolean locked;
    }
    
    

    application-mp.yml

    spring:
      datasource:
        # 初始化线程池数量  最大数  最小数
        type: com.alibaba.druid.pool.DruidDataSource
        # 驱动包 8.0以上的配置
        # =========== durid 连接池配置===========
        druid:
          #===========JDBC 配置===========
          url: jdbc:mysql://localhost:3306/db_boot_example?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL=false
          username: root
          password: root
          initial-size: 5
          max-active: 20
          min-idle: 3
    # 打印SQL日志
    logging:
      level:
        com.vp.example.mapper: trace
    server:
      port: 8000
      servlet:
        context-path: /api
      address: 127.0.0.1
    # ========MP配置 无需配置mybatis了============
    mybatis-plus:
      # 如果是放在src/main/java目录下 classpath:/com/你的包名/*/mappers/*.xml
      # 如果放在 src/main/resources 下
      mapper-locations: classpath:/mappers/**/*.xml
      # 实体扫描,多个package用逗号或者分号分隔
      typeAliasesPackage: com.vp.example.*.entity
      global-config:
        db-config:
          # 主键类型
          id-type: auto
          #驼峰下划线转换
          table-underline: true
          logic-delete-value: 1
          logic-not-delete-value: 0
      configuration:
        #配置返回数据库(column下划线命名&&返回java实体是驼峰命名),自动匹配无需as(没开启这个,SQL需要写as: select user_id as userId)
        map-underscore-to-camel-case: true
        cache-enabled: false
        #配置JdbcTypeForNull, oracle数据库必须配置
        jdbc-type-for-null: 'null'
    
    

    更多mybatis.plus详细说明请看官方文档

    UserMapper

    //  继承Mybatis Plus提供的BaseMapper
    public interface UserMapper extends BaseMapper<User> {
    }
    
    

    程序入口

    @SpringBootApplication
    @MapperScan("com.vp.example.mapper")
    public class ExampleApplication {
        public static void main(String[] args) {
            SpringApplication.run(ExampleApplication.class, args);
        }
    }
    
    

    三、基本操作CURD

    添加操作

    @RunWith(SpringRunner.class)
    @SpringBootTest
    @Slf4j
    public class UserMapperTest {
        @Resource
        UserMapper userMapper;
        @Test
        public void save() {
            User user = new User();
            user.setUsername("qq123456");
            user.setPassword(DigestUtils.md5DigestAsHex("123456".getBytes()));
            user.setPhone("123456789");
            user.setEmail("123456@qq.com");
            userMapper.insert(user);
        }
    }
    
    

    更新操作

    @RunWith(SpringRunner.class)
    @SpringBootTest
    @Slf4j
    public class UserMapperTest {
        @Resource
        UserMapper userMapper;
        @Test
        public void update() {
            User user = new User();
            user.setUid(1);
            user.setPassword(DigestUtils.md5DigestAsHex("test".getBytes()));
            // 没有值的将不会更新
            userMapper.updateById(user);
        }
    }
    
    

    查询操作

    @RunWith(SpringRunner.class)
    @SpringBootTest
    @Slf4j
    public class UserMapperTest {
        @Resource
        UserMapper userMapper;
        @Test
        public void findById() {
            User user = userMapper.selectById(1);
            log.error(user.toString());
        }
    }
    
    

    删除操作

    @RunWith(SpringRunner.class)
    @SpringBootTest
    @Slf4j
    public class UserMapperTest {
        @Resource
        UserMapper userMapper;
        @Test
        public void deleteById() {
            int count = userMapper.deleteById(1);
            log.error("影响的行数:{}",count);
        }
    }
    

    </article>

    相关文章

      网友评论

          本文标题:springboot集成Mybatis-Plus

          本文链接:https://www.haomeiwen.com/subject/jvxgnktx.html