[JDBC] mapper 2개로 분리, JDBC에 HashMap 적용, ArrayList적용 예제
-mapper 2개로 분리
Configuration에서 mapper 하나 더 추가
+error 에러 발생
Exception in thread "main" java.lang.ExceptionInInitializerError
at com.service.OracleMyBatisService.update(OracleMyBatisService.java:70)
at OralceMyBatisMain.main(OralceMyBatisMain.java:20)
에러 이유는
mapper 내용이 중복되기 때문에 error가 발생한다.
mapper2번 내용 다 지운 후 mapper1과 겹치는 내용 지운다.
mapper 2개 사용할 경우
namesapce는 이름을 부여한다.
나중에 클래스에 불러올때 namespace와 id를 붙여 사용
mapper2도 수정
mapper분리 후 사용 시 com.dept.DeptMapper를 붙여 사용해 준다.
-Configuration
com.dto.Dept를 typealias지정
mapper 수정해준다.
-
Jdbc 숫자 2개를 받아 (between 사용해서) hashmap사용하기
//select deptno ~~ between a and b
//main에서 hashmap 생성 a, b 값 설정 service => dao로 인자로 넘김
//sql에서 key를 이용 a,b 값을 설정 (parameterType = hashmap)
-mapper
<select id="selectHash" parameterType="HashMap" resultType="Dept">
select deptno, dname, loc from dept where deptno between #{deptno} and #{deptno1}
</select>
-DAO
public List<Dept> selectByHashMap(SqlSession session,HashMap<String,Integer> map){
List<Dept> list = session.selectList("com.dept.DeptMapper.selectHash", map);
return list;
}
-service
public List<Dept> selectByHashMap(HashMap<String,Integer> map){
//select deptno ~~ between a and b
//main에서 hashmap 생성 a, b 값 설정 service => dao로 인자로 넘김
//sql에서 key를 이용 a,b 값을 설정 (parameterType = hashmap)
SqlSession session= MySqlSessionFactory.getSqlSession();
List<Dept> list = null;
try {
list = dao.selectByHashMap(session, map);
session.commit();
} finally {
session.close();
}
return list;
}
-main
HashMap<String,Integer> map = new HashMap<String,Integer>();
map.put("deptno", 10);
map.put("deptno1", 50);
List<Dept> list = service.selectByHashMap(map);
for(Dept dept : list) {
System.out.println(dept);
}
-
Jdbc 숫자 3개를 받아 (in 사용해서) hashmap사용하기
-mapper
<select id="selectByDeptnoIn" parameterType="HashMap" resultType="Dept">
select deptno, dname, loc from dept where deptno in (#{deptno}, #{deptno1}, #{deptno2})
</select>
-dao
public List<Dept> selectBydeptNoIn(SqlSession session,HashMap<String,Integer> map){
List<Dept> list = session.selectList("com.dept.DeptMapper.selectByDeptnoIn", map);
return list;
}
-service
public List<Dept> selectBydeptNoIn(HashMap<String,Integer> map){
SqlSession session= MySqlSessionFactory.getSqlSession();
List<Dept> list = null;
try {
list = dao.selectBydeptNoIn(session, map);
session.commit();
} finally {
session.close();
}
return list;
}
-main
HashMap<String,Integer> map = new HashMap<String,Integer>();
map.put("deptno", 10);
map.put("deptno1", 50);
map.put("deptno2", 15);
List<Dept> list = service.selectBydeptNoIn(map);
for(Dept dept : list) {
System.out.println(dept);
}
-
//deptno을 이용하여 부서, 정보를 하나 select 후 hashmap에 담아
//메인에서 출력 - 단 부서이름만 출력 할 것.
-mapper
<select id="selectByHash" parameterType="int" resultType="HashMap">
select deptno, dname, loc from dept where deptno = #{deptno}
</select>
-Dao
public HashMap selectByDeptnoHashMap(SqlSession session, int deptno){
HashMap map = session.selectOne("com.dept.DeptMapper.selectByHash", deptno);
return map;
}
-service
public HashMap selsectByDeptnoHashMap(int deptno) {
//deptno을 이용하여 부서, 정보를 하나 select 후 hashmap에 담아
//메인에서 출력 - 단 부서이름만 출력 할 것.
SqlSession session= MySqlSessionFactory.getSqlSession();
HashMap map = null;
try {
map = dao.selectByDeptnoHashMap(session, deptno);
session.commit();
} finally {
session.close();
}
return map;
}
-main
HashMap map = service.selsectByDeptnoHashMap(10);
Set<String>keys = map.keySet();
System.out.println(map);
System.out.println(keys);
System.out.println(map.get("DNAME"));
'Devel > JDBC' 카테고리의 다른 글
[JDBC]실행결과 SQL에 반영 안될때, 다양한 SQL문 Mybatis 이용하여 JDBC 적용 예제 (0) | 2020.08.21 |
---|---|
[JDBC]Mybatis설정방법 및 적용예제2 (0) | 2020.08.20 |
[JDBC]Mybatis설정방법 및 적용예제 (0) | 2020.08.20 |
[JDBC]Connection 객체 분리, 클래스 분리 실습예제 (0) | 2020.08.20 |
[JDBC] 2 table Join, group by 사용하는 방법 및 적용예제 (0) | 2020.08.19 |