小白的springboot之路(十六)、mybatis-plus 的使用
0-前言
mybatis plus是对mybatis的增强,集成mybatis plus后,简单的crud和分页就不用写了,非常方便,五星推荐;
1-集成
1-1、添加依赖
<!-- 9、集成mybatis-plus --> <dependency> <groupid>com.baomidou</groupid> <artifactid>mybatis-plus-boot-starter</artifactid> <version>3.2.0</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(6); user.setusername("anson"); user.setpassword("1236216"); user.setrealname("王琪琪"); userservice.save(user); } //2、删
userservice.removebyid(id); //3、查 user b =userservice.getbyid(id); //4、改 user update = new user(); update.setid(6); update.setusername("alex2266"); userservice.updatebyid(update); } //5、分页 ipage<user> page=new page(1,3); 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", 12) .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<>(1, 5); 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之路(十三)、过滤器、监听器、拦截器
-
小白的springboot之路(十四)、AOP
-
小白的springboot之路(七)、事务支持
-
小白的springboot之路(十二)、集成log4j2日志
-
小白的springboot之路(十一)、构建后台RESTfull API
-
小白的springboot之路(十)、全局异常处理
-
小白的springboot之路(十六)、mybatis-plus 的使用
-
小白的springboot之路(八)、继承Redis以及@Cacheable注解实现Redis缓存
-
使用Jenkins配置SpringBoot的*成长之路
-
使用Jenkins配置SpringBoot的*成长之路