项目结构截图放在文末了,图片太大怕影响观看体验,想模仿搭建项目的可以拉到底看下截图再动手不迟。

第一步:依赖

<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框架搭建相关推荐

  1. springboot 项目实战 基本框架搭建(IDEA)

    springboot 项目实战 基本框架搭建(IDEA) IDEA下载 我使用的是破解的专业版IDEA,使用权一直到2089年: 下载IDEA: 下载processional版本,然后百度搜索激活码即 ...

  2. Springboot整合Quartz任务框架

      分享一篇关于Springboot整合Quartz任务框架在实际开发中的使用,基于SpringBoot2.0+Mybatis+Oracle开发 1. 导入jar包 <!-- 定时任务 --&g ...

  3. spring mvc + mybatis 框架搭建 ( idea + gradle)

    spring mvc + mybatis 框架搭建 idea + gradle 刚刚入门,只是个人见解,如有错误或者问题欢迎指出指正. 邮箱: [ wgh0807@qq.com ] 文章引用: [ap ...

  4. SpringBoot 整合 Dozer 映射框架

    SpringBoot 整合 Dozer 映射框架 1. Dozer 介绍 2. 为什么要使用映射框架 Dozer 3. Dozer 映射框架的使用 1. Dozer 介绍 Dozer 是一个 Java ...

  5. # SpringBoot 整合 Activiti 工作流框架

    SpringBoot 整合 Activiti 工作流框架 Activiti 介绍 Activiti是一个开源的工作流引擎,它实现了BPMN 2.0规范,可以发布设计好的流程定义,并通过api进行流程调 ...

  6. SpringBoot整合Redis+mybatis,封装RedisUtils工具类等实战(附源码)

    点击上方蓝色字体,选择"标星公众号" 优质文章,第一时间送达 关注公众号后台回复pay或mall获取实战项目资料+视频 作者:陈彦斌 cnblogs.com/chenyanbin/ ...

  7. 基于springboot整合了mybatis plus,lombok,log4j2并实现了全局异常处理及统一数据返回格式(code,msg,data)

    1. 背景 由于微服务的流行,我们会动不动就建立一个新的项目作为一个服务,那么项目中的全局异常处理和统一数据格式是很重要的,如果设计不好,不仅开发时很乱,在查询日志时也会相当麻烦,所以我自己设计了一个 ...

  8. 【SpringBoot】tk.mybatis集成,帮你更加傻瓜式的写代码~

    大家日常mybatis开发的时候,有没有发现好多操作基本都差不多,比如通过id进行select.update.delete等等操作,虽然差不多,但是xml文件和mapper接口中也得写这一堆一模一样的 ...

  9. springboot整合springsecurity安全框架(后端spring_security模块代码可直接使用,根据需求自定义修改)

    SpringSecurity简介 最下面有与springboot整合的模块代码 用户认证和用户授权 主要包含两部分:用户认证和用户授权 用户认证:进入用户登录时候,输入用户名密码,查询数据库查看是否正 ...

  10. SpringBoot整合的Mybatis出现的问题:org.springframework.beans.factory.NoSuchBeanDefinitionException:

    在学习springboot整合Mybatis时,遇到的一个错误,跟着老师的步伐敲 结果还是出现了一系列的问题 自己搜了三四个小时都找不出问题(本人比较钻牛角尖!!!...) 出现的报错内容 org.s ...

最新文章

  1. linux c va_list 32位和64位的差异
  2. Yii的action
  3. 如何简单的在 ASP.NET Core 中集成 JWT 认证?
  4. 周至四中计算机老师,周至县第四中学顺利承办周至县 “教育信息化技术与教学课堂深度融合交流研讨会”...
  5. 使用Windows 自带防火墙拦截勒索病毒
  6. Docker学习与总结
  7. 将连接数据库的地址写在web.config里面,后台直接调用
  8. 机器学习笔记(六)数据分类
  9. 使用doctrine的内存耗尽解决办法
  10. Centos7镜像官网下载
  11. 电信光猫 远程服务器,如何禁止电信远程控制服务器修改光猫配置信息
  12. 20个数据可视化工具点评
  13. java HTML转PDF实现
  14. vue项目中引用阿里云图标库
  15. 如何删除计算机guest用户,windows xp系统怎么删除Guest用户
  16. 游戏编程入门学习笔记17——网络篇——显示本机IP
  17. linux系统修改屏幕分辨率6,Linux系统怎么更改屏幕分辨率
  18. Nacos源码之一-配置自动更新(重写)
  19. arcgis符号方向_arcgis符号
  20. 第九章 模板高级进阶

热门文章

  1. 川土微数字隔离器CA-IS36XX高性能数字隔离器 可替代TI ADI MAX等
  2. cad能整体比例缩小吗_cad调整比例(cad整体比例调整)
  3. 如何批量将图片尺寸改成一样大?
  4. 《算法笔记》4.3小节——算法初步->递归
  5. 使用R语言 在rstudio中出现 列的数目比列的名字要多 的问题
  6. 查看创表语句 SHOW CREATE TABLE t_idcard
  7. 拥有奇瑞QQ冰淇淋·桃欢喜才懂的幸福
  8. 华为 Mate 50 系列已经在供应方面取得重大突破,你对此期待吗?
  9. (3)数仓建设-数据仓库设计方案
  10. NDK实践(一)在linux环境下编译ffmpe