美文网首页
10、SpringBoot -集成MP-基础

10、SpringBoot -集成MP-基础

作者: 唯老 | 来源:发表于2019-09-18 00:06 被阅读0次

一、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);
    }
}

相关文章

网友评论

      本文标题:10、SpringBoot -集成MP-基础

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