SpringBoot整合tkMapper

项目使用SpringBoot2.0,H2数据库,使用了 Lombok 简化代码;本人是刚入门的菜鸟,下面是本人使用SpringBoot整合tkMapper的一个小demo,记录下来本人在此处踩得坑,有需要修正的地方欢迎各路大神、大佬指导,小弟谦虚受教。


1 搭建一个SpringBoot的项目,怎么搭建网上教程一大堆,这里就不描述了直接进入正题,首先先看一下整体的项目结构

2 pom文件引入依赖(注意依赖冲突)

<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!--lombok省略代码--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><!-- h2嵌入式数据--><dependency><groupId>com.h2database</groupId><artifactId>h2</artifactId><scope>runtime</scope></dependency><!-- tk--><dependency><groupId>tk.mybatis</groupId><artifactId>mapper-spring-boot-starter</artifactId><version>RELEASE</version></dependency><dependency><groupId>tk.mybatis</groupId><artifactId>mapper</artifactId><version>3.4.5</version></dependency></dependencies>

3 在resources目录下新建db文件夹,用来存放数据文件,其中schema-h2.sql为数据库 Schema 脚本,data-h2.sql为Data脚本

schema-h2.sql

DROP TABLE IF EXISTS user;CREATE TABLE user
(id BIGINT(20) NOT NULL COMMENT '主键ID',name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',age INT(11) NULL DEFAULT NULL COMMENT '年龄',email VARCHAR(50) NULL DEFAULT NULL COMMENT '邮箱',PRIMARY KEY (id)
);

data-h2.sql

DELETE FROM user;INSERT INTO user (id, name, age, email) VALUES
(1, 'red', 18, 'test1@tian.com'),
(2, 'yll', 20, 'test2@tian.com'),
(3, 'putty', 22, 'test3@tian.com'),
(4, 'ele', 24, 'test4@tian.com'),
(5, 'tom', 26, 'test5@tian.com');

4 application.yml

spring:datasource:driver-class-name: org.h2.Driverschema: classpath:db/schema-h2.sqldata: classpath:db/data-h2.sqlurl: jdbc:h2:mem:rootusername: rootpassword: root

5 在生成的项目路径下新建一个 tk 包,在 tk 包下新建bean包(存放实体类),dao 包(存放 Mapper 接口类),config 包(存放配置类)

tk 包下新建通用 Mapper 接口 MyMapper

继承Mapper和MySqlMapper,以后我们的业务dao直接集成MyMapper即可

此接口不能被扫描到,否则会报错

MyMapper.java

package com.tian.tkmapper;import org.springframework.stereotype.Repository;
import tk.mybatis.mapper.common.Mapper;
import tk.mybatis.mapper.common.MySqlMapper;@Repository
public interface MyMapper<T> extends Mapper<T> ,MySqlMapper<T> {}

bean包下新建User类,此处使用了Lombok省略代码,@Data注解包含get/set等方法

User.java

package com.tian.tkmapper.tk.bean;import lombok.Data;@Data
public class User {private Long id;private String name;private Integer age;private String email;
}

dao包下新建业务接口UserDao

UserDao.java

package com.tian.tkmapper.tk.dao;import com.tian.tkmapper.MyMapper;
import com.tian.tkmapper.tk.bean.User;
import org.springframework.stereotype.Repository;@Repository
public interface UserDao extends MyMapper<User> {
}

config包下新建配置类MybatisConfigurer

MybatisConfigurer.java

package com.tian.tkmapper.tk.config;import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import tk.mybatis.spring.mapper.MapperScannerConfigurer;
import javax.annotation.Resource;
import javax.sql.DataSource;
import java.util.Properties;@Configuration
public class MybatisConfigurer {@Resourceprivate DataSource dataSource;@Beanpublic SqlSessionFactory sqlSessionFactoryBean() throws Exception {SqlSessionFactoryBean bean = new SqlSessionFactoryBean();bean.setDataSource(dataSource);bean.setTypeAliasesPackage("com.tian.tkmapper.tk.bean");//添加XML目录
//        ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
//        bean.setMapperLocations(resolver.getResources("classpath:mapper/*.xml"));return bean.getObject();}@Configuration@AutoConfigureAfter(MybatisConfigurer.class)public static class MyBatisMapperScannerConfigurer {@Beanpublic MapperScannerConfigurer mapperScannerConfigurer() {MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();mapperScannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactoryBean");mapperScannerConfigurer.setBasePackage("com.tian.tkmapper.tk.dao.*");//配置通用mappersProperties properties = new Properties();properties.setProperty("mappers", "com.tian.tkmapper.MyMapper");properties.setProperty("notEmpty", "false");properties.setProperty("IDENTITY", "MYSQL");mapperScannerConfigurer.setProperties(properties);return mapperScannerConfigurer;}}}

6 在启动类添加@MapperScan

package com.tian.tkmapper;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import tk.mybatis.spring.annotation.MapperScan;@SpringBootApplication
@MapperScan(basePackages = "com.tian.tkmapper.tk.dao")//mapper接口的路径
public class TkmapperApplication {public static void main(String[] args) {SpringApplication.run(TkmapperApplication.class, args);}
}

7 测试代码进行测试

package com.tian.tkmapper;import com.tian.tkmapper.tk.bean.User;
import com.tian.tkmapper.tk.dao.UserDao;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import java.util.List;@RunWith(SpringRunner.class)
@SpringBootTest
public class TkmapperApplicationTests {@Autowiredprivate UserDao userDao;@Testpublic void testSelect() {System.out.println(("----- selectAll method test ------"));List<User> userList = userDao.selectAll();Assert.assertEquals(5, userList.size());userList.forEach(System.out::println);}}

最后看到显示输出为如下即成功


8 说一下本人遇到的小坑,划重点了划重点了划重点了,重要的事情说三遍!!!

    a> MyMapper不能被扫描到,解决方案很多,不让启动类启动时扫描到就可以b> 启动类中@MapperScan要引tk包下面的 import tk.mybatis.spring.annotation.MapperScan;c>pom文件依赖冲突,由于本人也是刚入门菜鸟一个,也不是很清楚哪个与哪个冲突,这个有待读者验证,如果有了解的大神可以评论指导,多谢以上就上本人整合通用Mappe时遇见的几个小坑,如有错误多多谅解,欢迎来指导

项目GitHub地址:https://github.com/TianPuJun/tkMapper.git

SpringBoot整合tkMapper相关推荐

  1. springboot2.x整合tkmapper

    springboot整合tkmapper 1.导入pom依赖 1.1 导入springboot的parent依赖 <parent><artifactId>spring-boot ...

  2. SpringBoot第九篇: springboot整合Redis

    这篇文章主要介绍springboot整合redis,至于没有接触过redis的同学可以看下这篇文章:5分钟带你入门Redis. 引入依赖: 在pom文件中添加redis依赖: <dependen ...

  3. es springboot 不设置id_原创 | 一篇解决Springboot 整合 Elasticsearch

    ElasticSearch 结合业务的场景,在目前的商品体系需要构建搜索服务,主要是为了提供用户更丰富的检索场景以及高速,实时及性能稳定的搜索服务. ElasticSearch是一个基于Lucene的 ...

  4. springboot整合shiro使用shiro-spring-boot-web-starter

    此文章仅仅说明在springboot整合shiro时的一些坑,并不是教程 增加依赖 <!-- 集成shiro依赖 --> <dependency><groupId> ...

  5. db2 springboot 整合_springboot的yml配置文件通过db2的方式整合mysql的教程

    springboot整合MySQL很简单,多数据源就master,slave就行了,但是在整合DB2就需要另起一行,以下是同一个yml文件 先配置MySQL,代码如下 spring: datasour ...

  6. 九、springboot整合rabbitMQ

    springboot整合rabbitMQ 简介 rabbitMQ是部署最广泛的开源消息代理. rabbitMQ轻量级,易于在内部和云中部署. 它支持多种消息传递协议. RabbitMQ可以部署在分布式 ...

  7. 八、springboot整合Spring Security

    springboot整合Spring Security 简介 Spring Security是一个功能强大且可高度自定义的身份验证和访问控制框架.它是保护基于Spring的应用程序的事实标准. Spr ...

  8. 六、springboot整合swagger

    六.springboot整合swagger 简介 swagger 提供最强大,最易用的工具,以充分利用OpenAPI规范. 官网 : https://swagger.io/ 准备工作 pom.xml ...

  9. SpringBoot整合mybatis、shiro、redis实现基于数据库的细粒度动态权限管理系统实例(转)...

    SpringBoot整合mybatis.shiro.redis实现基于数据库的细粒度动态权限管理系统实例 shiro 目录(?)[+] 前言 表结构 maven配置 配置Druid 配置mybatis ...

最新文章

  1. 中国大学生创业报告发布
  2. 网站被黑的原因真实案例
  3. 卷积网络和卷积神经网络_卷积神经网络的眼病识别
  4. Unity 协程深入解析与原理
  5. C/C++越来越不行了?让我们看看C++的未来趋势
  6. 微信开发博客——柳峰
  7. JS方面重点摘要(一)
  8. 如何在Mac上创建和使用符号链接?
  9. 深度 | EB级规模大数据平台核心技术揭秘(下)
  10. 列表左右移动 2017-03-23
  11. C语言自学之路九(用C语言编写小游戏-扫雷)
  12. 计算机无法安装小丸工具箱,小丸工具箱电脑版
  13. 联想G480安装CentOS电缆驱动器
  14. java中求矩形面积,java求矩形面积
  15. Vim 为什么把 HJKL 当作光标键?
  16. Py遇到Bad key “text.kerning_factor“ on line 4 in
  17. DDD/ABP 洋葱架构aka整洁架构
  18. 幸运转盘中的芯片——CD4017和NE555
  19. 【译】创意编码之噪音
  20. python实现ping工具

热门文章

  1. python 图像清晰度_图像清晰度评价指标(Python)
  2. 阿里珍贵技术资料免费下载
  3. CentOS7安装MongoDB及基础操作
  4. c语言最弱智的游戏,大行其道的“弱智”游戏
  5. 发票查验平台验证码识别
  6. 昨天的《实话实说》周尚元造飞机
  7. Echats关系图les-miserables的图表详细解析(和弦图)(二)
  8. Ubuntu操作-11 双显卡
  9. 数据安全分类分级实施指南_不平衡数据集分类指南
  10. 系统服务器Fedora和Red Hat Enterprise Linux实用指南(第6版)(上、下册)( 入行必读的Linux圣经)...