- Spring과 mybatis 연결하기위한 프로그램 다운
1. spring-orm(Spring Object/Relational Mapping)
이녀석은 반드시 기존에 설치했던 RELEASE 버전과 맞추어서 다운받아야함.
2. mybatis (최신버전 다운받아도됨)
3. mybatis-spring(최신버전 다운받아도됨)
[mybatis.xml]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <!-- 프로퍼티 파일로부터 데이터를 읽어온다. --> <context:property-placeholder location="classpath:db.properties" /> <!-- 커넥션 풀을 만들기위한 과정. db.properties에 있는 값을 가져와 EL로 꺼냄 --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> <property name="driverClass" value="${jdbc.driver}" /> <property name="jdbcUrl" value="${jdbc.url}" /> <property name="user" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> </bean> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean "> <property name="dataSource" ref="dataSource" /> <property name="mapperLocations" value="classpath:mybatis/*.xml" /> <!-- value에다가 와일드카드를써서 여러개의 파일을 한번에 지정할 수 있다. 하위패키지에있는 모든 xml파일을 의미 --> </bean> <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate"> <constructor-arg ref="sqlSessionFactory" /> </bean> | cs |
mapperLocations라는 이름으로 mybatis/*.xml을 설정.
mybatis 폴더 밑에있는 모든 xml 문서를 의미한다.
그중에 하나가 밑에있는 mapper.xml을 설정!!
[mapper.xml]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <mapper namespace="myMem"> <select id="selectAll" resultType="spring.mybatis.MemberDTO"> select * from member </select> <insert id="insert" parameterType="spring.mybatis.MemberDTO"> insert into member values (#{memberid},#{password},#{name},#{email}) </insert> <update id="update" parameterType="spring.mybatis.MemberDTO"> update member <set> <if test="password !=null">password = #{password},</if> <if test="name != null"> name = #{name},</if> <if test="email !=null"> email = #{email}</if> </set> where memberid = #{memberid} </update> </mapper> | cs |
이러한 selectAll , insert, update 라는 mapper 안에 생성을 한다음 DAO에서 호출한다.
[MemberDAO.java]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | package spring.mybatis; import java.util.List; import org.mybatis.spring.support.SqlSessionDaoSupport; public class MemberDAO extends SqlSessionDaoSupport{ // SqlSession session; // // public void setSession(SqlSession session) { // this.session = session; // } public List<MemberDTO> selectAll(){ List<MemberDTO> list = getSqlSession().selectList("myMem.selectAll"); //함수안에는 namespace.id(빈아이디)로 들어가야한다. return list; } //생성자를 통한 insert문 public void insert() { MemberDTO member = new MemberDTO("hello","java","7777","KH아카데미@naver.com"); int i = getSqlSession().insert("myMem.insert",member); // if (i > 0) { // getSqlSession().commit(); // } else { // getSqlSession().rollback(); // } // getSqlSession().close(); // return i; // getSqlSession()영역에서는 커밋 롤백을 할 필요가없다. } //setter를 통한 update문 public int update() { MemberDTO member = new MemberDTO(); member.setMemberid("scott"); member.setName("바보"); System.out.println("MemberDAO member : " + member); int i = getSqlSession().update("myMem.update",member); return i; } } | cs |
[Main.java]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | public class Main { public static void main(String[] ars) { ApplicationContext context = new GenericXmlApplicationContext("mybatis.xml"); MemberDAO memberDAO = context.getBean("memberDAO", MemberDAO.class); // int a = memberDAO.insert(); // int a = memberDAO.update(); // if(a>0) { // System.out.println("업데이트 성공!"); // }else { // System.out.println("업데이트 실패!"); // } List<MemberDTO> list = memberDAO.selectAll(); for (MemberDTO memberDTO : list) { System.out.println(memberDTO + "\n"); } } } | cs |
cf) 만약에 같은 이름의 값이 두개의 파라미터 가 필요할땐 어떻게 해야할까
1 2 3 4 5 6 7 8 9 10 11 | <update id="update" parameterType="spring.mybatis.MemberDTO"> update member <set> <if test="memberid !=null">memberid = #{memberid},</if> <if test="password !=null">password = #{password},</if> <if test="name != null"> name = #{name},</if> <if test="email !=null"> email = #{email}</if> </set> where memberid = #{memberid} </update> | cs |
이상황에선 memberid값이 두개가 있어야하기때문에 여러개를 던질 수 있는 parameterType을 map으로 받고,
map 객체에다가 각각 다른 String key값으로 (memberid1, memberid2) 각각 #{ }으로 던진다.
'JAVA > Spring' 카테고리의 다른 글
Spring - Maven웹프로젝트 web.xml설정 (0) | 2018.09.11 |
---|---|
Spring MVC 설정 (0) | 2018.09.11 |
Spring - JdbcDaoSupport (0) | 2018.09.10 |
Spring을 통한 jdbc연결 (0) | 2018.09.10 |
Spring 예제 - 어노테이션 , @Aspect (0) | 2018.09.10 |