Skip to main content

3.3 Spring Integration

Hint

This article is generated by AI translation.

What is Spring

Spring is a widely used lightweight open-source framework that simplifies enterprise application development. Its core BeanFactory handles object creation and lifecycle management.

Features

  • Broad version support
    • SpringBoot 2/3
    • Spring 4.0.0 minimum
  • Multiple configuration styles
    • application.properties
    • Annotation-based
    • Spring XML

Setup

First add the dependency, current version: 6.4.0

<dependency>
<groupId>net.hasor</groupId>
<artifactId>dbvisitor-spring-starter</artifactId>
<version>latest version</version>
</dependency>
Use HikariCP
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>4.0.3</version>
</dependency>
# Spring JDBC datasource
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/devtester
spring.datasource.username=root
spring.datasource.password=123456
# Required
dbvisitor.mapper-packages=com.example.demo.dao
dbvisitor.mapper-locations=classpath:dbvisitor/mapper/*.xml
Inject a Mapper
public class ServiceTest {
@Resource // or @Autowired
private UserMapper userMapper;
...
}

Transactions

@Configuration
public class DsConfig {
@Bean
public PlatformTransactionManager txManager(DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
}
Control transactions with @Transactional
import org.springframework.transaction.annotation.Transactional;

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

Example projects

Configuration reference

application.properties keys

KeyDescription
dbvisitor.mapper-packages可选 Packages to scan for Mapper interfaces; separate multiple with ,
dbvisitor.mapper-locations可选 Locations of Mapper XML files; default classpath*:/dbvisitor/mapper/**/*.xml; separators: ,; \t\n
dbvisitor.mapper-disabled可选 true/false to disable Mapper interfaces found via dbvisitor.mapper-packages; default false. Set true if shared mapper files conflict.
dbvisitor.mapper-name-generator可选 Class name of a custom BeanNameGenerator for mapper bean names; default empty.
dbvisitor.marker-annotation可选 Annotation that marks an interface as a Mapper; default net.hasor.dbvisitor.mapper.MapperDef
dbvisitor.marker-interface可选 Interface that marks an interface as a Mapper; default net.hasor.dbvisitor.mapper.Mapper
dbvisitor.mapper-factory-bean可选 Factory bean class for Mappers; default net.hasor.dbvisitor.spring.support.MapperBean
dbvisitor.ref-session可选 Session bean name to use for Mapper beans.
dbvisitor.mapper-lazy-init可选 Mapper bean lazyInit flag; default false
dbvisitor.mapper-scope可选 Spring scope for Mapper beans; defaults to AbstractBeanDefinition.SCOPE_DEFAULT; consider singleton if setting explicitly.
dbvisitor.auto-mapping可选 Automatically map all fields to columns; true = auto, false = require @Column
dbvisitor.camel-case可选 Convert table/column names using camel-case to underscore
dbvisitor.use-delimited可选 Force identifier quoting for table/column/index names (e.g., when names are keywords); default false
dbvisitor.case-insensitive可选 Case-insensitive table/column names; default true
dbvisitor.ignore-nonexist-statement可选 Ignore missing mappings when binding Mapper methods to XML; default false (throws)
dbvisitor.dialect可选 Default database dialect

@MapperScan attributes

AttributeDescription
value, basePackages, basePackageClassesSame as dbvisitor.mapper-packages
mapperLocationsSame as dbvisitor.mapper-locations
nameGeneratorSame as dbvisitor.mapper-name-generator
annotationClassSame as dbvisitor.marker-annotation
markerInterfaceSame as dbvisitor.marker-interface
sessionRefSame as dbvisitor.ref-session
factoryBeanSame as dbvisitor.mapper-factory-bean
lazyInitSame as dbvisitor.mapper-lazy-init
defaultScopeSame as dbvisitor.mapper-scope
mapperDisabledSame as dbvisitor.mapper-disabled
tip

Annotation configuration has higher priority than properties (application.properties is recommended).

ConfigurationBean properties

PropertyDescription
mapperResourcesSame as dbvisitor.mapper-locations
mapperInterfacesSame as dbvisitor.marker-interface; ConfigurationBean also loads resources referenced on Mappers
typeRegistryCustom registry for type handlers
javaTypeHandlerMapMap custom TypeHandler to Java types
jdbcTypeHandlerMapMap custom TypeHandler to JDBC types
ruleRegistryCustom registry for rules
ruleHandlerMapRegister custom rules
autoMappingSame as dbvisitor.auto-mapping
camelCaseSame as dbvisitor.camel-case
caseInsensitiveSame as dbvisitor.case-insensitive
useDelimitedSame as dbvisitor.use-delimited
dialectNameSame as dbvisitor.dialect
ignoreNonExistStatementSame as dbvisitor.ignore-nonexist-statement

SessionBean properties

PropertyDescription
configurationConfiguration used by the Session created by SessionBean
dataSourceDataSource to use
dsAdapterAbstractDsAdapter implementation; defines how to get Connections from the DataSource
dsAdapterClassClass name of dsAdapter (equivalent to dsAdapterName)
dsAdapterNameString name of dsAdapter (equivalent to dsAdapterClass)

MapperBean properties

PropertyDescription
sessionSession used by MapperBean to create Mapper objects
mapperInterfaceInterface of the Mapper to create

MapperScannerConfigurer properties

PropertyDescription
basePackageSame as dbvisitor.mapper-packages
nameGeneratorNameSame as dbvisitor.mapper-name-generator (class name)
nameGeneratorSame as dbvisitor.mapper-name-generator (object)
annotationClassNameSame as dbvisitor.marker-annotation (class name)
annotationClassSame as dbvisitor.marker-annotation (class)
markerInterfaceNameSame as dbvisitor.marker-interface (class name)
markerInterfaceSame as dbvisitor.marker-interface (class)
sessionSame as dbvisitor.ref-session (object)
sessionRefSame as dbvisitor.ref-session (bean name)
mapperFactoryBeanClassNameSame as dbvisitor.mapper-factory-bean (class name)
mapperFactoryBeanClassSame as dbvisitor.mapper-factory-bean (class)
mapperDisabledSame as dbvisitor.mapper-disabled
lazyInitSame as dbvisitor.mapper-lazy-init
defaultScopeSame as dbvisitor.mapper-scope
dependsOnBeans that a Mapper depends on at creation time