SpringBoot整合tkMapper的方法
SpringBoot整合tkMapper
項(xiàng)目使用SpringBoot2.0,H2數(shù)據(jù)庫(kù),使用了 Lombok 簡(jiǎn)化代碼;本人是剛?cè)腴T的菜鳥,下面是本人使用SpringBoot整合tkMapper的一個(gè)小demo,記錄下來(lái)本人在此處踩得坑,有需要修正的地方歡迎各路大神、大佬指導(dǎo),小弟謙虛受教。
1 搭建一個(gè)SpringBoot的項(xiàng)目,怎么搭建網(wǎng)上教程一大堆,這里就不描述了直接進(jìn)入正題,首先先看一下整體的項(xiàng)目結(jié)構(gòu)
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嵌入式數(shù)據(jù)--> <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文件夾,用來(lái)存放數(shù)據(jù)文件,其中schema-h2.sql為數(shù)據(jù)庫(kù) 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.Driver schema: classpath:db/schema-h2.sql data: classpath:db/data-h2.sql url: jdbc:h2:mem:root username: root password: root
5 在生成的項(xiàng)目路徑下新建一個(gè) tk 包,在 tk 包下新建bean包(存放實(shí)體類),dao 包(存放 Mapper 接口類),config 包(存放配置類)
tk 包下新建通用 Mapper 接口 MyMapper
繼承Mapper和MySqlMapper,以后我們的業(yè)務(wù)dao直接集成MyMapper即可
此接口不能被掃描到,否則會(huì)報(bào)錯(cuò)
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包下新建業(yè)務(wù)接口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 { @Resource private DataSource dataSource; @Bean public 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 { @Bean public MapperScannerConfigurer mapperScannerConfigurer() { MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer(); mapperScannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactoryBean"); mapperScannerConfigurer.setBasePackage("com.tian.tkmapper.tk.dao.*"); //配置通用mappers Properties properties = new Properties(); properties.setProperty("mappers", "com.tian.tkmapper.MyMapper"); properties.setProperty("notEmpty", "false"); properties.setProperty("IDENTITY", "MYSQL"); mapperScannerConfigurer.setProperties(properties); return mapperScannerConfigurer; } } }
6 在啟動(dòng)類添加@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 測(cè)試代碼進(jìn)行測(cè)試
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 { @Autowired private UserDao userDao; @Test public void testSelect() { System.out.println(("----- selectAll method test ------")); List<User> userList = userDao.selectAll(); Assert.assertEquals(5, userList.size()); userList.forEach(System.out::println); } }
最后看到顯示輸出為如下即成功
8 說(shuō)一下本人遇到的小坑,劃重點(diǎn)了劃重點(diǎn)了劃重點(diǎn)了,重要的事情說(shuō)三遍?。?!
a> MyMapper不能被掃描到,解決方案很多,不讓啟動(dòng)類啟動(dòng)時(shí)掃描到就可以 b> 啟動(dòng)類中@MapperScan要引tk包下面的 import tk.mybatis.spring.annotation.MapperScan; c>pom文件依賴沖突,由于本人也是剛?cè)腴T菜鳥一個(gè),也不是很清楚哪個(gè)與哪個(gè)沖突,這個(gè)有待讀者驗(yàn)證,如果有了解的大神可以評(píng)論指導(dǎo),多謝 以上就上本人整合通用Mappe時(shí)遇見的幾個(gè)小坑,如有錯(cuò)誤多多諒解,歡迎來(lái)指導(dǎo)
到此這篇關(guān)于SpringBoot整合tkMapper的方法的文章就介紹到這了,更多相關(guān)SpringBoot整合tkMapper內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring?Boot實(shí)現(xiàn)web.xml功能示例詳解
這篇文章主要介紹了Spring?Boot實(shí)現(xiàn)web.xml功能,通過(guò)本文介紹我們了解到,在Spring Boot應(yīng)用中,我們可以通過(guò)注解和編程兩種方式實(shí)現(xiàn)web.xml的功能,包括如何創(chuàng)建及注冊(cè)Servlet、Filter以及Listener等,需要的朋友可以參考下2023-09-09Java中Cron表達(dá)式的生成解析及計(jì)算的工具類完整代碼
這篇文章主要給大家介紹了關(guān)于Java中Cron表達(dá)式的生成解析及計(jì)算工具類的相關(guān)資料,Cron表達(dá)式是一個(gè)字符串,字符串空格分割,每一個(gè)域代表一個(gè)含義,一個(gè)cron表達(dá)式有至少6個(gè),需要的朋友可以參考下2023-12-12Java中String的intern()方法詳細(xì)說(shuō)明
這篇文章主要介紹了Java中String的intern()方法詳細(xì)說(shuō)明,String::intern()是一個(gè)本地方法,他的作用就是如果字符串常量池中已經(jīng)包含了一個(gè)等于此String對(duì)象的字符串,則返回代表池中的這個(gè)字符串額String對(duì)象的引用,需要的朋友可以參考下2023-11-11java實(shí)現(xiàn)簡(jiǎn)單的俄羅斯方塊
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)簡(jiǎn)單的俄羅斯方塊,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01Springboot?Vue實(shí)現(xiàn)單點(diǎn)登陸功能示例詳解
這篇文章主要為大家介紹了Springboot?Vue實(shí)現(xiàn)單點(diǎn)登陸功能示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01解決Springboot get請(qǐng)求是參數(shù)過(guò)長(zhǎng)的情況
這篇文章主要介紹了解決Springboot get請(qǐng)求是參數(shù)過(guò)長(zhǎng)的情況,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-09-09mybatis generator只能生成insert和selectAll的操作
這篇文章主要介紹了mybatis generator只能生成insert和selectAll的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-09-09Java實(shí)現(xiàn)的zip壓縮及解壓縮工具類示例
這篇文章主要介紹了Java實(shí)現(xiàn)的zip壓縮及解壓縮工具類,結(jié)合實(shí)例形式分析了java對(duì)文件的進(jìn)行zip壓縮及解壓縮的具體操作技巧,需要的朋友可以參考下2018-01-01詳解spring項(xiàng)目中如何動(dòng)態(tài)刷新bean
這篇文章主要為大家介紹了詳解spring項(xiàng)目中如何動(dòng)態(tài)刷新bean,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08