一. MP简介

咱们晓得,Mybatis属于一个半自动的ORM框架。之所以说Mybatis是一个半自动的ORM框架,起因是它还须要咱们本人在注解或是映射文件中编写SQL语句,并没有实现齐全的自动化。SQL语句的编写,尽管减少了我的项目和业务需要实现的灵活性,但对一些根本表的操作而言,无疑减少了数据库操作的复杂度,显得没有那么不便。

而Mybatis-Plus则是全自动的ORM框架,依照开闭准则,在不影响Mybatis现有性能的状况下,实现了对Mybatis的性能加强。如果你之前有过Mybatis的应用教训,当初学习Mybatis-Plus几乎就是手到擒来。

明天就带大家来学习一下Mybatis-Plus框架的根本应用,请掏出小本本吧。

二. Mybatis-Plus特点MP具备如下根本特点:通过在实体类中与数据库表进行映射;无需编写SQL语句,简化了CRUD操作;通常实用于单表。

三. MP应用

接下来会在SpringBoot我的项目环境中,带着大家一起应用Mybatis-Plus。

1、新建SpringBoot我的项目创立SpringBoot我的项目的过程,在这里就给大家省略了,如果有不相熟的同学,能够参考之前对于SpringBoot的教程文章

2、增加外围依赖咱们在SpringBoot我的项目中增加须要用到的外围依赖包。

<dependencies>

<dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-web</artifactId></dependency><!-- MySql --><dependency>    <groupId>mysql</groupId>    <artifactId>mysql-connector-java</artifactId>    <version>5.1.47</version></dependency><dependency>    <groupId>com.baomidou</groupId>    <artifactId>mybatis-plus-boot-starter</artifactId>    <version>3.3.1.tmp</version></dependency><!-- 连接池 --><dependency>    <groupId>com.alibaba</groupId>    <artifactId>druid</artifactId>    <version>1.2.8</version></dependency><!--简化bean代码的工具包--><dependency>    <groupId>org.projectlombok</groupId>    <artifactId>lombok</artifactId>    <optional>true</optional>    <version>1.18.4</version></dependency><dependency>    <groupId>junit</groupId>    <artifactId>junit</artifactId>    <version>4.12</version></dependency><dependency>    <groupId>org.slf4j</groupId>    <artifactId>slf4j-log4j12</artifactId>    <version>1.6.4</version></dependency>

</dependencies>


 所以,实体类中就能够省去CRUD办法的代码实现。package com.qf.pro.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qf.pro.pojo.User;

public interface UserDao extends BaseMapper<User> {

//BaseMapper<User> 默认封装了CRUD办法,通过泛型制订了所操作的实体类及表

}

  1. 编写配置类这样当SpringBoot启动时,就能够扫描到dao层代码所在的包。package com.qf.mp2103.dao;

import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
@MapperScan("com.qf.mp2103.dao")
public class MybatisPlusConfig {

@Beanpublic PaginationInterceptor paginationInterceptor(){    return new PaginationInterceptor();}

}

  1. 业务实现咱们要在业务逻辑层里调用各种CRUD办法,这也是Mybatis-Plus比拟外围、重要的点,MybatisPlus会依据之前的配置主动生成SQL语句。package com.qf.mp2103.service.impl;

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.qf.mp2103.dao.UsersDao;
import com.qf.mp2103.pojo.Users;
import com.qf.mp2103.service.UsersService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Service
public class UserServiceImpl implements UsersService {

@Autowiredprivate UsersDao usersDao;@Overridepublic List<Users> findUsers() {    //mybatisplus 主动生成/提供的查询方法    //因为是无条件查问,参数null    return usersDao.selectList(null);}@Overridepublic List<Users> findUsersByCondition(String name) {    //创立QueryWrapper对象    QueryWrapper<Users> wrapper=new QueryWrapper<Users>();    //通过wrapper对象来设置查问条件    //参数1:字段表名    //参数2:所赋值    //eq  等于    wrapper.eq("name",name);    return usersDao.selectList(wrapper);}@Overridepublic List<Users> findUsersByCondition2(int startAge, int endAge) {    QueryWrapper<Users> wrapper=new QueryWrapper<Users>();    //年龄的范畴    wrapper.between("age",startAge,endAge);    return usersDao.selectList(wrapper);}@Overridepublic List<Users> findUsersByCondition3(Users users) {    //多条件查问    QueryWrapper<Users> wrapper=new QueryWrapper<Users>();    //where name='' and age <=

// wrapper.eq(true,"name",users.getUserName());
//// wrapper.le(true,"age",users.getAge());

    //where name='' or age >=    wrapper.eq(true,"name",users.getUserName());    wrapper.ge(false,"age",users.getAge());    return usersDao.selectList(wrapper);}@Overridepublic List<Users> findUsersByCondition4(Users users) {    //含糊查问    QueryWrapper<Users> wrapper=new QueryWrapper<Users>();    //%关键字%    wrapper.like("name",users.getUserName());    //%明    //wrapper.likeLeft()    //李%    //wrapper.likeRight();    return usersDao.selectList(wrapper);}//排序查问@Overridepublic List<Users> findUsers2() {    QueryWrapper<Users> wrapper=new QueryWrapper<Users>();    //设置排序条件    wrapper.orderByDesc("id");    return usersDao.selectList(wrapper);}@Overridepublic List<Users> findUsersByPage(int page, int size) {    //用于分页查问    //select * from users  limit X,X    QueryWrapper<Users> wrapper=new QueryWrapper<Users>();    int start=(page-1)*size;    //拼接    wrapper.last("limit "+start+","+size);    return usersDao.selectList(wrapper);}@Overridepublic List<Users> findUsers3() {    //查问指定列    QueryWrapper<Users> wrapper=new QueryWrapper<Users>();    //设置查问的列    wrapper.select("id","email");    return usersDao.selectList(wrapper);}@Overridepublic boolean addUser(Users users) {    //增加用户    int result=usersDao.insert(users);    return result==1;}@Overridepublic boolean deleteUser(int id) {    //删除用户--单个删除    int result=usersDao.deleteById(id);    //批量删除    //usersDao.deleteBatchIds(List<Integer> list);    return result==1;}@Overridepublic boolean updateUser(Users users) {    //要求表中的主键列是id的名字,应用id列作为条件    int result=usersDao.updateById(users);    //如果主键列的名字不是id,或者条件不是主键id

// QueryWrapper<Users> wrapper=new QueryWrapper<Users>();
// wrapper.eq("email",users.getEmail());
// int result2=usersDao.update(users,wrapper);

    return result==1;}@Overridepublic Users findUersById(int id) {    //依据主键id查问单个对象    return usersDao.selectById(id);}@Overridepublic List<Users> findUsersByIds(List<Integer> list) {    //依据id批量查问    return usersDao.selectBatchIds(list);}@Overridepublic Map<String,Object> findUsersByPage2(int page, int size) {    //如果还有其余条件查问,申明条件结构器进行    //创立分页插件对象    //参数1:显示第几页数据    //参数2:每页显示几条数据    Page<Users> page1=new Page<Users>(page,size);    //依据分页插件对象里的分页条件查问数据    IPage<Users> iPage=usersDao.selectPage(page1,null);    Map<String,Object> map=new HashMap<String, Object>();    //获取总记录数  iPage.getTotal()    map.put("totalCount",iPage.getTotal());    //获取总页数 iPage.getPages()    map.put("totalPage",iPage.getPages());    //获取分页数据    map.put("data",iPage.getRecords());    return map;}@Overridepublic List<Users> findUsers4(int age1, int age2, String email) {    QueryWrapper<Users> queryWrapper=new QueryWrapper<Users>();    queryWrapper.ge("age",age1).le("age",age2).or().likeRight("email",email);    return usersDao.selectList(queryWrapper);}@Overridepublic Users findUsers5(int id) {    //创立实体类对象    Users user=new Users();    user.setId(id);    //申明对象接管查问返回的后果    Users getUser=user.selectById(id);    return getUser;}@Overridepublic void addUsers2(Users users) {    //增加办法    users.insert();}@Overridepublic void updateUsers2(Users users) {    //依据主键更新    users.updateById();}@Overridepublic void deleteUsers2(Users users) {    //依据主键删除    users.deleteById();}public Users findOne(String name){    //依据其余条件查问单个数据,如果多于1条数据,则报异样    //条件结构器    QueryWrapper queryWrapper=new QueryWrapper();    queryWrapper.eq("name",name);    return usersDao.selectOne(queryWrapper);}//查问总记录数public int getUserCount(){    //能够申明条件结构器    return usersDao.selectCount(null);}

}
这样通过以上几个步骤,咱们就学会了Mybatis-Plus的根本应用,心愿明天的文章能够教会大家如何应用Mybatis-Plus。如果你还有纳闷,能够留言我哦。