mybatis和spring框架整合,整合后测试用户登录和修改用户密码。
时间: 2024-05-09 20:21:06 浏览: 85
mybatis与spring的整合
整合MyBatis和Spring框架可以通过配置文件和注解两种方式实现,这里以配置文件为例。
1. 配置Spring和MyBatis的依赖
在pom.xml文件中添加以下依赖:
```xml
<!-- Spring依赖 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.10</version>
</dependency>
<!-- MyBatis依赖 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.7</version>
</dependency>
<!-- MyBatis-Spring依赖 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.7</version>
</dependency>
```
2. 配置数据源和SqlSessionFactory
在Spring配置文件中配置数据源和SqlSessionFactory,例如使用Druid数据源:
```xml
<!-- 配置数据源 -->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
<property name="url" value="jdbc:mysql://localhost:3306/mybatis_test?useUnicode=true&characterEncoding=utf-8"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</bean>
<!-- 配置SqlSessionFactory -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="configLocation" value="classpath:mybatis-config.xml"/>
</bean>
```
3. 配置Mapper接口
在Spring配置文件中配置Mapper接口扫描路径:
```xml
<!-- 配置Mapper接口扫描路径 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.example.mapper"/>
</bean>
```
4. 配置事务管理器
在Spring配置文件中配置事务管理器,例如使用JDBC事务管理器:
```xml
<!-- 配置事务管理器 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
```
5. 编写Mapper接口和SQL语句
编写用户登录和修改用户密码的Mapper接口和SQL语句,例如:
```java
public interface UserMapper {
User selectUserByUsernameAndPassword(@Param("username") String username, @Param("password") String password);
int updatePasswordById(@Param("id") Long id, @Param("password") String password);
}
```
```xml
<!-- 用户登录的SQL语句 -->
<select id="selectUserByUsernameAndPassword" resultType="com.example.entity.User">
select * from user where username = #{username} and password = #{password}
</select>
<!-- 修改用户密码的SQL语句 -->
<update id="updatePasswordById">
update user set password = #{password} where id = #{id}
</update>
```
6. 编写Service层实现类
编写用户登录和修改用户密码的Service层实现类,例如:
```java
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public User login(String username, String password) {
return userMapper.selectUserByUsernameAndPassword(username, password);
}
@Override
@Transactional
public boolean changePassword(Long id, String oldPassword, String newPassword) {
User user = userMapper.selectUserByUsernameAndPassword(null, oldPassword);
if (user == null || !user.getId().equals(id)) {
return false;
}
return userMapper.updatePasswordById(id, newPassword) > 0;
}
}
```
7. 编写Controller层
编写用户登录和修改用户密码的Controller层,例如:
```java
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@PostMapping("/login")
public String login(@RequestParam String username, @RequestParam String password) {
User user = userService.login(username, password);
if (user == null) {
return "登录失败";
} else {
return "登录成功";
}
}
@PostMapping("/change_password")
public String changePassword(@RequestParam Long id, @RequestParam String oldPassword, @RequestParam String newPassword) {
if (userService.changePassword(id, oldPassword, newPassword)) {
return "修改密码成功";
} else {
return "修改密码失败";
}
}
}
```
8. 测试
启动Spring Boot应用,使用Postman等工具测试用户登录和修改用户密码功能。
阅读全文