root-context.html
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- Root Context: defines shared resources visible to all other web components -->
<bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig">
<property name="driverClassName"
value="net.sf.log4jdbc.sql.jdbcapi.DriverSpy"></property>
<property name="jdbcUrl"
value="jdbc:log4jdbc:oracle:thin:@localhost:1521:xe"></property>
<property name="username" value="scott"></property>
<property name="password" value="tiger"></property>
</bean>
<!-- HikariCP configuration -->
<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource"
destroy-method="close">
<constructor-arg ref="hikariConfig" />
</bean>
<!-- 1.번 방법을 위하여 mapperLocations 을 추가 함 -->
<bean id="sqlSessionFactory"
class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="mapperLocations"
value="classpath:/mappers/**/*.xml" />
</bean>
<!-- 1번 방식 사용을 위한 sqlSession -->
<bean id="sqlSession"
class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="sqlSessionFactory" />
</bean>
</beans>
BoardVO.java
package edu.global.ex.vo;
import java.sql.Timestamp;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class BoardVO {
private int bid;
private String bname;
private String btitle;
private String bcontent;
private Timestamp bdate;
private int bhit;
private int bgroup;
private int bstep;
private int bindent;
}
IBDao.java
package edu.global.ex.board.one;
import java.util.List;
import edu.global.ex.vo.BoardVO;
public interface IBDao {
public List<BoardVO> listDao();
}
resource > mappers > board1.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="edu.global.ex.board.one.IBDao">
<select id="listDao" resultType="edu.global.ex.vo.BoardVO">
<![CDATA[
select * from mvc_board order by bGroup desc, bStep asc
]]>
</select>
</mapper>
BController1.java
package edu.global.ex.board.one;
import javax.inject.Inject;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class BController1 {
@Inject
BService1 bservice;
@RequestMapping("/list1")
public String list(Model model) throws Exception {
System.out.println("list1()");
model.addAttribute("boards", bservice.selectBoardList());
return "list";
}
}
BService1.java
package edu.global.ex.board.one;
import java.util.List;
import javax.inject.Inject;
import org.apache.ibatis.session.SqlSession;
import org.springframework.stereotype.Service;
import edu.global.ex.vo.BoardVO;
@Service
public class BService1 {
@Inject
private SqlSession sqlSession;
public List<BoardVO> selectBoardList() throws Exception {
IBDao dao = sqlSession.getMapper(IBDao.class);
return dao.listDao();
}
}
BService2.java
package edu.global.ex.board.two;
import java.util.List;
import javax.inject.Inject;
import org.apache.ibatis.session.SqlSession;
import org.springframework.stereotype.Service;
import edu.global.ex.vo.BoardVO;
@Service
public class BService2 {
@Inject
SqlSession sqlSession;
public List<BoardVO> selectBoardList() throws Exception {
return sqlSession.selectList("board.selectBoardList");
}
}
resource > mappers > board2.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="board">
<select id="selectBoardList" resultType="edu.global.ex.vo.BoardVO">
<![CDATA[
select * from mvc_board order by bGroup desc, bStep asc
]]>
</select>
</mapper>