前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringBoot--MyBatis-Plus

SpringBoot--MyBatis-Plus

作者头像
aruba
发布2022-06-05 10:42:31
3430
发布2022-06-05 10:42:31
举报
文章被收录于专栏:android技术android技术

使用MyBatis进行数据库操作已经很方便了,MyBatis-Puls对MyBatis做了进一步的简化,用于常见的CURD操作

一、项目配置

1. 导入依赖

安装插件:

代码语言:javascript
复制
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.2</version>
        </dependency>
2. 配置yml

需要修改的也只是将mybatis改为mybatis-plus

代码语言:javascript
复制
# 使用mybatis-plus配置类别名
mybatis-plus:
  type-aliases-package: com.aruba.mybatisplus.bean

spring:
  datasource:
    # 使用阿里的Druid连接池
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    # 填写你数据库的url、登录名、密码和数据库名
    url: jdbc:mysql://127.0.0.1:3306/mydb?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
    username: root
    password: root
  druid:
    # 连接池的配置信息
    # 初始化大小,最小,最大
    initial-size: 5
    min-idle: 5
    maxActive: 20
    # 配置获取连接等待超时的时间
    maxWait: 60000
    # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
    timeBetweenEvictionRunsMillis: 60000
    # 配置一个连接在池中最小生存的时间,单位是毫秒
    minEvictableIdleTimeMillis: 300000
    validationQuery: SELECT 1
    testWhileIdle: true
    testOnBorrow: false
    testOnReturn: false
    # 打开PSCache,并且指定每个连接上PSCache的大小
    poolPreparedStatements: true
    maxPoolPreparedStatementPerConnectionSize: 20
    # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
    filters: stat,wall,slf4j
    # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
    connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
    # 配置DruidStatFilter
    web-stat-filter:
      enabled: true
      url-pattern: "/*"
      exclusions: "*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*"
    # 配置DruidStatViewServlet
    stat-view-servlet:
      url-pattern: "/druid/*"
      # IP白名单(没有配置或者为空,则允许所有访问)
      allow: 127.0.0.1,192.168.8.109
      # IP黑名单 (存在共同时,deny优先于allow)
      deny: 192.168.1.188
      #  禁用HTML页面上的“Reset All”功能
      reset-enable: false
      # 登录名
      login-username: admin
      # 登录密码
      login-password: 123456

二、使用MyBatis-Plus

1. 新建实体类

在实体类上使用@TableName注解指定数据库表 在属性上可以使用@TableField注解指定表字段

代码语言:javascript
复制
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName("emp")
public class Emp implements Serializable {
    @TableField(exist = false)
    private String aaa;
    /**
     * 员工编号
     */
    @TableField("empno")
    private Integer eno;
    /**
     * 姓名
     */
    private String ename;
    /**
     * 职位
     */
    private String job;
    /**
     * 上级
     */
    private Integer mgr;
    /**
     * 入职日期
     */
    private Date hiredate;
    /**
     * 薪水
     */
    private Double sal;
    /**
     * 奖金
     */
    private Double comm;
    /**
     * 部门编号
     */
    private Integer deptno;
}
2. Mapper层

新建Mapper接口继承BaseMapper,泛型传入实体类类型

代码语言:javascript
复制
@Mapper
public interface EmpMapper extends BaseMapper<Emp> {
}
3. Service层

新建Service接口继承IService,泛型传入实体类类型:

代码语言:javascript
复制
public interface EmpService extends IService<Emp> {
}

新建Service实现类继承ServiceImpl,泛型传入Mapper和实体类类型,并实现Service接口:

代码语言:javascript
复制
@Service
public class EmpServiceImpl extends ServiceImpl<EmpMapper, Emp> implements EmpService {
}

测试方法:

代码语言:javascript
复制
@SpringBootTest
class MybatisPlusApplicationTests {
    @Autowired
    private EmpService empService;

    @Test
    void contextLoads() {
        List<Emp> list = empService.list();
        System.out.println(list);
    }

}

三、实现CURD

1. where条件

MyBatis实现条件通过QueryWrapper对象,其内置了丰富的api

实现查询员工姓名包含a的:

代码语言:javascript
复制
    @Test
    void find() {
        QueryWrapper<Emp> empQueryWrapper = new QueryWrapper<>();
        empQueryWrapper.like("ename",'a');
        List<Emp> list = empService.list(empQueryWrapper);
        System.out.println(list);
    }

实现查询员工编号为7499的单个员工:

代码语言:javascript
复制
    @Test
    void findOne() {
        QueryWrapper<Emp> empQueryWrapper = new QueryWrapper<>();
        empQueryWrapper.eq("empno", 7499);
        Emp emp = empService.getOne(empQueryWrapper);
        System.out.println(emp);
    }
2. 新增

实现新增一个员工:

代码语言:javascript
复制
    @Test
    void add() {
        boolean success = empService.save(new Emp(null, null, "xiaoming", "SALESMAN", 7499, new Date(), 1800.0, 0.0, 20));
        System.out.println(success);
    }
3. 修改

实现更新7499员工的薪水为1900:

代码语言:javascript
复制
    @Test
    void update() {
        QueryWrapper<Emp> empQueryWrapper = new QueryWrapper<>();
        empQueryWrapper.eq("empno", 7499);

        Emp emp = new Emp();
        emp.setSal(1900.0);

        boolean update = empService.update(emp, empQueryWrapper);
        System.out.println(update);
    }
4. 删除

实现删除员工名字为xiaoming的员工:

代码语言:javascript
复制
    @Test
    void delete() {
        QueryWrapper<Emp> empQueryWrapper = new QueryWrapper<>();
        empQueryWrapper.eq("ename", "xiaoming");

        boolean remove = empService.remove(empQueryWrapper);
        System.out.println(remove);
    }

四、分页

MyBatis-Plus自带分页功能,需要手动配置

1. 配置分页插件
代码语言:javascript
复制
@Configuration
public class MyBatisPlusConfig {
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor mybatisPlusInterceptor =new MybatisPlusInterceptor();
        PaginationInnerInterceptor paginationInnerInterceptor =new PaginationInnerInterceptor();
        // 设置请求的页面大于最大页后操作, true调回到首页,false 继续请求  默认false
        //paginationInnerInterceptor.setOverflow(false);
        // 设置最大单页限制数量,默认 500 条,-1 不受限制
        //paginationInnerInterceptor.setMaxLimit(500L);
        // 设置数据库类型
        paginationInnerInterceptor.setDbType(DbType.MYSQL);
        mybatisPlusInterceptor.addInnerInterceptor(paginationInnerInterceptor);
        return mybatisPlusInterceptor;
    }
}
2. 使用分页

实现以每页5个数据,查询第一页员工信息:

代码语言:javascript
复制
    @Test
    void page() {
        QueryWrapper<Emp> empQueryWrapper = new QueryWrapper<>();
        //查询第一页,每页5条数据
        Page<Emp> page = empService.page(new Page<>(1, 5), empQueryWrapper);

        List<Emp> records = page.getRecords();
        System.out.println(records);

        System.out.println("总页数:" + page.getPages());
        System.out.println("总数据量:" + page.getTotal());
        System.out.println("当前页:" + page.getCurrent());
        System.out.println("页大小:" + page.getSize());
    }

项目地址:

https://gitee.com/aruba/spring-boot-study.git

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-06-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、项目配置
    • 1. 导入依赖
      • 2. 配置yml
      • 二、使用MyBatis-Plus
        • 1. 新建实体类
          • 2. Mapper层
            • 3. Service层
            • 三、实现CURD
              • 1. where条件
                • 2. 新增
                  • 3. 修改
                    • 4. 删除
                    • 四、分页
                      • 1. 配置分页插件
                        • 2. 使用分页
                        • 项目地址:
                        相关产品与服务
                        数据库
                        云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
                        领券
                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档