Springboot+mybatis最简单的增删改查写法
增删改查估计是每个程序员都痛恨的事情,其实就是复制粘贴,于是乎,小刀就折腾了一个工具类,可以帮大家最大程度上(至少我觉得很简化)去减少些增删改查代码
新的增删改查
不要Controller , 不要xml , 只要mapper 和实体类, 就可以代替原来的controller-mapper-xml
引入依赖
除了常用的springboot相关依赖,要加上小刀打的工具包,整体依赖如下
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-data-redis'
implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.3'
// 小刀打的工具包依赖(已发布到中央仓库)
compile 'red.lixiang.tools:sunshine-starter:1.0.1'
// 这里方便测试,引了h2 , 实际中可以换成mysql
runtimeOnly 'com.h2database:h2'
准备测试表
这里为了代码运行方便,我们直接引入了h2数据库.表结构及测试数据如下:
drop table users if exists;
create table users (
id int,
name varchar(20)
);
insert into users (id, name) values((select count(*) + 1 from users), 'XiaoDao');
insert into users (id, name) values((select count(*) + 1 from users), '公众号:java技术大本营');
insert into users (id, name) values((select count(*) + 1 from users), '微信:best396975802');
编写实体类
这里面的实体类有两个, 一个是和数据库对应的实体类, 一个是查询用的QC,QC中封装了一些和查询相关的通用字段. 数据库对应字段: Users:
public class Users {
// 这个字段标识了是和数据库对应的字段
@SqlField
private Long id;
@SqlField
private String name;
// 这里省略了get/set方法
}
UsersQC:
// 注意这里要继承一下BaseQC
public class UsersQC extends BaseQC {
private Long id;
// 这里的QC注解,按需使用,如这里, 标识name是一个可以模糊查询的字段
@QC(likeQuery = true)
private String name;
}
编写mybatis的mapper文件
// 需要继承BaseMapper,里面封装了基本的增删改查的写法
@Mapper
@Repository
public interface UsersMapper extends BaseMapper<Users> {
// 需要重写这个方法,去完成一些缓存的初始化
@Override
default Class<?> getMapperClass() {
MybatisToolCache.cacheDomain("users",Users.class,UsersQC.class);
return UsersMapper.class;
}
}
编写spring的配置文件
这里面没有什么单独的配置,都是h2数据库的配置,在实际使用中,可以替换成mysql的数据库
#配置数据库连接地址
spring.datasource.platform=h2
#配置数据库驱动
spring.datasource.driver-class-name=org.h2.Driver
#配置数据库用户名
spring.datasource.username=sa
spring.datasource.schema=classpath:test_scheme.sql
spring.datasource.data=classpath:test_data.sql
启动项目
到目前为止,只需要我们写这些代码, Controller小刀直接封装在框架中了,启动项目之后,可以访问 http://127.0.0.1:8080/simple/users/query 看到对应的数据库数据. 同样封装的请求还有获取单个的 http://127.0.0.1:8080/simple/users/get?id=1 新增/保存的 http://127.0.0.1:8080/simple/user/save (post请求) 删除的 http://127.0.0.1:8080/simple/remove?id=1
源码地址
上述文章的代码地址: https://github.com/xiaodaojava/sunshine-sample
工具类的源码地址: https://github.com/xiaodaojava/sunshine
总结
在使用过程中,有什么疑问,欢迎随时私信小刀一起讨论交流~~
- 保护ASP.NET 应用免受 CSRF 攻击
- .NET:Entity Framework 笔记
- redis 学习笔记(1)-编译、启动、停止
- 致研究者:2018 AI研究趋势
- redis 学习笔记(3)-master/slave(主/从模式)
- 解决Chrome或其它WebKit浏览器input和textarea的黄色/蓝色边框问题
- eclipse/intellij Idea集成jetty
- nginx学习(1):编译、安装、启动
- Immutable(不可变)集合
- nginx学习(2):启动gzip、虚拟主机、请求转发、负载均衡
- 使用WiX制作简单MSI安装程序
- 企业应用通用架构图
- CacheManager:–个通用缓存接口抽象类库
- silverlight: http请求的GET及POST示例
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- Linux上创建、列出、删除Docker容器方法总结
- Centos 7.4服务器时间同步配置方法【基于NTP服务】
- PowerBI 通用万能日历模板,想干嘛就干嘛
- Linux持续集成自动化安装Maven的方法
- 在CentOS上安装搭建PHP+Apache+Mysql的服务器环境
- Centos7.4服务器安装apache及安装过程出现的问题解决方法
- ubuntu系统修改时区和时间的方法
- CentOS7 LNMP+phpmyadmin环境搭建 第一篇虚拟机及centos7安装
- flutter 输入框组件TextField的实现代码
- Mac通过不同终端SSH连接远程服务器的讲解
- Linux关于透明大页的使用与禁用介绍
- linux中使用grep命令详解
- linux下使用cmake编译安装mysql的详细教程
- Linux CentOS 7.0中java安装与配置环境变量的步骤详解
- Linux下进程数量的限制pid_max的配置方法