반응형
Mybatis + spring
mybatis 의존성 추가.
기존에 mybatis에서 session과 dao를 사용했었지만 spring과 결합되면서
public class UserDao {
private SqlSession sqlSession;
public UserDao(SqlSession sqlSession) {
this.sqlSession = sqlSession;
}
public List<User> findAllUsers() {
return sqlSession.selectList("com.example.mapper.UserMapper.findAllUsers");
}
}
기존에 사용하던 이런 dao가
package com.example.mapper;
import java.util.List;
import com.example.model.User;
import org.apache.ibatis.annotations.Select;
public interface UserMapper {
@Select("SELECT * FROM USERS")
List<User> findAllUsers();
}
mybatis mapper로 변경된다.
또한 기존에는
<configuration>
<typeAliases>
<typeAlias alias="User" type="com.example.model.User"/>
</typeAliases>
<mappers>
<mapper resource="com/example/mapper/UserMapper.xml"/>
</mappers>
</configuration>
타입알리어스와 매퍼로 사용하던것이
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd">
<!-- Component scan -->
<context:component-scan base-package="com.example"/>
<!-- DataSource 설정 -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="org.h2.Driver"/>
<property name="url" value="jdbc:h2:mem:testdb"/>
<property name="username" value="sa"/>
<property name="password" value=""/>
</bean>
<!-- MyBatis SqlSessionFactory 설정 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="configLocation" value="classpath:mybatis-config.xml"/>
</bean>
<!-- MyBatis SqlSessionTemplate 설정 -->
<bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="sqlSessionFactory"/>
</bean>
<!-- 트랜잭션 관리자 설정 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<tx:annotation-driven transaction-manager="transactionManager"/>
</beans>
spring 설정 파일에 추가합니다.
그리고 기존에 mybatis에서
SqlSession session = sqlSessionFactory.openSession();
try {
// 트랜잭션 시작
// 데이터 조작
session.commit();
} catch (Exception e) {
session.rollback();
throw e;
} finally {
session.close();
}
트랜잭션 조작을 하던 것을
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
@Transactional
public List<User> getAllUsers() {
return userMapper.findAllUsers();
}
}
@Transactional로 관리하게 됩니다.
@Controller
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/users")
public String listUsers(Model model) {
List<User> users = userService.getAllUsers();
model.addAttribute("users", users);
return "userList";
}
}
dao를 사용하지 않고 userservice를 이용하게 됩니다.
반응형
'KOSTA교육 > 수업' 카테고리의 다른 글
[52/100] 240627 (0) | 2024.06.27 |
---|---|
[51/100] 240626 (0) | 2024.06.26 |
[49/100] 240624 (0) | 2024.06.24 |
[48/100] 240621 (0) | 2024.06.21 |
[47/100] 240620 (0) | 2024.06.20 |