springboot整合tk-mybatis框架搭建
项目结构截图放在文末了,图片太大怕影响观看体验,想模仿搭建项目的可以拉到底看下截图再动手不迟。
第一步:依赖
<properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!--spring-boot mybatis依赖--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.3.2</version></dependency><!--mysql依赖--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><!--spring-boot web依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--添加tk-mapper依赖--><dependency><groupId>tk.mybatis</groupId><artifactId>mapper-spring-boot-starter</artifactId><version>2.1.5</version></dependency><!--druid依赖--><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.3</version></dependency><!--lombok依赖--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency></dependencies>
第二步:配置数据库信息,开启执行SQL打印
server:port: 6677
spring:#数据源配置datasource:type: com.alibaba.druid.pool.DruidDataSource #Druid连接池url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=falseusername: root #数据库用户名password: 123456 #数据库密码driver-class-name: com.mysql.cj.jdbc.Driver #mysql驱动initialSize: 10 #初始化连接池大小minIdle: 10 #初始化最小连接池数量maxActive: 100 #初始化最大连接池数量maxWait: 6000 #配置获取连接等待超时的时间timeBetweenEvictionRunsMills: 6000 #配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒minEvictableIdleTimeMillis: 30000 #配置一个连接在池中最小生存的时间,单位是毫秒validationQuery: SELECT 'x' #测试连接#tk-mybatis执行数据库操作的时候打印SQL日志(debug前面的key是mapper文件的包名,一定不能写错,否则打印不出日志)
logging:level:com.slm.tkmybatis.project.dao: debug
mybatis:mapper-locations: classpath:/mapper/*.xml
第三步:配置通用mapper
①mapper配置
/*** 通用mapper配置了类*/
@Configuration
@AutoConfigureAfter(MybatisAutoConfiguration.class)
public class MapperScannerConfig {@Beanpublic MapperScannerConfigurer mapperScannerConfigurer(){MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();mapperScannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactory");//mapper类的包名--即操作数据库的对应到数据表的Mapper.java类的包名mapperScannerConfigurer.setBasePackage("com.slm.tkmybatis.project.dao");Properties properties = new Properties();properties.setProperty("mappers", BaseMapper.class.getName());properties.setProperty("notEmpty","false");properties.setProperty("IDENTITY", "MYSQL");properties.setProperty("ORDER","BEFORE");mapperScannerConfigurer.setProperties(properties);return mapperScannerConfigurer;}
}
②基础删除功能mapper
public interface DeleteMapper<T> extends Marker,tk.mybatis.mapper.common.base.delete.DeleteMapper<T>,DeleteByPrimaryKeyMapper<T>,DeleteByConditionMapper<T>,DeleteByIdsMapper<T>{
}
③基础新增功能mapper
public interface InsertMapper<T> extends Marker,tk.mybatis.mapper.common.base.BaseInsertMapper<T>,InsertSelectiveMapper<T>,MySqlMapper<T>{
}
④基础查询功能mapper
public interface SelectMapper<T> extends Marker,SelectOneMapper<T>,tk.mybatis.mapper.common.base.select.SelectMapper<T>,SelectAllMapper<T>,SelectCountMapper<T>,SelectByPrimaryKeyMapper<T>,ExistsWithPrimaryKeyMapper<T>,SelectByIdsMapper<T>,SelectByConditionMapper<T>,SelectCountByConditionMapper<T>,SelectByExampleMapper<T>
{
}
⑤基础修改功能mapper
public interface UpdateMapper<T> extends Marker,UpdateByPrimaryKeyMapper<T>,UpdateByPrimaryKeySelectiveMapper<T>,UpdateByConditionMapper<T>,UpdateByConditionSelectiveMapper<T>,UpdateByExampleSelectiveMapper<T> {
}
⑥基础增删改查功能mapper
public interface BaseMapper<T> extends InsertMapper<T>,DeleteMapper<T>,UpdateMapper<T>,SelectMapper<T>, ConditionMapper<T>, IdsMapper<T>, ExampleMapper<T>, InsertListMapper<T>{
}
第四步:创建业务mapper(这里只是创建业务mapper,先不写具体接口,继承BaseMapper后就可以使用BaseMapper的基础方法了)
@Mapper
public interface UserMapper extends BaseMapper<User> {}
第五步:创建实体类
@Data
@Table(name="user")
public class User implements Serializable {//在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地相应实体类的serialVersionUID进行比较,如果相同就认为是一致的,可以进行反序列化,否则就会出现序列化版本不一致的异常。private static final long serialVersionUID = 190783327737397579L;@Id@GeneratedValue(strategy = GenerationType.IDENTITY,generator = "JDBC")private Integer id;@Columnprivate String userName;@Columnprivate String userPhone;}
第六步:创建controller
@RestController
@RequestMapping("tk")
public class TKMybatisController {@ResourceUserMapper userMapper;@GetMapping("getUser")public Map<String,Object> getUser(){Map<String,Object> result = new HashMap<>();//selectByPrimaryKey是框baseMapper中的方法,我并没有在mapper中写这个方法User user = userMapper.selectByPrimaryKey(1);result.put("code",200);result.put("data",user);return result;}
}
数据库脚本
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (`id` int(11) NOT NULL AUTO_INCREMENT,`user_name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`user_phone` varchar(11) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,PRIMARY KEY (`id`) USING BTREE,INDEX `user_name_index`(`user_name`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES (1, '比比东', '123456');
INSERT INTO `user` VALUES (2, '千仞雪', '123456');
第七步:测试
第八步:三种 写法
①调用baseMapper基础方法
User user = userMapper.selectByPrimaryKey(1);
在上面的测试接口getUser中我用基础mapper中的selectByPrimaryKey写了个接口
②xml文件中写原生SQL(mapper.xml和mapper.java文件分别在哪个路径下创建不知道的可以拉到文末看截图)
- mapper接口==(文件名:UserMapper.java)==
@Mapper
public interface UserMapper extends BaseMapper<User> {User selectById(@Param("id") Integer id);}
- mapper.xml (文件名:UserMapper.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.slm.tkmybatis.project.dao.UserMapper"><select id="selectById" resultType="com.slm.tkmybatis.project.model.User">select id,user_name as userName,user_phone as userPhone from user where id=${id}</select>
</mapper>
mapper接口和mapper的xml文件的文件名一定要一致
③mapper接口中通过tk-mybatis注解写原生SQL语句
@Mapper
public interface UserMapper extends BaseMapper<User> {@Select("select id,user_name as userName,user_phone as userPhone from user where id=${id}")User searchUser(@Param("id") Integer id);
}
感觉这三种写法各自有适合的应用场景,后面学习中再摸索吧,下篇文章研究研究根据库表结构自动生成mapper和实体
项目结构图:
springboot整合tk-mybatis框架搭建相关推荐
- springboot 项目实战 基本框架搭建(IDEA)
springboot 项目实战 基本框架搭建(IDEA) IDEA下载 我使用的是破解的专业版IDEA,使用权一直到2089年: 下载IDEA: 下载processional版本,然后百度搜索激活码即 ...
- Springboot整合Quartz任务框架
分享一篇关于Springboot整合Quartz任务框架在实际开发中的使用,基于SpringBoot2.0+Mybatis+Oracle开发 1. 导入jar包 <!-- 定时任务 --&g ...
- spring mvc + mybatis 框架搭建 ( idea + gradle)
spring mvc + mybatis 框架搭建 idea + gradle 刚刚入门,只是个人见解,如有错误或者问题欢迎指出指正. 邮箱: [ wgh0807@qq.com ] 文章引用: [ap ...
- SpringBoot 整合 Dozer 映射框架
SpringBoot 整合 Dozer 映射框架 1. Dozer 介绍 2. 为什么要使用映射框架 Dozer 3. Dozer 映射框架的使用 1. Dozer 介绍 Dozer 是一个 Java ...
- # SpringBoot 整合 Activiti 工作流框架
SpringBoot 整合 Activiti 工作流框架 Activiti 介绍 Activiti是一个开源的工作流引擎,它实现了BPMN 2.0规范,可以发布设计好的流程定义,并通过api进行流程调 ...
- SpringBoot整合Redis+mybatis,封装RedisUtils工具类等实战(附源码)
点击上方蓝色字体,选择"标星公众号" 优质文章,第一时间送达 关注公众号后台回复pay或mall获取实战项目资料+视频 作者:陈彦斌 cnblogs.com/chenyanbin/ ...
- 基于springboot整合了mybatis plus,lombok,log4j2并实现了全局异常处理及统一数据返回格式(code,msg,data)
1. 背景 由于微服务的流行,我们会动不动就建立一个新的项目作为一个服务,那么项目中的全局异常处理和统一数据格式是很重要的,如果设计不好,不仅开发时很乱,在查询日志时也会相当麻烦,所以我自己设计了一个 ...
- 【SpringBoot】tk.mybatis集成,帮你更加傻瓜式的写代码~
大家日常mybatis开发的时候,有没有发现好多操作基本都差不多,比如通过id进行select.update.delete等等操作,虽然差不多,但是xml文件和mapper接口中也得写这一堆一模一样的 ...
- springboot整合springsecurity安全框架(后端spring_security模块代码可直接使用,根据需求自定义修改)
SpringSecurity简介 最下面有与springboot整合的模块代码 用户认证和用户授权 主要包含两部分:用户认证和用户授权 用户认证:进入用户登录时候,输入用户名密码,查询数据库查看是否正 ...
- SpringBoot整合的Mybatis出现的问题:org.springframework.beans.factory.NoSuchBeanDefinitionException:
在学习springboot整合Mybatis时,遇到的一个错误,跟着老师的步伐敲 结果还是出现了一系列的问题 自己搜了三四个小时都找不出问题(本人比较钻牛角尖!!!...) 出现的报错内容 org.s ...
最新文章
- linux c va_list 32位和64位的差异
- Yii的action
- 如何简单的在 ASP.NET Core 中集成 JWT 认证?
- 周至四中计算机老师,周至县第四中学顺利承办周至县 “教育信息化技术与教学课堂深度融合交流研讨会”...
- 使用Windows 自带防火墙拦截勒索病毒
- Docker学习与总结
- 将连接数据库的地址写在web.config里面,后台直接调用
- 机器学习笔记(六)数据分类
- 使用doctrine的内存耗尽解决办法
- Centos7镜像官网下载
- 电信光猫 远程服务器,如何禁止电信远程控制服务器修改光猫配置信息
- 20个数据可视化工具点评
- java HTML转PDF实现
- vue项目中引用阿里云图标库
- 如何删除计算机guest用户,windows xp系统怎么删除Guest用户
- 游戏编程入门学习笔记17——网络篇——显示本机IP
- linux系统修改屏幕分辨率6,Linux系统怎么更改屏幕分辨率
- Nacos源码之一-配置自动更新(重写)
- arcgis符号方向_arcgis符号
- 第九章 模板高级进阶
热门文章
- 川土微数字隔离器CA-IS36XX高性能数字隔离器 可替代TI ADI MAX等
- cad能整体比例缩小吗_cad调整比例(cad整体比例调整)
- 如何批量将图片尺寸改成一样大?
- 《算法笔记》4.3小节——算法初步->递归
- 使用R语言 在rstudio中出现 列的数目比列的名字要多 的问题
- 查看创表语句 SHOW CREATE TABLE t_idcard
- 拥有奇瑞QQ冰淇淋·桃欢喜才懂的幸福
- 华为 Mate 50 系列已经在供应方面取得重大突破,你对此期待吗?
- (3)数仓建设-数据仓库设计方案
- NDK实践(一)在linux环境下编译ffmpe