*도움이 되셨다면 광고 클릭 한번 부탁드립니다. (__) |
1.pom.xml 에 종속 라이브러리 추가
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.7</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
2.root-context.xml (bean을 등록 하는곳)
*spring에서 @configuration 으로 등록하는 방법이 있지만, 여기서는 xml에서만 등록하는 법을 소개하겠다. 어차피 xml에서 bean을 등록하나 @configuration에서 bean을 등록하나 같은원리이므로..
2-1 일단 jdbc를 사용하기위한 datasource와 mybatis에서 제공하는 sqlSessionFactory를 bean으로 등록해준다.
mybatis는 *Mapper.xml 파일을 이용하여 쿼리문을 작성한다. (잠시후 소개할 Mapper interface에서 쿼리문을 작성할수도있음. 하지만 여기서 다루지는 않겠다.) 그래서 *Mapper.xml를 search하기위해 mapperLocations 속성을 주입해준다.
<!-- springframework의 DriverManagerDataSource를 이용하여 dataSource 설정 -->
<bean id="doDataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource"
p:driverClassName="org.postgresql.Driver"
p:url="jdbc:postgresql://127.0.0.1:5432/vidb"
p:username="root"
p:password="root"
/>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref ="doDataSource"></property>
<property name="mapperLocations" value="classpath:mapper/**/*Mapper.xml"></property>
</bean>
2-1-1 *Mapper.xml 을 생성해준다. 필자는 mapper 폴더를 생성하고 그안에 *Mapper.xml 을 생성해주었다.
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="kr.co.example.mapper.PolicyMapper">
<select id="selectListCompany" parameterType="Map" resultType="HashMap">
select
company_code,company_name,company_ecode
from
company_list
where 1=1
<if test="searchKeyword != null and searchKeyword !=''">
and
(company_name ilike #{searchKeyword}
or
company_ecode ilike #{searchKeyword})
</if>
<if test="sort_field != null and sort_field != '' " >
order by #{sort_field} #{sort_dir}
</if>
limit #{length}::int4 offset #{start}::int4
</select>
</mapper>
policyMapper.xml
2-2 interface로 Mapper 생성 mapper.xml 과 연결될 mapper inteface이다. mapper.xml에 쿼리 id와 interface mapper method 명이 같아야한다.
예) mapper.xml select id="selectListCompany" , interface mapper method =" selectListCompany(Map<String,String> param)"
/**
* \* Created with JIRANDATA.
* \* @author: kim-dong-wan
* \* Date: 2023/02/01
* \* Time: 1:06 오후
* \* Description:
* \
*/
public interface PolicyMapper {
List<Map<String,Object>> selectListCompany(Map<String,String> param);
}
poilicyMapper.java
2-3 mapper interface를 bean으로 등록해주기 위한 component-scan 등록
' xmlns:mybatis-spring="http://mybatis.org/schema/mybatis-spring"',
'http://mybatis.org/schema/mybatis-spring '
'http://mybatis.org/schema/mybatis-spring.xsd'
위 세개를 root-context.xml(main applicationContext.xml) 맨위에 xmlns 선언해주는곳에 넣어준다.
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:task="http://www.springframework.org/schema/task"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:util="http://www.springframework.org/schema/util"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:mybatis="http://mybatis.org/schema/mybatis-spring"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task.xsd http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring.xsd">
2-4 mybais:scan을 통한 mapper scan (exmaple.mapper 패키지 안에있는 mapper종류들을 전부 bean으로 만들어준다.)
<!-- scan mybatis mapper-->
<mybatis:scan base-package="kr.co.example.mapper"/>
3.TEST
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@ContextConfiguration(locations="../resources/config/applicationContext.xml")
public class PolicyDAOImpTest {
//PolicyMapper policyMapper;
@Autowired
private DataSource doDataSource;
@Autowired
private SqlSessionFactory sqlSessionFactory;
@Autowired
private PolicyMapper policyMapper;
@Test
public void testMybatis(){
SqlSession session = sqlSessionFactory.openSession();
try {
Connection con = doDataSource.getConnection();
} catch (SQLException e) {
e.printStackTrace();
}
}
@Test
public void testPolicyMapper(){
Map<String,String> param = new HashMap<String,String>();
param.put("length","2");
param.put("start","1");
List<Map<String,Object>> rList = policyMapper.selectListCompany(param);
assertNotEquals(rList.size(),0);
}
}
끝
'자바웹프로그래밍 > mybatis' 카테고리의 다른 글
Set Multiple Datasource with mybatis on spring(spring 설정을 통해 mybatis 다중 설정 코드) (0) | 2023.02.15 |
---|---|
mybatis 셋팅(setting) 하는법 no spring(일반 메이븐 프로젝트) postgresql myabtis (0) | 2023.01.08 |
[mybatis] selectKey 사용법 (0) | 2020.04.08 |
댓글