下面我将详细讲解Spring集成MyBatis的完整攻略,并附上两个示例。
1. 准备工作
在开始之前,需要完成以下准备工作:
- 安装Java JDK和Maven。
- 创建一个Spring项目,可以使用Maven构建。
- 添加Spring、MyBatis相关依赖,如下所示:
<dependencies>
<!-- Spring相关依赖 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.3.8</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.8</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.3.8</version>
</dependency>
<!-- MyBatis相关依赖 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.7</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.6</version>
</dependency>
<!-- 数据库驱动依赖 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.24</version>
</dependency>
<!-- 其他依赖 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
</dependencies>
2. Spring集成MyBatis
2.1 配置数据源
在Spring中,我们可以使用org.springframework.jdbc.datasource.DriverManagerDataSource
类定义数据源,如下所示:
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.cj.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/my_test_db?useSSL=false&useUnicode=true&characterEncoding=UTF-8" />
<property name="username" value="root" />
<property name="password" value="123456" />
</bean>
2.2 配置SqlSessionFactory
在Spring中,我们可以使用org.mybatis.spring.SqlSessionFactoryBean
类定义SqlSessionFactory,如下所示:
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation" value="classpath:mybatis-config.xml" />
</bean>
2.3 配置MapperScannerConfigurer
在Spring中,我们可以使用org.mybatis.spring.mapper.MapperScannerConfigurer
类扫描Mapper接口,并将其注入到Spring容器中,如下所示:
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.example.mapper" />
</bean>
2.4 配置事务管理器
在Spring中,我们可以使用org.springframework.jdbc.datasource.DataSourceTransactionManager
类定义事务管理器,如下所示:
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
3. 示例代码
下面是两个示例代码,一个示例查询所有用户信息,另一个示例插入一条用户信息。
3.1 查询所有用户信息
定义User类和UserMapper接口:
public class User {
private Long id;
private String name;
private Integer age;
// 省略getter和setter方法
}
public interface UserMapper {
List<User> findAll();
}
在src/main/resources
目录下创建com/example/mapper/UserMapper.xml
文件,定义findAll查询语句:
<mapper namespace="com.example.mapper.UserMapper">
<select id="findAll" resultType="com.example.model.User">
SELECT * FROM user
</select>
</mapper>
在Spring配置文件中注入UserMapper
:
<bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
<property name="mapperInterface" value="com.example.mapper.UserMapper"/>
<property name="sqlSessionFactory" ref="sqlSessionFactory"/>
</bean>
在Service中注入UserMapper
,使用@Transactional
注解开启事务:
@Service
@Transactional
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public List<User> findAll() {
return userMapper.findAll();
}
}
3.2 插入一条用户信息
在com/example/mapper/UserMapper.xml
文件中定义insert插入语句:
<mapper namespace="com.example.mapper.UserMapper">
<select id="findAll" resultType="com.example.model.User">
SELECT * FROM user
</select>
<insert id="insert" parameterType="com.example.model.User">
INSERT INTO user (name, age) VALUES (#{name}, #{age})
</insert>
</mapper>
在Service中注入UserMapper
,使用@Transactional
注解开启事务:
@Service
@Transactional
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public void insert(User user) {
userMapper.insert(user);
}
}
以上就是Spring集成MyBatis的完整攻略,希望对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Spring集成MyBatis完整实例(分享) - Python技术站