麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發(fā) > Java > 正文

Spring Boot集成MyBatis實現(xiàn)通用Mapper的配置及使用

2024-07-14 08:42:09
字體:
供稿:網(wǎng)友

什么是通用Mapper

通用Mapper就是為了解決單表增刪改查,基于Mybatis的插件。開發(fā)人員不需要編寫SQL,不需要在DAO中增加方法,只要寫好實體類,就能支持相應(yīng)的增刪改查方法。

關(guān)于MyBatis,大部分人都很熟悉。MyBatis 是一款優(yōu)秀的持久層框架,它支持定制化 SQL、存儲過程以及高級映射。MyBatis 避免了幾乎所有的 JDBC 代碼和手動設(shè)置參數(shù)以及獲取結(jié)果集。MyBatis 可以使用簡單的 XML 或注解來配置和映射原生信息,將接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java對象)映射成數(shù)據(jù)庫中的記錄。

不管是DDD(Domain Driven Design,領(lǐng)域驅(qū)動建模)還是分層架構(gòu)的風格,都會涉及到對數(shù)據(jù)庫持久層的操作,本文將會講解Spring Boot集成MyBatis如何實現(xiàn)通用Mapper。

Spring Boot集成MyBatis

引入依賴

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId></dependency><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId></dependency><dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.1</version></dependency><dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId></dependency><dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId></dependency><dependency> <groupId>com.zaxxer</groupId> <artifactId>HikariCP</artifactId></dependency>

可以看到如上關(guān)于Mybatis引入了 mybatis-spring-boot-starter ,由Mybatis提供的starter。

數(shù)據(jù)庫配置

在application.yml中增加如下配置:

spring:datasource:hikari:connection-test-query: SELECT 1minimum-idle: 1maximum-pool-size: 5pool-name: dbcp1driver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://localhost:3306/test?autoReconnect=true&useSSL=false&useUnicode=true&characterEncoding=utf-8username: userpassword: pwdtype: com.zaxxer.hikari.HikariDataSource schema[0]: classpath:/init.sqlinitialize: true

可以看到,我們配置了hikari和數(shù)據(jù)庫的基本信息。在應(yīng)用服務(wù)啟動時,會自動初始化classpath下的sql腳本

CREATE TABLE IF NOT EXISTS `test` ( `id` bigint(20) unsigned NOT NULL, `local_name` varchar(128) NOT NULL , PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;

在sql腳本中,我們創(chuàng)建了一張 test 表。

到這里,后面我們一般需要配置Mybatis映射的xml文件和實體類的路徑。根據(jù)mybatis generator 自動生成代碼。包括 XXMapper.java , XXEntity.java , XXMapper.xml 。這里我們就不演示了,直接進入下一步的通用Mapper實現(xiàn)。

通用Mapper的使用

引入依賴

<dependency> <groupId>tk.mybatis</groupId> <artifactId>mapper</artifactId> <version>3.4.0</version></dependency>

通用Mapper的作者 abel533 ,有興趣可閱讀源碼。

配置通用Mapper

import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import tk.mybatis.spring.mapper.MapperScannerConfigurer;import java.util.Properties;@Configurationpublic class MyBatisMapperScannerConfig{ @Bean public MapperScannerConfigurer mapperScannerConfigurer(){  MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();  mapperScannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactory");  mapperScannerConfigurer.setBasePackage("com.blueskykong.mybatis.dao");//掃描該路徑下的dao  Properties properties = new Properties();  properties.setProperty("mappers", "com.blueskykong.mybatis.config.BaseDao");//通用dao  properties.setProperty("notEmpty", "false");  properties.setProperty("IDENTITY", "MYSQL");  mapperScannerConfigurer.setProperties(properties);  return mapperScannerConfigurer; }}

在配置中,設(shè)定了指定路徑下的dao,并指定了通用dao。需要注意的是, MapperScannerConfigurer 來自于 tk.mybatis.spring.mapper 包下。

BaseDaoimport tk.mybatis.mapper.common.Mapper;import tk.mybatis.mapper.common.MySqlMapper;public interface BaseDao<T>extends Mapper<T>,MySqlMapper<T>{}

通用Mapper接口,其他接口繼承該接口即可。

創(chuàng)建實體

我們需要添加 test 表對應(yīng)的實體。

@Data@Table(name = "test")@AllArgsConstructor@NoArgsConstructorpublic class TestModel{ @Id @Column(name = "id") @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; private String localName;}

其中, @Table(name = "test") 注解指定了該實體對應(yīng)的數(shù)據(jù)庫表名。

配置文件

mybatis:configuration:map-underscore-to-camel-case: true

為了更好地映射Java實體和數(shù)據(jù)庫字段,我們指定下劃線駝峰法的映射配置。

TestDao編寫

public interface TestDaoextends BaseDao<TestModel>{ @Insert("insert into test(id, local_name) values(#{id}, #{localName})") IntegerinsertTestModel(TestModel testModel);}

TestDao 繼承自 BaseDao ,并指定了泛型為對應(yīng)的 TestModel 。 TestDao 包含繼承的方法,如:

int deleteByPrimaryKey(Integer userId);int insert(User record);int insertSelective(User record);UserselectByPrimaryKey(Integer userId);int updateByPrimaryKeySelective(User record);int updateByPrimaryKey(User record);

還可以自定義一些方法,我們在上面自定義了一個 insertTestModel 方法。

Service層和控制層

本文略過這兩層,比較簡單,讀者可以參見本文對應(yīng)的源碼地址。

結(jié)果驗證

我們在插入一條數(shù)據(jù)之后,查詢對應(yīng)的實體。對應(yīng)執(zhí)行的結(jié)果也都是成功,可以看到控制臺的如下日志信息:

c.b.mybatis.dao.TestDao.insertTestModel  : ==>  Preparing: insert into test(id, local_name) values(?, ?) 
c.b.mybatis.dao.TestDao.insertTestModel  : ==> Parameters: 5953(Integer), testName(String)
c.b.mybatis.dao.TestDao.insertTestModel  : <==    Updates: 1
c.b.m.dao.TestDao.selectByPrimaryKey     : ==>  Preparing: SELECT id,local_name FROM test WHERE id = ? 
c.b.m.dao.TestDao.selectByPrimaryKey     : ==> Parameters: 5953(Integer)
c.b.m.dao.TestDao.selectByPrimaryKey     : <==      Total: 1

Spring Boot集成MyBatis實現(xiàn)通用Mapper到此就大功告成。

小結(jié)

MyBatis是持久層非常常用的組件,Spring Boot倡導(dǎo)約定優(yōu)于配置,特別是很多xml的配置。當然還有很多同學(xué)使用Spring Data。相比而言,我覺得MyBatis的SQL比Spring Data更加靈活,至于具體比較不在此討論。

本文對應(yīng)的源碼地址:

https://github.com/keets2012/Spring-Boot-Samples/tree/master/mybatis-demo

abel533/Mapper

總結(jié)

以上所述是小編給大家介紹的Spring Boot集成MyBatis實現(xiàn)通用Mapper的配置及使用,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對VeVb武林網(wǎng)網(wǎng)站的支持!


注:相關(guān)教程知識閱讀請移步到JAVA教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 欧美77 | 久久久一二三 | 中国产一级毛片 | 一级免费黄视频 | 2021国产精品视频 | 中文字幕精品在线视频 | 国产精品一区二区三区在线播放 | 国内毛片视频 | 一级黄色毛片a | 另类亚洲孕妇分娩网址 | 亚洲精品久久久久久久久久 | 黄色网址在线免费 | 欧美日韩手机在线观看 | 日日操夜夜透 | 成人免费视频视频在线观看 免费 | 男女一边摸一边做羞羞视频免费 | 成人午夜网址 | 草草视频免费 | 毛片免| 精品国产一区二区三区四区阿崩 | 日本a大片 | 蜜桃成品人免费视频 | 国内精品久久久久久久久久 | 夜夜夜操操操 | 毛片在线看免费 | 国产成人免费精品 | videos真实高潮xxxx | 69av导航 | 亚洲第一页中文字幕 | 国产在线观看91一区二区三区 | 亚洲网在线 | 久久久久免费电影 | 国产精品久久久久无码av | 国产成人自拍视频在线观看 | 羞羞电影在线观看 | 黄色7777| 草草视频免费观看 | 黄色毛片视频在线观看 | 亚洲免费视 | 色屁屁xxxxⅹ免费视频 | 717影院理论午夜伦八戒秦先生 |