[MyBatisPlus]标准数据层开发(CRUD、分页)

网友投稿 282 2022-09-05

[MyBatisPlus]标准数据层开发(CRUD、分页)

文章目录

​​标准CRUD制作​​

​​新增​​​​删除​​​​修改​​​​根据ID查询​​​​查询所有​​​​Lombok​​

​​概念​​​​使用步骤​​

​​步骤1:添加lombok依赖​​​​步骤2:安装Lombok的插件​​​​步骤3:模型类上添加注解​​

​​分页功能​​

​​步骤1:调用方法传入参数获取返回值​​​​步骤2:设置分页拦截器​​​​步骤3:运行测试程序​​

标准CRUD制作

对于标准的CRUD功能都有哪些以及MP都提供了哪些方法可以使用呢?

我们先来看张图:

对于这张图的方法,我们挨个来演示下:

新增

在进行新增之前,我们可以分析下新增的方法:

int insert (T t)

T:泛型,新增用来保存新增数据int:返回值,新增成功后返回1,没有新增成功返回的是0

在测试类中进行新增操作:

@SpringBootTestclass Mybatisplus01QuickstartApplicationTests { @Autowired private UserDao userDao; @Test void testSave() { User user = new User(); user.setName("张三"); user.setPassword("nefu"); user.setAge(12); user.setTel("1234567"); userDao.insert(user); }}

执行测试后,数据库表中就会添加一条数据。

但是你会发现数据中的主键ID,有点长,那这个主键ID是如何来的?我们更想要的是主键自增,应该是5才对,这个是我们后面要学习的主键ID生成策略,这块的这个问题,我们暂时先放放。

删除

在进行删除之前,我们可以分析下删除的方法:

int deleteById (Serializable id)

Serializable:参数类型

String和Number是Serializable的子类,Number又是Float,Double,Integer等类的父类,能作为主键的数据类型都已经是Serializable的子类,MP使用Serializable作为参数类型,就好比我们可以用Object接收任何数据类型一样。

int:返回值类型,数据删除成功返回1,未删除数据返回0。

在测试类中进行新增操作:

@SpringBootTestclass Mybatisplus01QuickstartApplicationTests { @Autowired private UserDao userDao; @Test void testDelete() { userDao.deleteById(1401856123725713409L); }}

注意id是long型,所以L不要掉了

修改

在进行修改之前,我们可以分析下修改的方法:

int updateById(T t);

T:泛型,需要修改的数据内容,注意因为是根据ID进行修改,所以传入的对象中需要有ID属性值int:返回值,修改成功后返回1,未修改数据返回0

在测试类中进行新增操作:

@SpringBootTestclass Mybatisplus01QuickstartApplicationTests { @Autowired private UserDao userDao; @Test void testUpdate() { User user = new User(); user.setId(1L); user.setName("Tom888"); user.setPassword("tom888"); userDao.updateById(user); }}

说明:修改的时候,只修改实体对象中有值的字段。

根据ID查询

在进行根据ID查询之前,我们可以分析下根据ID查询的方法:

T selectById (Serializable id)

Serializable:参数类型,主键ID的值T:根据ID查询只会返回一条数据

在测试类中进行新增操作:

@SpringBootTestclass Mybatisplus01QuickstartApplicationTests { @Autowired private UserDao userDao; @Test void testGetById() { User user = userDao.selectById(2L); System.out.println(user); }}

查询所有

在进行查询所有之前,我们可以分析下查询所有的方法:

List selectList(Wrapper queryWrapper)

Wrapper:用来构建条件查询的条件,目前我们没有可直接传为NullList:因为查询的是所有,所以返回的数据是一个集合

在测试类中进行新增操作:

@SpringBootTestclass Mybatisplus01QuickstartApplicationTests { @Autowired private UserDao userDao; @Test void testGetAll() { List userList = userDao.selectList(null); System.out.println(userList); }}

我们所调用的方法都是来自于DAO接口继承的BaseMapper类中。

里面的方法有很多,我们后面会慢慢去接触里面的内容。

Lombok

代码写到这,我们会发现DAO接口类的编写现在变成最简单的了,里面什么都不用写。反过来看看模型类的编写都需要哪些内容:

私有属性setter…getter…方法toString方法构造函数

虽然这些内容不难,同时也都是通过IDEA工具生成的,但是过程还是必须得走一遍,那么对于模型类的编写有没有什么优化方法?就是我们接下来要学习的Lombok。

概念

Lombok,一个Java类库,提供了一组注解,简化POJO实体类开发。

使用步骤

步骤1:添加lombok依赖

org.projectlombok lombok

注意:版本可以不用写,因为SpringBoot中已经管理了lombok的版本。

步骤2:安装Lombok的插件

新版本IDEA已经内置了该插件,如果删除setter和getter方法程序有报红,则需要安装插件

如果在IDEA中找不到lombok插件,可以访问如下网站

​​class User { private Long id; private String name; private String password; private Integer age; private String tel;}

说明:

Lombok只是简化模型类的编写,我们之前的方法也能用,比如有人会问:我如果只想要有name和password的构造函数,该如何编写?

@Data@AllArgsConstructor@NoArgsConstructorpublic class User { private Long id; private String name; private String password; private Integer age; private String tel; public User(String name, String password) { this.name = name; this.password = password; }}

这种方式是被允许的。

分页功能

分页查询使用的方法是:

IPage selectPage(IPage page, Wrapper queryWrapper)

IPage:用来构建分页查询条件Wrapper:用来构建条件查询的条件,目前我们没有可直接传为NullIPage:返回值,你会发现构建分页条件和方法的返回值都是IPage

IPage是一个接口,我们需要找到它的实现类来构建它,具体的实现类,可以进入到IPage类中按ctrl+h,会找到其有一个实现类为​​Page​​。

步骤1:调用方法传入参数获取返回值

@SpringBootTestclass Mybatisplus01QuickstartApplicationTests { @Autowired private UserDao userDao; //分页查询 @Test void testSelectPage(){ //1 创建IPage分页对象,设置分页参数,1为当前页码,3为每页显示的记录数 IPage page=new Page<>(1,3); //2 执行分页查询 userDao.selectPage(page,null); //3 获取分页结果 System.out.println("当前页码值:"+page.getCurrent()); System.out.println("每页显示数:"+page.getSize()); System.out.println("一共多少页:"+page.getPages()); System.out.println("一共多少条数据:"+page.getTotal()); System.out.println("数据:"+page.getRecords()); }}

步骤2:设置分页拦截器

这个拦截器MP已经为我们提供好了,我们只需要将其配置成Spring管理的bean对象即可。

@Configurationpublic class MybatisPlusConfig { @Bean public MybatisPlusInterceptor mybatisPlusInterceptor(){ //1 创建MybatisPlusInterceptor拦截器对象 MybatisPlusInterceptor mpInterceptor=new MybatisPlusInterceptor(); //2 添加分页拦截器 mpInterceptor.addInnerInterceptor(new PaginationInnerInterceptor()); return mpInterceptor; }}

这个地方@Configuration可以让引导类直接扫描到。当然也可以在引导类里面使用@Import来引入这个配置类。

说明:上面的代码记不住咋办呢?

这些内容在MP的官方文档中有详细的说明,我们可以查看官方文档类配置

步骤3:运行测试程序

如果想查看MP执行的SQL语句,可以修改application.yml配置文件,

mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印SQL日志到控制台

打开日志后,就可以在控制台打印出对应的SQL语句,开启日志功能性能就会受到影响,调试完后记得关闭。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:[SpringBoot]配置文件②(多环境配置,配置文件分类)
下一篇:《白蛇2》为何让小青做大女主,第三部主角没准换成她丨揭秘!
相关文章

 发表评论

暂时没有评论,来抢沙发吧~