MyBatis-Plus学习——CRUD的使用

Posted sadoshi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MyBatis-Plus学习——CRUD的使用相关的知识,希望对你有一定的参考价值。

前言

MyBatis-Plus对mybatis一些简单crud语句进行了的封装,因此对于不复杂的单表,可以直接使用提供出来的API即可。

 

CRUD接口

通过官网可以看到有两种CRUD接口,一种是Mapper,一种是Service。这两种具体是怎么回事呢?简单说一下,Mapper是相对基础一点的接口,Service是对Mapper再进行了一次封装的接口,Service内部也会调用Mapper的方法。单纯查询效果来说,两者是一样的。只要根据Web框架的层级去使用就好了,Service放Service层,Mapper放Mapper层。

下面展示一下例子。Mapper的例子上一篇文章已经试过了,这里尝试Service的例子

Service示例

在Service层添加UserService接口,继承IService接口。相关的业务逻辑接口可以在下面定义,本例子先留空

package com.sadoshi.mybatisplus.springboottest.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.sadoshi.mybatisplus.springboottest.model.User;

public interface UserService extends IService<User>{

}

 

接着创建其实现类UserServiceImpl,这个类要继承ServiceImpl<UserMapper, User>类,这样Service和Mapper就关联起来了。

package com.sadoshi.mybatisplus.springboottest.serviceImpl;

import org.springframework.stereotype.Component;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.sadoshi.mybatisplus.springboottest.mapper.UserMapper;
import com.sadoshi.mybatisplus.springboottest.model.User;
import com.sadoshi.mybatisplus.springboottest.service.UserService;

@Component
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService{

}

 

接着在UserComponent这个组件类上添加测试方法,同时把UserServiceImpl自动注入到里面。这个方法很简单,同样是select all的效果,查出所有user表里面的数据。

package com.sadoshi.mybatisplus.springboottest.component;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.sadoshi.mybatisplus.springboottest.mapper.UserMapper;
import com.sadoshi.mybatisplus.springboottest.model.User;
import com.sadoshi.mybatisplus.springboottest.serviceImpl.UserServiceImpl;

@Component
public class UserComponent {
	
	@Autowired
    private UserMapper userMapper;
	
	@Autowired
	private UserServiceImpl userServiceImpl;
	
/*
......
*/
	
	public void testServiceImpl() {
		List<User> resultList = userServiceImpl.list();
		for(User user : resultList) {
			System.out.println(user);
		}
	}
}

然后在主类App上调用testServiceImpl方法即可,查看控制台结果

 

Wrapper的使用

几年前做项目的时候,本来项目是用mybatis的。后来新招了一个主程来负责这个项目,他引入MyBatis-Plus,然后冒出来一大堆wrapper,我当时也有点蒙。其实wrapper的使用很简单,可能官网都不屑于写个简单的例子,但一开始接触的同学可能和我一样有些懵逼,稍微给个例子看看估计就明白了。

往UserComponent中添加testQueryWrapper方法。这里设置查询name字段等于tom的记录。

package com.sadoshi.mybatisplus.springboottest.component;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.sadoshi.mybatisplus.springboottest.mapper.UserMapper;
import com.sadoshi.mybatisplus.springboottest.model.User;
import com.sadoshi.mybatisplus.springboottest.serviceImpl.UserServiceImpl;

@Component
public class UserComponent {

/*
......
*/
	
	public void testQueryWrapper() {
		System.out.println(("----- QueryWrapper test ------"));
		QueryWrapper<User> warpper = new QueryWrapper<>();
		warpper.eq("name", "Tom");
		List<User> resultList = userMapper.selectList(warpper);
		for(User user : resultList) {
			System.out.println(user);
		}
	}
}

执行testQueryWrapper方法,得到结果。

wrapper除了QueryWrapper,还有UpdateWrapper,对应update操作。具体的wrapper方法可以通过官网查找,因为有很多,而且可以各种搭配使用,就不一一展示了。

 

分页

Mybatis-Plus也提供了分页的功能,首先引入插件

package com.sadoshi.mybatisplus.springboottest.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;

@Configuration
public class MybatisPlusConfig {

	@Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.mysql));
        return interceptor;
    }
}

 

接着我们写一个测试分页。Page有两个两个参数,第一个代表展示第几页(从1开始算),第二个代表一页有多少条记录。这里wrapper我们先留空。

package com.sadoshi.mybatisplus.springboottest.component;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.sadoshi.mybatisplus.springboottest.mapper.UserMapper;
import com.sadoshi.mybatisplus.springboottest.model.User;
import com.sadoshi.mybatisplus.springboottest.serviceImpl.UserServiceImpl;

@Component
public class UserComponent {
	
	@Autowired
    private UserMapper userMapper;

/*
......
*/
	
	public void testPage() {
		Page page = new Page(2,3);
		QueryWrapper<User> warpper = new QueryWrapper<>();
		userMapper.selectPage(page, warpper);
	}
}

执行后看控制台,已查出4、5、6三条记录了,执行正确。看输出的信息,这个分页插件,底层也是通过limit实现的。

 

以上是关于MyBatis-Plus学习——CRUD的使用的主要内容,如果未能解决你的问题,请参考以下文章

MyBatis-plus的入门学习

推荐使用mybatis-plus逆向生成crud代码,让你开发效率提升50%

推荐使用mybatis-plus逆向生成crud代码,让你开发效率提升50%

Mybatis插件之Mybatis-Plus的CRUD方法

MyBatis-Plus——使用ActiveRecord(AR)实现CRUD

MyBatis-Plus——使用ActiveRecord(AR)实现CRUD