0-前言

  mybatis plus是对mybatis的增强,集成mybatis plus后,简单的CRUD和分页就不用写了,非常方便,五星推荐;

1-集成

1-1、添加依赖

        <!-- 、集成mybatis-plus  -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.2.</version>
</dependency>

1-2、配置文件增加配置

#mybatis-plus
mybatis-plus.mapper-locations=classpath:mapper/*Mapper.xml
mybatis-plus.type-aliases-package=com.anson.model
mybatis-plus.configuration.map-underscore-to-camel-case=true

1-3、配置类中增加分页bean

    @Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}

1-4、model(工具生成即可)

package com.anson.model;
import java.io.Serializable; public class User implements Serializable
{
//----------------------------
private Integer id;
private String username;
private String password;
private String realname;
//--------------------------- public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public String getUsername() {
return username;
} public void setUsername(String username) {
this.username = username == null ? null : username.trim();
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password == null ? null : password.trim();
} public String getRealname() {
return realname;
} public void setRealname(String realname) {
this.realname = realname == null ? null : realname.trim();
}
}

1-5、mapper(XML)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.anson.dao.UserMapper">
<resultMap id="BaseResultMap" type="com.anson.model.User">
<id column="id" jdbcType="INTEGER" property="id" />
<result column="userName" jdbcType="VARCHAR" property="username" />
<result column="passWord" jdbcType="VARCHAR" property="password" />
<result column="realName" jdbcType="VARCHAR" property="realname" />
</resultMap>
<sql id="Base_Column_List">
id, userName, passWord, realName
</sql> </mapper>

1-6、dao(mapper类),继承 BaseMapper

package com.anson.dao;

import com.anson.model.User;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import javafx.scene.control.Pagination;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import java.util.List; @Repository
public interface UserMapper extends BaseMapper<User>
{
}

1-7、service 继承 ServiceImpl

package com.anson.service;

import com.anson.dao.UserMapper;
import com.anson.model.User;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; @Service
public class UserService extends ServiceImpl<UserMapper, User>
{
@Autowired
UserMapper usermapper;
}

1-8、controller

  看见没,以上基本没有一行代码,但是在controller我们已经可以直接使用增删查改和分页了

//-----------mybatis plus--------------------
//1、增 User user= new User();
user.setId();
user.setUsername("anson");
user.setPassword("");
user.setRealname("王琪琪");
userservice.save(user); }
//2、删
userservice.removeById(id);
//3、查 User b =userservice.getById(id);
//4、改 User update = new User();
update.setId();
update.setUsername("alex2266");
userservice.updateById(update);
}
//5、分页 IPage<User> page=new Page(,);
page = userservice.page(page);

怎么样,是不是很爽,项目中,只有少部分特殊的操作需要单独写SQL和方法,大部分CRUD都不需要写了

2、注意的地方

  mybatis中,对于下划线“_”,默认是转换成大写字母处理的,比如我们数据库表字段“update_time”,mybatis会转换成“updateTime”;

所以,为了避坑,直接给出强制建议(或者说结论):

  1、数据库表设计,不要采用大小写,一律小写,多个单词组合采用下划线连接,如字段“update_time”、“edit_by”

  2、model中,所有采用下划线的字段,转换成驼峰大小写,如:

    “update_time” 在实体类中为:“updateTime”,

    “edit_by” 在实体类中为: “editBy”

3、mybatis plus强大的条件构造器queryWrapper、updateWrapper

  muybatis plus 可以通过条件构造器增加各种查询和更新条件,有以下四种条件构造器(主要用后两种,Lambda则看个人喜好):

    LambdaQueryWrapper :看名称也能明白就是用于Lambda语法使用的查询Wrapper
    LambdaUpdateWrapper : Lambda 更新封装Wrapper
    QueryWrapper : Entity 对象封装操作类,不是用lambda语法
    UpdateWrapper : Update 条件封装,用于Entity对象更新操作

先贴张常用条件构造器函数图(图片来源于网络):

 例子:

        //1、根据条件删除
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper
.isNull("username")
.ge("id", )
.isNotNull("realname");
boolean delete = userservice.remove(queryWrapper); //2、根据条件查询
QueryWrapper<User> queryWrapper2 = new QueryWrapper<>();
queryWrapper2.eq("username", "eee");
User user = userservice.getOne(queryWrapper2); //3、根据条件查询并分页
Page<User> page2 = new Page<>(, );
QueryWrapper<User> queryWrapper3 = new QueryWrapper<>();
queryWrapper3.like("username", "a");
IPage<User> userIPage = userservice.page(page2, queryWrapper3); //4、根据条件更新 User user2 = new User();
user2.setRealname("zhangsan"); UpdateWrapper<User> userUpdateWrapper = new UpdateWrapper<>();
userUpdateWrapper.eq("username", "eee"); boolean update = userservice.update(user, userUpdateWrapper);

小白的springboot之路(十六)、mybatis-plus 的使用的更多相关文章

  1. 小白的springboot之路(六)、跨域解决方案CORS

    0-前言 前后端分离.分布式集群,经常都会涉及到跨域访问,而浏览器基于同源策略,正常情况下是不能跨域的,这就需要我们解决跨域访问问题:spring boot解决跨域也比较简单: 1-CORS跨域解决方 ...

  2. 小白的springboot之路(一)、环境搭建、第一个实例

    小白的springboot之路(一).环境搭建.第一个实例 0- 前言 Spring boot + spring cloud + vue 的微服务架构技术栈,那简直是爽得不要不要的,怎么爽法,自行度娘 ...

  3. 小白的springboot之路(十五)、mybatis的PageHelper分页插件使用

    0.前言 用mybatis,那么分页必不可少,基本都是用PageHelper这个分页插件,好用方便: 1.实现 1.1.添加依赖: <!-- 3.集成 mybatis pagehelper--& ...

  4. 小白的springboot之路(三)、集成mybatis与MySQL

    0.前言 mybatis属于半自动的ORM,相比hibernate这种全自动的ORM,兼顾了性能与易用:目前企业项目中,基本都是mybatis的天下:今天就来整合mybatis与MySQL: 1.整合 ...

  5. 小白的springboot之路(十)、全局异常处理

    0.前言 任何系统,我们不会傻傻的在每一个地方进行异常捕获和处理,整个系统一般我们会在一个的地方统一进行异常处理,spring boot全局异常处理很简单: 介绍前先说点题外话,我们现在开发系统,都是 ...

  6. 小白的springboot之路(十四)、AOP

    0.前言 1.什么是AOP AOP(面向切面编程),是一种横切技术,是对OOP的补充和完善: 使用AOP的横切,可以对系统进行无侵入性的日志监听.事务.权限管理等: 思想上跟拦截器其实类似;拦截器是对 ...

  7. 小白的springboot之路(十二)、集成log4j2日志

    0.前言 日志记录对系统来说必不可少,spring boot中常用的日志组件有log4j.logback.log4j2,其中logback是spring boot默认的,已自带:选用log4j2就可以 ...

  8. 小白的springboot之路(十八)、i18n多语言支持(后端篇)

    0-前言 在有些系统中,比如网站,往往需要支持多国语言,英文版中文版什么的,这个其实也不难: 今天我们就来介绍spring boot中用i18n在后端支持多语言: 当然,也可以直接在前端用i18n直接 ...

  9. 小白的springboot之路(十九)、集成swagger(com.spring4all篇)

    0-前言 集成swagger,有两种方式: 一种在前面已经介绍过了,直接集成官方的springfox-swagger2的方式,这种方式需要在配置类中配置 第二种方式是这里要介绍的方式,国人写的com. ...

随机推荐

  1. 混合欧拉回路poj 1637 Sightseeing tour

    把该图的无向边随便定向,计算每个点的入度和出度.如果有某个点出入度之差为奇数,那么肯定不存在欧拉回路.因为欧拉回路要求每点入度 = 出度,也就是总度数为偶数,存在奇数度点必不能有欧拉回路: 好了,现在 ...

  2. q检验|新复极差法|LSD|二因素方差分析

    生物统计与实验设计 放大程度q检验:精度较高>新复极差法:各种错误比较平均>LSD 其中,LSD不随M的变化而变化,但是SSR和q-test会随M变化而变化. 第一步代表了方差分析的核心思 ...

  3. Amsterdam Distance

    题目描述 Your friend from Manhattan is visiting you in Amsterdam. Because she can only stay for a short ...

  4. Navicat 12 无限期试用

    最近发现navicat12又过期了,以前的是用的破解软件,然后是到1899年过期哈哈哈哈哈哈.重装了系统后,软件也重装了,发现破解软件不好使了,就先试用了,现在到期了.很是难受,这可咋整,不过在网上看 ...

  5. django框架进阶-ModelForm组件-长期维护

    ############################################################ """ 通常在Django项目中,我们编写的大部 ...

  6. Robustness|Variability|Diversification|Complexity|自组装|

    生命组学 进化方向有以下四个特性:Robustness:变稳定,比如杀虫剂最大浓度也有杀不死的虫子.Variability易变性与Diversification多样性,容易变多和变多.Complexi ...

  7. VDMA搭建视频通路总结

    全局观查,对整个工程的搭建的关键是要保证PL部分搭建成功,PS部分搭建成功,而且两者配合的很好. 我理解的PL部分涉及到模块的组合以及模块或者IP之间的逻辑的整理,PL部分困扰我比较久的是自动生成的w ...

  8. docker pull很慢解决办法

    经常拉取镜像的时候很慢或者拉不下来,这里可以使用阿里云镜像加速器,然后试试看有没有效果. ##使用阿里云镜像加速器 [root@localhost ~]# mkdir -p /etc/docker [ ...

  9. centos7 开机/etc/rc.local 不执行的问题(转载)

    最近发现centos7 的/etc/rc.local不会开机执行,于是认真看了下/etc/rc.local文件内容的就发现了问题的原因了 #!/bin/bash # THIS FILE IS ADDE ...

  10. hibernate lazy属性参数说明

    lazy,延迟加载 Lazy的有效期:只有在session打开的时候才有效:session关闭后lazy就没效了. lazy策略可以用在: * <class>标签上:可以取值true/fa ...