亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Spring Boot集成MyBatis如何實現通用Mapper的配置

發布時間:2021-08-06 11:59:50 來源:億速云 閱讀:317 作者:小新 欄目:編程語言

這篇文章將為大家詳細講解有關Spring Boot集成MyBatis如何實現通用Mapper的配置,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

什么是通用Mapper

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

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

不管是DDD(Domain Driven Design,領域驅動建模)還是分層架構的風格,都會涉及到對數據庫持久層的操作,本文將會講解Spring Boot集成MyBatis如何實現通用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>

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

數據庫配置

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

spring:
datasource:
hikari:
connection-test-query: SELECT 1
minimum-idle: 1
maximum-pool-size: 5
pool-name: dbcp1
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/test?autoReconnect=true&useSSL=false&useUnicode=true&characterEncoding=utf-8
username: user
password: pwd
type: com.zaxxer.hikari.HikariDataSource
 schema[0]: classpath:/init.sql
initialize: true

可以看到,我們配置了hikari和數據庫的基本信息。在應用服務啟動時,會自動初始化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腳本中,我們創建了一張 test 表。

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

通用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;

@Configuration
public 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;
 }
}

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

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

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

創建實體

我們需要添加 test 表對應的實體。

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

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

配置文件

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

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

TestDao編寫

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

TestDao 繼承自 BaseDao ,并指定了泛型為對應的 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層和控制層

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

結果驗證

我們在插入一條數據之后,查詢對應的實體。對應執行的結果也都是成功,可以看到控制臺的如下日志信息:

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實現通用Mapper到此就大功告成。

關于“Spring Boot集成MyBatis如何實現通用Mapper的配置”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

曲阳县| 平顶山市| 文化| 长治市| 舒城县| 兴城市| 文安县| 榕江县| 广水市| 五寨县| 肇庆市| 宜兰县| 长葛市| 渭源县| 农安县| 望城县| 得荣县| 禄丰县| 乐至县| 达尔| 台中市| 丰宁| 泽库县| 文昌市| 宁陵县| 兴城市| 雷山县| 英德市| 普陀区| 怀来县| 神农架林区| 宣化县| 牟定县| 凤城市| 益阳市| 三河市| 平潭县| 贞丰县| 新竹县| 姜堰市| 邵阳县|