您当前的位置: 首页 >  mybatis

SpringBoot整合MyBatisPlus

梁云亮 发布时间:2020-04-21 13:53:11 ,浏览量:7

第一步:添加Maven依赖

    mysql
    mysql-connector-java
    8.0.27



    com.alibaba
    druid-spring-boot-starter
    1.2.8



    com.baomidou
    mybatis-plus-boot-starter
    3.4.3.4

第二步:修改application.yml
spring:
    #配置数据源
    datasource:
        druid:
	        driver-class-name: com.mysql.cj.jdbc.Driver
	        url: jdbc:mysql://localhost:3306/db_wego?useSSL=false&serverTimezone=GMT%2B8
	        username: root
	        password: root
	        type: com.alibaba.druid.pool.DruidDataSource
            # 连接池的配置信息:初始化大小,最小,最大
            initial-size: 8
            min-idle: 1
            max-active: 20
            # 配置获取连接等待超时的时间
            max-wait: 60000
            # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
            time-between-eviction-runs-millis: 60000
            # 配置一个连接在池中最小生存的时间,单位是毫秒
            min-evictable-idle-time-millis: 300000
            #验证库是否正常sql
            validation-query: select 'x' from dual
            #空闲时验证,防止连接断开
            test-while-idle: true
            test-on-borrow: false
            test-on-return: false
            # 打开PSCache,并且指定每个连接上PSCache的大小
            pool-prepared-statements: true
            max-open-prepared-statements: 20
            max-pool-prepared-statement-per-connection-size: 20
            # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
            filters: stat,wall,slf4j
            # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
            connection-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
            # 合并多个DruidDataSource的监控数据
            use-global-data-source-stat: true


#MyBatisPlus相关配置
mybatis-plus:
    #mapper映射文件位置,多个目录用逗号或者分号分隔(告诉 Mapper 所对应的 XML 文件位置)
    mapper-locations: classpath:mapper/*.xml
    #实体扫描,多个package用逗号或者分号分隔
    typeAliasesPackage: com.hc.domain
    #  以下配置均有默认值,可以不设置
    global-config:
        db-config:
            #主键类型
            id-type: auto

            table-underline: true

            #逻辑删除配置(下面3个配置)
            logic-delete-value: -1
            logic-not-delete-value: 1
            logic-delete-field: flag

            #数据库大写下划线转换
            capital-mode: true

    configuration:
        # 是否开启自动驼峰命名规则映射:从数据库列名到Java属性驼峰命名的类似映射
        map-underscore-to-camel-case: true

        cache-enabled: false
        #配置JdbcTypeForNull
        jdbc-type-for-null: 'null'
        # 如果查询结果中包含空值的列,则 MyBatis 在映射的时候,不会映射这个字段
        call-setters-on-nulls: true
        # 将执行的sql打印出来,在开发或测试的时候可以用
        log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
第三步:配置文件 DruidConfig.java(初期可以不用配置)
@Configuration
public class DruidConfig {

    @ConfigurationProperties(prefix = "spring.datasource")
    @Bean
    public DataSource druid(){
        return new DruidDataSource();
    }

    /**
     * druid 数据源状态监控
     * @return
     */
    @Bean
    public ServletRegistrationBean statViewServlet(){
        //创建servlet注册实体
        ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(),"/druid/*");
        //设置ip白名单
        servletRegistrationBean.addInitParameter("allow","127.0.0.1");
        //设置ip黑名单,如果allow与deny共同存在时,deny优先于allow
        servletRegistrationBean.addInitParameter("deny","192.168.0.19");
        //设置控制台管理用户
        servletRegistrationBean.addInitParameter("loginUsername","druid");
        servletRegistrationBean.addInitParameter("loginPassword","1234");
        //是否可以重置数据
        servletRegistrationBean.addInitParameter("resetEnable","false");
        return servletRegistrationBean;
    }

    /**
     * druid 过滤器
     * @return
     */
    @Bean
    public FilterRegistrationBean statFilter(){
        //创建过滤器
        FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());
        //设置过滤器过滤路径
        filterRegistrationBean.addUrlPatterns("/*");
        //忽略过滤的形式
        filterRegistrationBean.addInitParameter("exclusions","*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
        return filterRegistrationBean;
    }
}
MyBatisPlusConfig.java(初期可以不用配置)
@Configuration
public class MyBatisPlusConfig {
    /**
     * 分页
     * @return
     */
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        return interceptor;
    }
}

注: 上面两个配置文件都不写,最后的测试代码也能正常运行,只是:

  • MyBatisPlusConfig不写的话,分页没有效果,会查询出所有的数据。
  • 加上DruidConfig配置的话,可以随时通过Druid监控访问情况
第三步:实体类
@Getter
@Setter
@ToString
@Builder
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "tb_user")
public class User implements Serializable {
    /**
     * 用户编号
     */
    @TableId(value = "id", type = IdType.AUTO)

    private Long id;
    /**
     * 用户名
     */
    @TableField(value = "username")
    private String username;

    /**
     * 密码
     */
    @TableField(value = "`password`")
    private String password;

    /**
     * 昵称
     */
    @TableField(value = "nickname")
    private String nickname;

    /**
     * 邮箱
     */
    @TableField(value = "email")
    private String email;

    /**
     * 电话
     */
    @TableField(value = "tel")
    private String tel;

    /**
     * 性别:1女 2男 3未知
     */
    @TableField(value = "gender")
    private Integer gender;

    /**
     * 生日
     */
    @TableField(value = "birth")
    private LocalDate birth;

    /**
     * 头像
     */
    @TableField(value = "avatar")
    private String avatar;

    /**
     * 外键:角色编号
     */
    @TableField(value = "role_id")
    private Integer roleId;

    /**
     * 盐值:用户密码采用MD5加密时的盐值,当用户注册时其值可被用作激活码
     */
    @TableField(value = "salt")
    private String salt;

    /**
     * 状态:1未激活,2激活,功能受限
     */
    @TableField(value = "`status`")
    private Integer status;

    /**
     * 创建时间
     */
    @TableField(value = "create_time")
    private LocalDateTime createTime;

    /**
     * 更新日期
     */
    @TableField(value = "update_time")
    private LocalDateTime updateTime;
}
第四步:Mapper接口
@Mapper
public interface UserMapper extends BaseMapper {

}
第五步:测试
@SpringBootTest
class UserMapperTest {

    @Resource
    private UserMapper userMapper;

    @Test
    void insert() {
        final User user = DataUtil.build(User.class);
        user.setRoleId(null);
        final int insertRes = userMapper.insert(user);
        System.out.println(insertRes);
    }

    @Test
    void update() {
        User user = User.builder()
                .password("1234")
                .build();

        QueryWrapper queryWrapper = new QueryWrapper();
        queryWrapper.like("password", "k");
        userMapper.update(user, queryWrapper);
    }

    @Test
    void selectList() {
        QueryWrapper queryWrapper = new QueryWrapper();
        queryWrapper.select("id", "username")
//                .gt("id",11) //greate than
//                .like("password","k")
                .between("id", 11, 15)
        ;
        final List userList = userMapper.selectList(queryWrapper);
        userList.forEach(System.out::println);
    }

    @Test
    void page() {
        IPage page = new Page(1, 3);
        final QueryWrapper queryWrapper = new QueryWrapper();
        final IPage userIPage = userMapper.selectPage(page, queryWrapper);
        System.out.println(page == userIPage);
    }

    @Test
    void delete() {
        Collection idList = List.of(11, 12, 13, 33);
        final int deleteRes = userMapper.deleteBatchIds(idList);
        System.out.println(deleteRes);
    }

}
第六步:
关注
打赏
1688896170
查看更多评论

梁云亮

暂无认证

  • 7浏览

    0关注

    1121博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.0490s