-
mybatis 셋팅(setting) 하는법 no spring(일반 메이븐 프로젝트) postgresql myabtis자바웹프로그래밍/mybatis 2023. 1. 8. 09:35728x90반응형
*도움이 되셨다면 광고 클릭 한번 부탁드립니다. (__)
회사에서 spring에서 개발된 일부 내용들이 jar 파일로 배포해야 되는 상황이 생겼다.
그 코드에는 db에 접근하여 데이터를 가져와야 하는 내용들이 있었고, spring에서 사용하는 mybatis를
아래와 같이 일반 jdbc 라이브러리를 사용하여 쿼리를 일일이 수정하기엔 작업시간이 걸릴거 같았다.
그래서 mybatis를 그대로 사용하기로 하였다.
Connection conn = null; String url = "jdbc:oracle:thin:@localhost:1521:xe"; String id = "hr"; String pw = "java1234"; try { Class.forName("oracle.jdbc.driver.OracleDriver"); conn = DriverManager.getConnection(url, id, pw); return conn; } catch (Exception e) { System.out.println("DBUtil.getConnection() : " + e.toString()); }
그럼, 이제 Intellij 에서 mybatis를 적용하는법을 작성할것이다.
일단 intellij 에서 maven 프로젝트를 생성하자
기본적으로 intellij에서는 maven 프로젝트를 아주 깔끔하게 생성시켜주는 편리한 도구이며, 위와같은 next를 클릭만 해주면 메이븐 구조가 잘짜여진 프로젝트가 생성된다.
이제 위 사진처럼 구조가 잘짜여진 maven 프로젝트가 생성되었으면 pom.xml에 2가지의 라이브러리를 불러오자.
<dependencies> <!-- https://mvnrepository.com/artifact/org.postgresql/postgresql --> <dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> <version>9.4.1212</version> </dependency> <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.0.1</version> </dependency> </dependencies>
나는 postgresql 를 사용할것이기떄문에 mybatis lib 랑 postgresql lib를 종속시켜줬으며, 각각 자신이 사용한 jdbc에 맞게 라이브러리를 불러오면 된다.
1.mybatis-config setting
public class MyBatisUtil { private static SqlSessionFactory factory; static { Reader reader = null; try { reader = Resources.getResourceAsReader("config/mybatis-config.xml"); } catch (IOException e) { throw new RuntimeException(e.getMessage()); } factory = new SqlSessionFactoryBuilder().build(reader); } public static SqlSessionFactory getSqlSessionFactory() { return factory; } }
- MybatisUtil.class -
mybatis 환경 설정하기 위해서 , mybatis-config를 설정해주자 필자는 위에서 언급한 프로젝트 구조에 따라 java>util 에 'MybatisUtil' 를 생성하였다 .
' reader = Resources.getResourceAsReader("config/mybatis-config.xml");'
위 코드에서 resource에 있는 mybatis-config.xml 을 불러오기 위해 mybatis-config.xml도 생성해준다.
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "https://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <properties resource='jdbc.properties'/> <typeAliases> <typeAlias type='bean.UserInfoBean' alias='UserInfoBean'></typeAlias> </typeAliases> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="org.postgresql.Driver"/> <property name="url" value="jdbc:postgresql://localhost:5432/ifdb"/> <property name="username" value="postgres"/> <property name="password" value="qlalfqjsgh"/> </dataSource> </environment> </environments> <mappers> <mapper resource="mappers/user-mapper.xml"/> </mappers> </configuration>
- mybatis-config.xml -
위 mybatis-config.xml 에서 '<typeAliases>' 태그는 vo,dto 등에 대한 object를 설정해주는것이다.
<mapper> 태그는 sql문을 작성한 내용을 곧 배울 mapper interface와 맵핑시켜주는 태그이다!
2.mapper , service ,vo 생성
위에서 이미 언급했듰이, sql문과 mapping할 'mapper', 실제 user를 조회하는 로직을 담고있는 'service' , 조회된 내용을 담을 vo(dto)를 구성해보자.
package bean; import lombok.Getter; import lombok.Setter; @Getter @Setter public class UserInfoBean { private String user_id; private String password; private String email; private String phone; }
- UserInfoBean -
package dao; import bean.UserInfoBean; import java.util.List; public interface UserMapper { UserInfoBean selectOneManagerInfoByUserId(String user_id); }
- UserMapper -
package service; import bean.UserInfoBean; import dao.UserMapper; import org.apache.ibatis.session.SqlSession; import util.MyBatisUtil; import java.util.List; public class UserService { public UserInfoBean selectOneManagerInfoByUserId(String user_id){ SqlSession sqlSession = MyBatisUtil.getSqlSessionFactory().openSession(); try{ UserMapper reportMapper = sqlSession.getMapper(UserMapper.class); return reportMapper.selectOneManagerInfoByUserId(user_id); }finally{ sqlSession.close(); } } }
- UserService -
위 세개를 원하는 포로젝트 패키지에 생성한후, mapper interface와 맵핑한 sql xml를 생성해주자
필자는 resource>mapper 폴더에 'user-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="dao.UserMapper"> <select id="selectOneManagerInfoByUserId" parameterType="String" resultType="UserInfoBean"> SELECT coalesce(emp_nm,'') as emp_nm, coalesce(email,'') as email, coalesce(group_name,'') as group_name FROM data_user_info WHERE user_id = #{user_id} </select> </mapper>
3.TEST
package service; import bean.UserInfoBean; import org.junit.jupiter.api.Test; class UserServiceTest { @Test public void getManagerInfo(){ String userId = "dongwankim"; UserService rs = new UserService(); UserInfoBean result= rs.selectOneManagerInfoByUserId(userId); System.out.println(result.getEmail()); } }
이제 println 을 이용하여 실행을 해보면 잘 동작하는것을 알수있다!
728x90반응형'자바웹프로그래밍 > mybatis' 카테고리의 다른 글
Set Multiple Datasource with mybatis on spring(spring 설정을 통해 mybatis 다중 설정 코드) (0) 2023.02.15 spring에서 mybatis 연동 완벽 작동! spring mybatis 연동 방법 (0) 2023.02.02 [mybatis] selectKey 사용법 (0) 2020.04.08