[spring MVC]노트정리 : MyBatis셋팅, DB(Mysql)연동 및 insert/delete/select/update 적용

Young eee·2023년 2월 21일
0

SpringMVC

목록 보기
2/7
post-thumbnail

💻 MyBatis

  • MavenRepository 에서 MyBatis/MySql Connector 검색 후 jar파일 다운
    src/main/webapp/WEB-INF/lib/jar파일 여기에 넣어두기
  • Java Resources → src/main/java → pakages mybatis 생성 후 config.xml/mapper.xml 생성

📌 MyBatis

config.xml

<?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>
	<environments default="developerment">
		<environment id="developerment">
			<transactionManager type="JDBC"/>
			<dataSource type="POOLED">
				<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
				<property name="url" value="jdbc:mysql://localhost:3306/mydb"/>
				<property name="username" value="root"/>
				<property name="password" value="1234"/>
			</dataSource>
		</environment>
	</environments>
	
	<mappers>
		<mapper resource="mybatis/mapper.xml"/>
	</mappers>
</configuration>

mapper.xml

<?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">

<!-- Query -->	
<mapper namespace="mybatis.mapper">

<!-- 
	
	<select id="외부에서 접근할 문자열"
			parameterType="object" <- String, Object	들어가는 값(object)
			resultType="object">
			
			쿼리문
			select id, name, email
			where id = #{  }		#{ 문자열(값) } 	${ 숫자 }
			
	</select>

	<insert
			
	<delete
	
	<update
	
 -->
 
<insert id="addmember" parameterType="dto.MemberDto">
	insert into member(id, pwd, name, email, auth)
	values(#{id}, #{pwd}, #{name}, #{email}, 3)
</insert>

<select id="getMember" parameterType="java.lang.String"
		resultType="dto.MemberDto">
	select id, pwd, name, email, auth
	from member
	where id =#{id}		
</select>

<select id="allMember" resultType="dto.MemberDto">
	select * from member
</select>

<delete id="deleteMember" parameterType="String">
	delete from member
	where id =#{id}
</delete>

<update id="updateMember" parameterType="dto.MemberDto">
	update member
	set name=#{name}, email=#{email}
	where id=#{id}
</update>


</mapper>

MainClass.java

  • 기존에 있던 db데이터를 사용
  • MemberDto를 만들어서 사용(id/pwd/name/email 변수, constructor, getter/setter)
package main;

import java.io.InputStream;
import java.util.List;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import dto.MemberDto;

public class MainClass {
	public static void main(String[] args) throws Exception {
		
		// 설정파일 read
		InputStream is = Resources.getResourceAsStream("mybatis/config.xml");
		
		// SqlsessionFactory 객체를 생성 
		SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
		
		// SqlSession 객체를 취득 
		SqlSession session = factory.openSession();
		
		// insert
		
		MemberDto dto = new MemberDto("def", "123", "이종석", "def@naver.com", 3);
		
		int count = session.insert("addmember", dto);
		if(count > 0) {
			session.commit();
			System.out.println("추가성공!");
		}else {
			session.rollback();
			System.out.println("추가실패!");
		}
		
		
		// select (1개의 데이터)
		
		String id="abc";
		MemberDto dto = session.selectOne("getMember", id);
		System.out.println(dto.toString());
		
		// select (다수의 데이터)
		List<MemberDto> list = session.selectList("allMember");
		for (MemberDto m : list) {
			System.out.println(m.toString());
		}
		
		
		// delete
		String id = "erte";
		int count = session.delete("deleteMember", id);
		if(count > 0) {
			session.commit();
			System.out.println("삭제 성공!");
		}else {
			session.rollback();
			System.out.println("삭제 실패!");
		}
		
		// update	
		MemberDto dto = new MemberDto("abc", null, "무야호", "abc@google.com", 0);
		int count1 = session.update("updateMember", dto);
		if(count1 > 0) {
			session.commit();
			System.out.println("수정 성공!");
		}else {
			session.rollback();
			System.out.println("수정 실패!");
		}
	}
}

0개의 댓글