728x90
SqlSessionFactory
package com.config;
import java.io.IOException;
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class EmpFactory {
static SqlSessionFactory sqlSessionFactory= null;
static {
String resource = "com/config/Configuration.xml"; //수정이 필요한 유일한 부분
InputStream inputStream= null;
try {
inputStream = Resources.getResourceAsStream(resource);
System.out.println("configuration.xml 로딩 성공 ");
} catch (IOException e) {
e.printStackTrace();
}
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
}
public static SqlSession getSqlSession() {//
SqlSession session = sqlSessionFactory.openSession();
return session;
}
}
Configuration
<?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>
<!-- jdbc.properties파일 등록-->
<!-- com/config/jdbc.properties -->
<properties resource = "com/config/jdbc.properties"/>
<!-- jdbc.properties파일 등록-->
<!--1.jdbc 경로지정
2. dto alias
3. 4가지 정보 설정
4. mapper 설정
5. MySqlSessionFactory 경로 수정
-->
<typeAliases>
<typeAlias type="com.dto.DTO" alias="DTO"/>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<!-- db 연결 4가지 정보 -->
<dataSource type="POOLED">
<!--$값으로 변경-->
<!--${properties의 각 네임} -->
<property name="driver" value="${oracle.jdbc}"/>
<property name="url" value="${oracle.url}"/>
<property name="username" value="${oracle.userid}"/>
<property name="password" value="${oracle.passwd}"/>
<!--$값으로 변경-->
</dataSource>
</environment>
</environments>
<!-- Mapper.xml의 경로 등록 (Mapper.xml파일이 존재해야함 )-->
<mappers>
<mapper resource="com/config/EmpMapper.xml"/>
</mappers>
</configuration>
jdbc.properties
#key=value
#db 4 information
oracle.jdbc=oracle.jdbc.driver.OracleDriver
oracle.url=jdbc:oracle:thin:@localhost:1521:xe
oracle.userid=scott
oracle.passwd=tiger
mysql.jdbc=com.mysql.jdbc.Driver
mysql.url=jdbc:mysql:localhost:3306\orcl
mysql.userid=scott
mysql.passwd=tiger
Mapper
<?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="EmpMapper">
<!--SELECT ALL-->
<select id="select" resultType="DTO"><!-- 결과를 Dept의 List형태로 -->
<!-- select empno, ename, job, mgr, to_char(hiredate, 'yyyy/MM/dd') hiredate, sal, comm, deptno
-->
select *
from emp order by empno
</select>
<insert id="insert" parameterType="DTO">
insert into emp values (#{empno}, #{ename}, #{job}, #{mgr}, #{hiredate}, #{sal}, #{comm}, #{deptno})
</insert>
</mapper>
Service
package com.service;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import com.config.EmpFactory;
import com.dao.DAO;
import com.dto.DTO;
public class Service {
DAO dao;
public Service() {
super();
dao = new DAO();
}
public List<DTO> selectAll() {
SqlSession session = EmpFactory.getSqlSession();
List<DTO> list = null;
try {
list = dao.selectAll(session);
} finally {
session.close();
return list;
}
}
public int insert(DTO dto) {
SqlSession session = EmpFactory.getSqlSession();
int num = 0;
try {
num = dao.insert(session, dto);
session.commit();
System.out.println("커밋 성공");
} finally {
session.close();
System.out.println("세션 닫기");
return num;
}
}
}
DAO(Data Access Object)
package com.dao;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import com.dto.DTO;
public class DAO {
public List<DTO> selectAll(SqlSession session) {
List<DTO> list = session.selectList("select");
return list;
}
public int insert(SqlSession session, DTO dto) {
int num = session.insert("insert", dto);
System.out.println("등록된 행 수: "+num);
return num;
}
}
'단순 코드 기록 > JSP' 카테고리의 다른 글
JSP_Prestatement (0) | 2024.03.06 |
---|