跳到主要内容

3.3 Spring 整合

什么是 Spring​

Spring 是一个广泛使用的 Java 应用框架,提供 IoC 容器、事务管理和 Spring Boot 自动配置等能力。

特性​

  • 广泛的版本支持
    • SpringBoot 2/3
    • Spring 4.0.0 最低
  • 多种配置方式
    • application.properties 配置文件
    • 注解化
    • Spring XML 方式配置

配置方法​

首先引入依赖包,当前指南版本:6.8.2

<dependency>
<groupId>net.hasor</groupId>
<artifactId>dbvisitor-spring-starter</artifactId>
<version>6.8.2</version>
</dependency>
选用 HikariCP 作为数据库链接池
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>4.0.3</version>
</dependency>
# Spring JDBC 数据源配置
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/devtester
spring.datasource.username=root
spring.datasource.password=123456
# 必选
dbvisitor.mapper-packages=com.example.demo.dao
dbvisitor.mapper-locations=classpath:dbvisitor/mapper/*.xml
注入 Mapper
public class ServiceTest {
@Resource // 或 @Autowired
private UserMapper userMapper;
...
}

public interface UserMapper extends BaseMapper<UserDTO> {
...
}

使用事务​

@Configuration
@EnableTransactionManagement
public class DsConfig {
@Bean
public PlatformTransactionManager txManager(DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
}
通过 @Transactional 注解进行事务控制
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.annotation.Propagation;

public class TxExample {
@Transactional(propagation = Propagation.REQUIRED)
public void exampleMethod() {
...
}
}

相关的类​

  • net.hasor.dbvisitor.jdbc.JdbcOperations
  • net.hasor.dbvisitor.jdbc.core.JdbcTemplate
  • net.hasor.dbvisitor.lambda.LambdaOperations
  • net.hasor.dbvisitor.lambda.LambdaTemplate
  • net.hasor.dbvisitor.transaction.TransactionTemplate
  • net.hasor.dbvisitor.session.Configuration
  • net.hasor.dbvisitor.session.Session
  • net.hasor.dbvisitor.mapper.BaseMapper

样例工程​

配置项说明​

application.properties 配置项​

属性名描述
dbvisitor.mapper-packages可选 要扫描加载的 Mapper 接口定义所在的包名,如果有多个包使用 , 号分割。
dbvisitor.mapper-locations可选 要扫描加载的 Mapper 映射文件所在路径,默认值为 classpath*:/dbvisitor/mapper/**/*.xml,如果有多个可以通过以下任意一个字符进行分割 ,; \t\n
dbvisitor.mapper-disabled可选 使用 true/false 表示是否禁用 dbvisitor.mapper-packages 扫描到的 Mapper 接口。
默认值为 false 当与某些框架合用同一个 mapper 文件时如果遇到冲突可考虑设置为 true
dbvisitor.mapper-name-generator可选 用于自定义生成 mapper bean 名字的生成器类名。需要实现 BeanNameGenerator 接口,默认为:空。
dbvisitor.marker-annotation可选 设置一个扫描路径当扫描到的 Mapper 接口身上标有某个特定类型的注解时才会被认作 Mapper 接口类。默认为:net.hasor.dbvisitor.mapper.MapperDef
dbvisitor.marker-interface可选 设置一个扫描路径当扫描到的 Mapper 接口实现了某个特定接口时才会被认作 Mapper 接口类。默认为:net.hasor.dbvisitor.mapper.Mapper
dbvisitor.mapper-factory-bean可选 创建 Mapper 的工厂类,默认为 net.hasor.dbvisitor.spring.support.MapperBean
dbvisitor.ref-session可选 用于自定义 Mapper Bean 所使用的 Session Bean 的名字。
dbvisitor.mapper-lazy-init可选 Mapper Bean 的 lazyInit 属性,默认为 false。
dbvisitor.mapper-scope可选 Mapper Bean 所处的 Spring 作用域,默认值为 AbstractBeanDefinition.SCOPE_DEFAULT 确定。
如果设置建议为 singleton。
dbvisitor.auto-mapping可选 是否将类型下的所有字段都自动和数据库中的列进行映射匹配,true 表示自动。false 表示必须通过 @Column 注解声明。
dbvisitor.camel-case可选 表名和属性名,根据驼峰规则转换为带有下划线的表名和列名。
dbvisitor.use-delimited可选 强制在生成 表名/列名/索引名 时候增加标识符限定,例如:通过设置该属性来解决列名为关键字的问题。默认是 false 不设置。
dbvisitor.case-insensitive可选 是否对表名列名敏感,默认 true 不敏感。
dbvisitor.ignore-nonexist-statement可选 在 Mapper 接口方法映射到 XML 过程中是否忽略缺失的映射。默认是 false,遇到缺失会报错。
dbvisitor.dialect可选 默认使用的 数据库方言

@MapperScan 注解属性详解​

属性名描述
value、basePackages、basePackageClasses参考 dbvisitor.mapper-packages 配置
mapperLocations参考 dbvisitor.mapper-locations 配置
nameGenerator参考 dbvisitor.mapper-name-generator 配置
annotationClass参考 dbvisitor.marker-annotation 配置
markerInterface参考 dbvisitor.marker-interface 配置
sessionRef参考 dbvisitor.ref-session 配置
factoryBean参考 dbvisitor.mapper-factory-bean 配置
lazyInit参考 dbvisitor.mapper-lazy-init 配置
defaultScope参考 dbvisitor.mapper-scope 配置
mapperDisabled参考 dbvisitor.mapper-disabled 配置
提示

注解配置优先级高于配置文件(推荐 application.properties,配置更简单)

ConfigurationBean 属性详解​

属性名描述
mapperResources参考 dbvisitor.mapper-locations 配置
mapperInterfaces参考 dbvisitor.marker-interface 配置,ConfigurationBean 会加载 Mapper 上声明的资源引用。
typeRegistry用于自定义 类型处理 注册器
javaTypeHandlerMap用于将自定义 TypeHandler 作为某 Java 类型的处理器
jdbcTypeHandlerMap用于将自定义 TypeHandler 作为某 JDBC 类型的处理器
ruleRegistry用于自定义 规则 注册器
ruleHandlerMap用于注册自定义规则
autoMapping参考 dbvisitor.auto-mapping 配置
camelCase参考 dbvisitor.camel-case
caseInsensitive参考 dbvisitor.case-insensitive
useDelimited参考 dbvisitor.use-delimited
dialectName参考 dbvisitor.dialect
ignoreNonExistStatement参考 dbvisitor.ignore-nonexist-statement

SessionBean 属性详解​

属性名描述
configurationSessionBean 创建的 Session 所使用的 Configuration
dataSource所使用的 DataSource
dsAdapterAbstractDsAdapter 类型对象,该类决定了如何从 dataSource 中获取 Connection
dsAdapterClassdsAdapter 类型名,Class 类型。于 dsAdapterName 属性等价
dsAdapterNamedsAdapter 类型名,String 类型。于 dsAdapterClass 属性等价

MapperBean 属性详解​

属性名描述
sessionMapperBean 创建 Mapper 对象所使用的 Session
mapperInterfaceMapperBean 创建的具体 Mapper

MapperScannerConfigurer 属性详解​

属性名描述
basePackage参考 dbvisitor.mapper-packages 配置
nameGeneratorName参考 dbvisitor.mapper-name-generator 配置,类型名
nameGenerator参考 dbvisitor.mapper-name-generator 配置,对象化
annotationClassName参考 dbvisitor.marker-annotation 配置,类型名
annotationClass参考 dbvisitor.marker-annotation 配置,类型
markerInterfaceName参考 dbvisitor.marker-interface 配置,类型名
markerInterface参考 dbvisitor.marker-interface 配置,类型
session参考 dbvisitor.ref-session 配置,对象
sessionRef参考 dbvisitor.ref-session 配置,引用的 Bean 名
mapperFactoryBeanClassName参考 dbvisitor.mapper-factory-bean 配置,类型名
mapperFactoryBeanClass参考 dbvisitor.mapper-factory-bean 配置,类型
mapperDisabled参考 dbvisitor.mapper-disabled 配置
lazyInit参考 dbvisitor.mapper-lazy-init 配置
defaultScope参考 dbvisitor.mapper-scope 配置
dependsOnMapper 在创建时依赖的前置 Bean