폴더구조
1. config.xml
mybatis 기본적인 설정파일 - 별칭정보, DB정보, , 맵퍼를 정의
<?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> <typeAliases> <typeAlias alias="Person" type="com.vo.Person" /> </typeAliases> <environments default="development"> <environment id="development"> <transactionManager type="JDBC" /> <!-- connecting to Local MySql --> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/test" /> <property name="username" value="****" /> <property name="password" value="****" /> </dataSource> </environment> </environments> <mappers> <mapper resource="com/mybatis/mapper/PersonMapper.xml" /> </mappers> </configuration>
2. MyBatisConnectionFactory.java
설정파일을 읽어서 Mybatis를 사용하게 해주는 녀석!
package com.mybatis; import java.io.FileNotFoundException; import java.io.IOException; import java.io.Reader; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; public class MyBatisConnectionFactory { private static SqlSessionFactory sqlSessionFactory; static { try { String resource = "com/mybatis/config.xml"; Reader reader = Resources.getResourceAsReader(resource); if (sqlSessionFactory == null) { sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); } } catch (FileNotFoundException fileNotFoundException) { fileNotFoundException.printStackTrace(); } catch (IOException iOException) { iOException.printStackTrace(); } } public static SqlSessionFactory getSqlSessionFactory() { return sqlSessionFactory; } }
3. Person.java
package com.vo; public class Person { private int id; private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String toString() { return "id: " + id + " Name: " + name; } }
4. PersonMapper.xml
이곳에 SQL쿼리문을 작성해준다
※Insert에 useGeneratedKyes="true" , KeyProperty="" 를 설정해 주면 insert한 키 값을 얻어 올 수 있음
<?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="com.dao.PersonDAO"> <resultMap id="result" type="Person"> <result property="id" column="id"/> <result property="name" column="name"/> </resultMap> <select id="selectAll" resultMap="result"> SELECT * FROM persons; </select> <select id="selectById" parameterType="int" resultMap="result"> SELECT * FROM persons WHERE id = #{id} </select> <insert id="insert" parameterType="Person" useGeneratedKeys="true" keyProperty="list_id"> INSERT INTO persons (name) VALUES (#{name}); </insert> <update id="update" parameterType="Person"> UPDATE persons SET name = #{name} WHERE id = #{id} </update> <delete id="delete" parameterType="int"> DELETE from persons WHERE id = #{id} </delete> </mapper>
5. PersonDAO.java
mapper에 있는 쿼리정보와 1:1 매칭
package com.dao; import java.util.List; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import com.vo.Person; public interface PersonDAO { public ListselectAll(); // 모든 행 가져오기 public Person selectById(int id); // 특정한 행 가져오기 public int insert(Person person); // 삽입 public void update(Person person); // 업데이트 public void delete(int id); // 삭제 }
6. Main.java
package com.main; import java.util.List; import org.apache.ibatis.session.SqlSession; import com.mybatis.MyBatisConnectionFactory; import com.dao.PersonDAO; import com.vo.Person; public class Main { public static void main(String args[]) { // Mybatis 세션연결 SqlSession sqlSession = MyBatisConnectionFactory.getSqlSessionFactory() .openSession(true); // Mapper 연결 PersonDAO person = sqlSession.getMapper(PersonDAO.class); // Select Listpersons = null; persons = person.selectAll(); for (int i = 0; i < persons.size(); i++) { System.out.println("Person Name : " + persons.get(i).getName()); } // Insert Person p = new Person(); p.setName("테스터"); person.insert(p); System.out.println("return key : " + p.getId()); // update p.setId(14); p.setName("Terry"); person.update(p); System.out.println("return key : " + p.getId()); // Delete p.setId(16); person.delete(p.getId()); System.out.println("return key : " + p.getId()); } }