Mybatis-Plus 真好用(乡村爱情加持)

写在前面

MyBatis的增强方案确实有不少,甚至有种感觉是现在如果只用 “裸MyBatis”,不来点增强插件都不好意思了。这不,在上一篇文章《Spring Boot项目利用MyBatis Generator进行数据层代码自动生成》 中尝试了一下 MyBatis Generator。这次来点更加先进的 Mybatis-Plus,SQL语句都不用写了,分页也是自动完成,嗯,真香!

数据库准备

CREATE TABLE tbl_user

(

user_id BIGINT(20) NOT NULL COMMENT '主键ID',

user_name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',

user_age INT(11) NULL DEFAULT NULL COMMENT '年龄',

PRIMARY KEY (user_id)

) charset = utf8;

MyBatis-Plus加持

工程搭建 (不赘述了)

依赖引入

com.baomidou

mybatis-plus-boot-starter

3.1.0

org.projectlombok

lombok

com.alibaba

druid-spring-boot-starter

1.1.9

mysql

mysql-connector-java

runtime

8.0.12

主要是 Mybatis Plus、Lombok(不知道Lombok干嘛的?可以看这里)、Druid连接池 等依赖。

MyBatis Plus配置

项目配置

mybatis-plus:

mapper-locations: classpath:/mapper/*Mapper.xml

新增 MyBatis Plus配置类

@Configuration

@MapperScan("cn.codesheep.springbtmybatisplus.mapper")

public class MyBatisConfig {

}

看到没,几乎零配置啊,下面就可以写业务逻辑了

业务编写

实体类

@Data

@TableName("tbl_user")

public class User {

@TableId(value = "user_id")

private Long userId;

private String userName;

private Integer userAge;

}

Mapper类

public interface UserMapper extends BaseMapper {

}

这里啥接口方法也不用写,就可以实现增删改查了!

Service类

Service接口:

public interface UserService extends IService {

int insertUser( User user );

int updateUser( User user );

int deleteUser( User user );

User findUserByName( String userName );

IPage getUserPage( Page page, User user );

}

Service实现:

@Service

@AllArgsConstructor

public class UserServiceImpl extends ServiceImpl implements UserService {

// 增

@Override

public int insertUser(User user) {

return baseMapper.insert( user );

}

// 改

@Override

public int updateUser(User user) {

return baseMapper.updateById( user );

}

// 删

@Override

public int deleteUser(User user) {

return baseMapper.deleteById( user.getUserId() );

}

// 查

@Override

public User findUserByName( String userName ) {

return baseMapper.getUserByName( userName );

}

}

Controller类

@RestController

@RequestMapping("/user")

public class UserContorller {

@Autowired

private UserService userService;

// 增

@PostMapping( value = "/insert")

public Object insert( @RequestBody User user ) {

return userService.insertUser( user );

}

// 改

@PostMapping( value = "/update")

public Object update( @RequestBody User user ) {

return userService.updateUser( user );

}

// 删

@PostMapping( value = "/delete")

public Object delete( @RequestBody User user ) {

return userService.deleteUser( user );

}

// 查

@GetMapping( value = "/getUserByName")

public Object getUserByName( @RequestParam String userName ) {

return userService.findUserByName( userName );

}

}

通过以上几个简单的步骤,我们就实现了 tbl_user表的增删改查,传统 MyBatis的 XML文件一个都不需要写!

实际实验【《乡爱》加持】

启动项目

很牛批的 logo就会出现

接下来通过 Postman来发送增删改查的请求

插入记录

通过 Postman随便插入几条记录 POST localhost:8089/user/insert

{"userId":3,"userName":"刘能","userAge":"58"}

{"userId":4,"userName":"赵四","userAge":"58"}

{"userId":5,"userName":"谢广坤","userAge":"58"}

{"userId":6,"userName":"刘大脑袋","userAge":"58"}

修改记录

修改记录时需要带用户ID,比如我们修改 赵四 那条记录的名字为 赵四(Zhao Four)

删除记录

修改记录时同样需要带用户ID,比如删除ID=6 那条 刘大脑袋的记录

查询记录(普通查询,下文讲分页查询)

比如,按照名字来查询:GET localhost:8089/user/getUserByName?userName=刘能

最关心的分页问题

首先装配分页插件

@Bean

public PaginationInterceptor paginationInterceptor() {

return new PaginationInterceptor();

}

Mapper类

public interface UserMapper extends BaseMapper {

// 普通查询

User getUserByName( String userName );

// 分页查询

IPage> getUsersPage( Page page, @Param("query") User user );

}

Service类

@Service

@AllArgsConstructor

public class UserServiceImpl extends ServiceImpl implements UserService {

// 查:普通查

@Override

public User findUserByName( String userName ) {

return baseMapper.getUserByName( userName );

}

// 分页查

@Override

public IPage getUserPage(Page page, User user) {

return baseMapper.getUsersPage( page, user );

}

}

Controller类

@GetMapping( value = "/page")

public Object getUserPage( Page page, User user ) {

return userService.getUserPage( page, user );

}

实际实验一下,我们分页查询 年龄 = 58 的多条记录:

可以看到结果数据中,除了给到当前页数据,还把总记录条数,总页数等一并返回了,很是优雅呢 !

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 196,264评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,549评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,389评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,616评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,461评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,351评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,776评论 3 387
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,414评论 0 255
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,722评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,760评论 2 314
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,537评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,381评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,787评论 3 300
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,030评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,304评论 1 252
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,734评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,943评论 2 336

推荐阅读更多精彩内容