下面我会详细讲解如何整合Spring和MyBatis的攻略,包括必要的配置和示例。
一、添加依赖
首先需要在pom.xml
中添加以下依赖:
<!-- Spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.9.RELEASE</version>
</dependency>
<!-- MyBatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
二、配置数据源
其次需要在Spring的配置文件中配置数据源,这里我们以MySQL为例:
<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource">
<property name="driverClassName" value="com.mysql.cj.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/mybatis_demo?useSSL=false" />
<property name="username" value="root" />
<property name="password" value="password" />
<property name="initialSize" value="5" />
<property name="maxTotal" value="20" />
</bean>
三、配置MyBatis
接下来需要配置MyBatis,这里我们以XML Mapper的方式进行配置:
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="mapperLocations" value="classpath*:mapper/*.xml" />
<!-- MyBatis插件配置,可选 -->
<property name="plugins">
<array>
<bean class="com.github.pagehelper.PageInterceptor">
<property name="properties">
<value>
helperDialect=mysql
reasonable=true
supportMethodsArguments=true
params=count=countSql
autoRuntimeDialect=true
</value>
</property>
</bean>
</array>
</property>
</bean>
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.example.mapper" />
</bean>
这里需要注意的是,mapperLocations
属性值为classpath*:mapper/*.xml
,即表示Mapper XML文件所在的路径。
四、配置事务管理器
最后需要配置事务管理器:
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<tx:annotation-driven transaction-manager="transactionManager" />
五、示例
接下来,我们来用两个简单的示例演示如何在Spring中整合MyBatis。
示例1:查询用户信息
我们可以首先定义一个User
类来表示用户信息:
public class User {
private Integer id;
private String username;
private String password;
// 省略getter和setter
}
然后,我们定义一个UserMapper
接口,用于操作用户信息:
public interface UserMapper {
/**
* 根据ID查询用户信息
*/
@Select("SELECT * FROM user WHERE id=#{id}")
User getUserById(@Param("id") Integer id);
}
最后,在Spring中注入UserMapper
接口即可直接使用:
<bean id="userService" class="com.example.service.UserService">
<property name="userMapper" ref="userMapper" />
</bean>
<bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
<property name="mapperInterface" value="com.example.mapper.UserMapper" />
<property name="sqlSessionFactory" ref="sqlSessionFactory" />
</bean>
示例2:插入用户信息
我们同样可以定义一个User
类,用于表示用户信息:
public class User {
private String username;
private String password;
// 省略getter和setter
}
然后,我们定义一个UserMapper
接口,用于操作用户信息:
public interface UserMapper {
/**
* 插入用户信息
*/
@Insert("INSERT INTO user(username, password) VALUES(#{username}, #{password})")
@Options(useGeneratedKeys = true, keyProperty = "id")
int insertUser(User user);
}
其中,@Options
注解用于指定自动生成的主键的属性名。
最后,在Spring中注入UserMapper
接口即可直接使用:
<bean id="userService" class="com.example.service.UserService">
<property name="userMapper" ref="userMapper" />
</bean>
<bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
<property name="mapperInterface" value="com.example.mapper.UserMapper" />
<property name="sqlSessionFactory" ref="sqlSessionFactory" />
</bean>
这样,我们就成功地整合了Spring和MyBatis。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解Spring如何整合Mybatis - Python技术站