MyBatis는 SQL문을 편하기 사용하기 위해서 xml을 이용해 사용하는건데요
사용하시면 정말 편하다는걸 느낄 수 있으실거에요
인터넷에 검색해보면 설정하는 다양한 방식이 있을텐데
저는 첫번째 myBatis를 이용하는 클래스파일
두번째 myBatis관련 설정하는 xml파일
마지막으로 정의와 쿼리문의 정의하는 xml파일
3가지로 구성했어요
먼저 클래스 파일이에요
패키지명, 아이디, 패스워드는 본인에 맞춰서 입력해주시면 되구요
public class MyBatisSQLQuery {
public MyBatisSQLQuery(String IPAddress) {
resource = "패키지명/mybatis-config.xml";
props = new Properties();
props.put("driver" , "com.mysql.jdbc.Driver");
props.put("url" , "jdbc:mysql://"+ IPAddress+":3306/bingo");
props.put("username" , "아이디");
props.put("password" , "패스워드");
session = null;
try {
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory
= new SqlSessionFactoryBuilder().build(inputStream, props);
session = sqlSessionFactory.openSession(false); //false = Not autoCommit
props.clear();
inputStream.close();
} catch (IOException e) { return ; }
}
public List<HashMap<String, Object>> select( String query, HashMap<String, String> input) {
List<HashMap<String, Object>> outputs = session.selectList("SqlMapper." + query, input);
return outputs;
}
public List<HashMap<String, Object>> select( String query ) {
List<HashMap<String, Object>> outputs = session.selectList("SqlMapper." + query);
return outputs;
}
public void insert(String query, HashMap<String, String> input) {
session.selectList("SqlMapper." + query, input);
}
public void update(String query, HashMap<String, String> input) {
session.selectList("SqlMapper." + query, input);
}
public void update(String query){
session.selectList("SqlMapper." + query);
}
public void delete (String query) {
session.selectList("SqlMapper." + query);
}
public void delete (String query, HashMap<String, String> input) {
session.selectList("SqlMapper." + query, input);
}
public void clear(String query) {
session.selectList("SqlMapper." + query);
}
public void clear(String query, HashMap<String, String> input) {
session.selectList("SqlMapper." + query, input);
}
public void lock(String query) {
session.selectList("SqlMapper." + query);
System.out.println("LOCK " + query);
}
public void unlock(String query) {
session.selectList("SqlMapper." + query);
System.out.println("UNLOCK " + query);
}
public void sessionCommit(){
session.commit();
session.close();
}
public void commit(){
session.commit();
}
private String resource;
private Properties props;
private SqlSession session;
}
나중에 다른 자바파일에서 호출할때는
HashMap input = new HashMap<String, String>();
input.put("키값", "밸류값"):
MyBatisQuerySQL myBatis = new MyBatisQuerySQL("아이피주소");
List<HashMap<String,Object> outputs = myBatis.select( "쿼리문 별칭", input ) ;
myBatis.sessionCommit( );
이런 식으로 해주시면 되요
여기서 myBatis.sessionCommit( ); 를 호출해주시지 않으면 update문은 반영이 안되고 세션도 끊기지 않으니까 꼭 해주세요
클래스 파일 첨부할께요
여기서 클래스 파일을 넣으면 에러가 많이 발생할텐데
이거는 뒤에가면 해결되니까 걱정마세요 ~ ㅋㅋ
두번째 위 클래스 파일에서 resource = "패키지명/mybatis-config.xml";
지정해준 myBatis 설정 파일을 만들어야해요
여기도 패키지명을 입력해주세요
<?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>
<settings>
<setting name="cacheEnabled" value="false"/>
<setting name="useGeneratedKeys" value="ture"/>
<setting name="lazyLoadingEnabled" value="true"/>
<setting name="defaultExecutorType" value="BATCH"/>
<setting name="defaultStatementTimeout" value="3000"/>
</settings>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
<property name="poolMaximumActiveConnections" value="100"/> <!-- 주어진 시간에 존재할수 있는 활성화된 커넥션 수 -->
<property name="poolMaximumIdleConnections" value="100"/> <!-- 주어진 시간에 존재할 수 있는 유휴 커넥션의 수 -->
<property name="poolTimeToWait" value="20000"/> <!-- 풀이 로그 상태를 출력하고 비정상적으로 긴경우 커넥션을 다시얻을려고 시도하는 로우 레벨 셋팅 -->
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource ="패키지명/Mapper파일명.xml"/>
</mappers>
</configuration>
파일 첨부할께요
세번째 위 설정파일에 <mappers> <mapper resource ~~ > </mappers>
여기에 들어가는 sql문 매핑 파일이 필요해요
<?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="SqlMapper">
<select id="쿼리문 별칭" parameterType="java.util.HashMap" resultType="java.util.HashMap">
select * from 테이블명 where 조건 = ${input에 입력한 key 값}
</select>
</mapper>
이렇게 작성해시면
input.put("key", value);
List<HashMap<String,Object> outputs = myBatis.select( "쿼리문 별칭", input ) ;
하면은
select * from 테이블명 where 조건 = ${key} ( = select * from 테이블명 where 조건 = value )
값이 호출되요
파일 첨부할께요
마지막으로 이제 위에서 생긴 에러들을 없애볼께요
에러가 생긴이유는 라이브러리 파일을 찾을 수 없어서 생기는건데요
maven은 의존관계라는걸 통해서 쉽게 라이브러리를 연결할 수 있어서 참 좋은것같아요
Maven Project를 생성했다면 pom.xml이라는 설정파일이 있을거에요
pom.xml파일에 보면 <dependencies> </dependencies>라는 의존관계를 정의하는 부분이있는데
이 부분에 Maven 관련된 의존성만 추가시키고 저장을 누르면
라이브러리 파일이 자동으로 연결되죠
추가할 내용은
<!-- spring framework -->
<dependency>
<groupId>org.springframework.integration</groupId>
<artifactId>spring-integration-core</artifactId>
<version>2.2.3.RELEASE</version>
</dependency>
<!-- mysql connector -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.26</version>
</dependency>
<!-- mybatis spring -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.0.2</version>
</dependency>
<!-- apache commons dbcp-->
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.2.2</version>
</dependency>
<!-- mybatis-->
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib-nodep</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.1.1</version>
</dependency>
이거에요
이것도 파일첨부할께요
에러가 떠도 차근차근 따라오시면 쉽게 따라하실 수 있을거에요
'Maven' 카테고리의 다른 글
이클립스 메이븐 연동 (메이븐 플러그인 설치) (0) | 2014.05.16 |
---|
댓글