Spring and database programming
Configure database resources in xml mode
- Use SimpleDriverDataSource to connect, it does not support database connection.
<!-- 配置数据源 -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.SimpleDriverDataSource">
<property name="driverClass" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/test"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</bean>
- Use third-party database connection pool
Use DBCP database connection pool
Dependencies that need to be imported:
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
<!-- 配置数据源 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/test"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
<!--连接池的最大数据库连接数-->
<property name="maxActive" value="255"/>
<!--最大等待连接中的数量-->
<property name="maxIdle" value="5"/>
<!--最大等待毫秒数-->
<property name="maxWait" value="10000"/>
</bean>
Use c3p0 database connection pool
The dependencies that need to be imported:
<dependency>
<groupId>c3p0</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.1.2</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<!--配置连接池-->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.mysql.jdbc.Driver"/>
<property name="jdbcUrl" value="jdbc:mysql:///mybatis_form"/>
<property name="user" value="root"/>
<property name="password" value="root"/>
</bean>
Configure SqlSessionFactory component
<!--配置SqlSessionFactory组件-->
<bean id="SqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<!--引入mybatis的主配置文件-->
<property name="configLocation" value="classpath:sqlMapConfig.xml"/>
</bean>
SqlSessionTemplate component
SqlSessionTemplate is not a component that must be configured. It is a thread-safe class. It is necessary to create objects through the construction method with parameters. The commonly used parameters are the types of SqlSessionFactory and Mybatis executors (SIMPLE, REUSE, BATCH)
<!--配置SqlSessionTemplate-->
<bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg ref="SqlSessionFactory"/>
<constructor-arg value="BATCH"/>
</bean>
When both SqlSessionFactory and SqlSessionTemplate are configured at the same time, the priority of SqlSessionTemplate is greater than that of SqlSessionFactory.
Configure MapperFactoryBean
mapperInterface: the interface of the mapper
<bean class="org.mybatis.spring.mapper.MapperFactoryBean">
<property name="mapperInterface" value="com.example.dao.AccountDao"/>
<property name="SqlSessionFactoryBeanName" value="SqlSessionFactory"/>
</bean>
Configure MapperScannerConfigurer
This is a class that configures the Mapper in the form of scanning, and does not need to be configured one by one.
Attribute: annotationClass, scan only if the class is identified by this annotation. That is, the dao interface, and the annotation @Repository indicates that this is a data access layer.
<!--配置MapperScannerConfigurer-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.example.dao"/>
<property name="SqlSessionFactoryBeanName" value="SqlSessionFactory"/>
<property name="annotationClass" value="org.springframework.stereotype.Repository"/>
</bean>
Complete spring+mybatis xml configuration
<!-- 配置数据源 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/test"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
<!--连接池的最大数据库连接数-->
<property name="maxActive" value="255"/>
<!--最大等待连接中的数量-->
<property name="maxIdle" value="5"/>
<!--最大等待毫秒数-->
<property name="maxWait" value="10000"/>
</bean>
<!--配置SqlSessionFactory组件-->
<bean id="SqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<!--引入mybatis的主配置文件-->
<property name="configLocation" value="classpath:sqlMapConfig.xml"/>
</bean>
<!--配置SqlSessionTemplate-->
<bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg ref="SqlSessionFactory"/>
<constructor-arg value="BATCH"/>
</bean>
<!--配置MapperScannerConfigurer-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.example.dao"/>
<property name="SqlSessionFactoryBeanName" value="SqlSessionFactory"/>
<!-- <property name="sqlSessionTemplateBeanName" value="sqlSessionTemplate"/>-->
<property name="annotationClass" value="org.springframework.stereotype.Repository"/>
</bean>