使用SpringBoot+TKmybatis+mysql实现简单demo(后台管理增删改查)
目录
- 一、概念
- 二、TKmybatis的使用
-
- 1.Springboot项目中加入tk.mybatis依赖
- 2.创建实体类
- 3.base类
- 4.定义dao
- 5.定义Controller
-
- 5.1 新增 insertSelective
- 5.2 编辑updateByPrimaryKeySelective
- 5.3 查看详情 selectByPrimaryKey
- 5.4 查看单条记录 selectOne
- 5.5 查看所有 selectAll
- 5.6 根据条件(and) 查看列表 selectByExample
- 5.7 根据条件(or) 查看列表 selectByExample
- 5.8 分页查看用户列表 PageHelper、selectByExample
- 5.9 限制条数查询 selectByExampleAndRowBounds
- 5.10(条件1 and 条件2) or ( 条件3 and 条件4) 查看
- 5.11(条件1 or 条件2) and 条件3查看
- 6.启动类中配置
- 7.进行测试
- 8.完整代码
一、概念
1.TKmybatis 是什么?
TKmybatis 是基于 Mybatis 框架开发的一个工具
,通过调用它提供的方法实现对单表
的数据操作,不需要写任何 sql 语句
,这极大地提高了项目开发效率。
2.TKmybatis 与 mybatis-plus
可参考https://www.codeleading.com/article/98311983977/
3.TKmybatis的底层原理
TKmybatis 的封装依赖一个 @SelectProvider 注解
来完成,如果你使用过 @Select 注解,那么 @SelectProvider 与它没有质的区别,只是在定义注解的方式上有所不同, 一个是直接定义 sql, 一个是在外部定义好 sql 直接引用。
增删改查依赖注解:@InsertProvider 注解、@DeleteProvider 注解、@UpdateProvider 注解、@SelectProvider 注解
public interface Mapper {
@Select("select user_id,user_name from t_user ")
List<Map<String, String>> getUserInfo();
}
public interface SelectAllMapper<T> {
@SelectProvider(type = BaseSelectProvider.class,method ="dynamicSQL"
)
List<T> selectAll();
}
@SelectProvider 引用的各种 *Provider.class 实现类,就是依赖反射、注解
等手段拼接 SQL 语句
的过程。
/**
* 查看全部
*/
public String selectAll(MappedStatement ms) {
Class<?> entityClass = this.getEntityClass(ms);
this.setResultType(ms, entityClass);
StringBuilder sql = new StringBuilder();
sql.append(SqlHelper.selectAllColumns(entityClass));
sql.append(SqlHelper.fromTable(entityClass, this.tableName(entityClass)));
sql.append(SqlHelper.orderByDefault(entityClass));
return sql.toString();
}
TKmybatis 底层源码如下:
二、TKmybatis的使用
springBoot整合tkMybatis实现步骤:
1: 引入依赖
2: 实体类配置注解(@Id @Table)
3: Mapper继承tk的接口
4:启动类定义扫描Mapper接口的路径(@MapperScan)
5:配置文件定义扫描mapper.xml文件的路径(yml 或者 properties文件)
6:调用tk提供的接口和数据库交互
1.Springboot项目中加入tk.mybatis依赖
在pom.xml中引入tk.mybatis的引用:
<!--tk.mybatis依赖-->
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>1.2.4</version>
</dependency>
<!--web依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--mysql驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
配置 application.yml:
# 服务端口
server:
port: 8083
# 数据源配置
spring:
datasource:
name: test
url: jdbc:mysql://localhost:3306/db_user?&allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useSSl=false
username: root
password: root
driver-class-name: com.mysql.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
## 配置连接池信息
## 初始化大小,最小,最大
initialSize: 5
minIdle: 5
maxActive: 30
## 配置获取连接等待超时的时间
maxWait: 60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
timeBetweenEvictionRunsMillis: 60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
minEvictab