mybatis 정의
mybatis 사용법
mybatis 문법
Refference
Ibatis | MyBatis | |
---|---|---|
최소 JDK 버전 | 1.4 | 1.5 |
패키지 구조 | com.ibatis.* | org.mybatis |
SqlMap.xml에서 변경사항 | parameterMap | parameterType |
엘리먼트 명칭 변경사항 | SqlMapConfig SqlMap | Configuration mapper |
네임스페이스 속성 | 선택 | 필수 |
설정파일을 읽어서 SqlSessionFactory객체를 생성
SqlSession을 만드는 역할
sql문을 실제 호출해주는 역할(필요시 open하고 close를 해줘야 한다.)
<!-- MyBatis, MyBatis-Spring, Spring-JDBC -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.5</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${org.springframework-version}</version>
</dependency>
</dependencies>
<bean id="dataSource"
name="dataSource"
class="oracle.jdbc.pool.MysqlDataSource">
<property name="URL"
value="jdbc:mysql:thin:@localhost:1521" />
<property name="user" value="" />
<property name="password" value="" />
</bean>
<bean id="sqlSessionFactory"
name="sqlSessionFactory"
class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation"
value="classpath:/mybatis-config.xml" />
<property name="mapperLocations"
value="classpath:/mappers/*.xml" />
</bean>
<bean id="sqlSession" name="sqlSession"
class="org.mybatis.spring.SqlSessionTemplate"
destroy-method="clearCache">
<constructor-arg name="sqlSessionFactory"
ref="sqlSessionFactory" />
</bean>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<properties>
<property name="tblMember" value="tbl_member"/>
<property name="tblBoard" value="test_board" />
<property name="colBno" value="bno" />
<property name="colTitle" value="title" />
<property name="colRegdate" value="regdate" />
<property name="colEmail" value="email"/>
</properties>
<typeAliases>
<package name="edu.spring.ex02.domain" />
</typeAliases>
</configuration>
<?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.spring.ex02.mappers.MemberMapper">
<select id="selectAll" resultType="Member">
SELECT * FROM ${tblMember}
</select>
</mapper>
@Repository
public class ProductRepository {
@Autowired
private ProductMapper productMapper;
public <List<Product>> findAll() {
return productMapper.findAll());
}
--------------------
public interface ProductMapper {
List<Product> findAll();
<select id="findAll"
resultType="Product">
SELECT
<include refid="Product" />
FROM
product
</select>
<select id="selectPerson" parameterType="int" resultType="hashmap">
SELECT * FROM PERSON WHERE ID = #{id}
</select>
<select
id="selectPerson"
parameterType="int"
parameterMap="deprecated"
resultType="hashmap"
resultMap="personResultMap"
flushCache="false"
useCache="true"
timeout="10"
fetchSize="256"
statementType="PREPARED"
resultSetType="FORWARD_ONLY">
(필수)
<sql id="userColumns"> id, username, password </sql>
<select id="selectUsers resultType="map">
select <include refid="userColumns" />
</select>
<select id="findActiveBlogWithTitleLike"
resultType="Blog">
SELECT * FROM BLOG
WHERE state = ‘ACTIVE’
<if test="title != null">
AND title like #{title}
</if>
</select>
<select id="findActiveBlogLike"
resultType="Blog">
SELECT * FROM BLOG WHERE state = ‘ACTIVE’
<choose>
<when test="title != null">
AND title like #{title}
</when>
<when test="author != null and author.name != null">
AND author_name like #{author.name}
</when>
<otherwise>
AND featured = 1
</otherwise>
</choose>
</select>
<select id="selectPostIn" resultType="domain.blog.Post">
SELECT *
FROM POST P
WHERE ID in
<foreach item="item" index="index" collection="list"
open="(" separator="," close=")">
#{item}
</foreach>
</select>
refference
https://mybatis.org/mybatis-3/ko/index.html (document 페이지)
https://araikuma.tistory.com/475
https://blog.naver.com/rla8860/220671456438
https://sjh836.tistory.com/127
https://universecoding.tistory.com/42