๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
JAVA/MyBatis

[JAVA] Spring์—์„œ Mybatis ์—ฐ๋™

by soy๋ฏธ๋‹ˆ 2021. 9. 24.

 

 

 

 

Spring ํ™˜๊ฒฝ์—์„œ Mybatis - Mysql ์—ฐ๋™ํ•ด์„œ ๋กœ๊ทธ์ธ ํ”„๋กœ๊ทธ๋žจ ๋งŒ๋“ค๊ธฐ

 

 

1. Spring ์„ธํŒ…

https://wz0z30.tistory.com/12

 

[Java] Spring ์ดˆ๊ธฐ ์„ธํŒ… (์ˆ˜๋™)

1. Maven Project ์ƒ์„ฑ ์นดํƒˆ๋กœ๊ทธ Internal ๋กœ ์„ค์ •ํ•œ ํ›„ web-app ์„ ํƒ Group id, Artifact id ์„ค์ • -> Finish C:\Users\user\eclipse-workspace\ํ”„๋กœ์ ํŠธ๋ช…\.settings ์— ์ ‘๊ทผ org.eclipse.jdt.core.prefs ํŒŒ์ผ..

wz0z30.tistory.com

 

 

2. pom.xml ์— ์˜์กด์„ฑ ์ฃผ์ž… (dependency)

		<dependency>
			<groupId>commons-dbcp</groupId>
			<artifactId>commons-dbcp</artifactId>
			<version>1.4</version>
		</dependency>

		<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>8.0.26</version>
		</dependency>

		<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>3.5.7</version>
		</dependency>
  • mybatis, mysql ์˜์กด์„ฑ ์ฃผ์ž…

 

3. src/main/java/Pack ์•„๋ž˜์— Person ๋นˆ ๊ฐ์ฒด ์ƒ์„ฑ

package Pack01;

public class Person{
	String name;
	int age;
	public String getName() { return name; }
	public void setName(String name) { this.name = name; }
	public int getAge() { return age; }
	public void setAge(int age) { this.age = age; }    // ctrl + alt + j
}

 

 

4. src/main/java/resources ์•„๋ž˜์— 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">

<mapper namespace="Mapper">
	<insert id="test08" parameterType="Pack01.Person">
		insert into table01(age, name) values (#{age}, #{name})
	</insert>
</mapper>

 

 

5. src/main/java/resources ์•„๋ž˜์— 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="development">
    <environment id="development">
      <transactionManager type="JDBC"/>
      <dataSource type="POOLED">
        <property name="driver" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://ip์ฃผ์†Œ:ํฌํŠธ๋ฒˆํ˜ธ/DB๋ช…"/>
        <property name="username" value="DB ์•„์ด๋””"/>
        <property name="password" value="DB ๋น„๋ฒˆ"/>
      </dataSource>
    </environment>
  </environments>
  <mappers>
    <mapper resource="Mapper.xml"/>
  </mappers>
</configuration>

 

 

6. src/main/java/webapp ์•„๋ž˜์— jsp ํŒŒ์ผ ์ž‘์„ฑ

 

index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<form method="post" action="insert">
		<fieldset>
			<legend>๋กœ๊ทธ์ธ</legend>
			<label>์ด๋ฆ„</label>
			<input type = "text" name = "name"/><br/>
			<label>๋‚˜์ด</label>
			<input type = "number" name = "age"/><br/>
			<input type= "submit"  value = "๊ฐ€์ž…"/><br/>
		</fieldset>
	</form>
</body>
</html>

 

 

 

Person.java (์ž๋ฐ” ๋นˆ ๊ฐ์ฒด)

package Pack01;

public class Person{
	String name;
	int age;
	public String getName() { return name; }
	public void setName(String name) { this.name = name; }
	public int getAge() { return age; }
	public void setAge(int age) { this.age = age; }    // ctrl + alt + j
}

 

 

 

UserDao.java (Mybatis ์—ฐ๋™)

package Pack01;
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

class UserDao {
	SqlSession session;
	SqlSessionFactory ssf;

	UserDao(){
		try {
			InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
			ssf = new SqlSessionFactoryBuilder().build(is);
		} catch (Exception e) {
			e.printStackTrace();
		}
		this.session = ssf.openSession();
	}

	void insert(Person p) { 	
		Proxy.command(this, new Delegate() {
			public int delegate(SqlSession session) {
				return session.insert("test08", p);
			}
		});
	}

	void update(Person p) {
		Proxy.command(this, new Delegate() {
			public int delegate(SqlSession session) {
				return session.update("test08", p);
			}
		});
	}
} 

interface Delegate {
	int delegate(SqlSession session);
}

class Proxy {
	static void command(UserDao dao, Delegate d) {
		SqlSession session = dao.ssf.openSession();
		try {
			int result = d.delegate(session);
			System.out.println("result: "+result);
			if(result > 0) {
				session.commit();
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			session.close();
		}
	}
}

 

 

 

UserController.java

package Pack01;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

@Controller
class World {
	@RequestMapping("/insert")
	public String method01(
			@RequestParam(value="name") String name,
			@RequestParam(value="age") int age,
			Person p,
			UserDao dao
			) {
		p.setAge(age);
		p.setName(name);
		dao.insert(p);
		return "ResultView";
	}
}

 

 

 

ResultView.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h1>๋“ฑ๋ก๋˜์—ˆ์Šต๋‹ˆ๋‹ค.</h1>
</body>
</html>

 

 

 

7. war ํŒŒ์ผ๋กœ export ํ•ด์„œ ๋ฆฌ๋ˆ…์Šค๋กœ ์„œ๋ฒ„์— ์˜ฌ๋ฆฌ๊ธฐ

4๋ฒˆ์— tomcat9 ์„œ๋ฒ„์— java ํ”„๋กœ์ ํŠธ ์—…๋กœ๋“œ ๋ถ€๋ถ„ ์ฐธ๊ณ ํ•˜๊ธฐ : https://wz0z30.tistory.com/8

 

VirtualBox-MobaXterm์„ ์ด์šฉํ•œ ์„œ๋ฒ„ ๊ตฌ์ถ•

1. VirtualBox ์ƒˆ๋กœ ๋งŒ๋“ค๊ธฐ ๋„คํŠธ์›Œํฌ ์„ค์ • : ๋„คํŠธ์›Œํฌ ์ด๋ฆ„ ํ™˜๊ฒฝ ์„ค์ •์—์„œ ๋งŒ๋“ค์–ด๋†“์€ NatNetwork(๋„คํŠธ์›Œํฌ ์ด๋ฆ„)์œผ๋กœ ๋ณ€๊ฒฝ sudo apt-get update sudo apt-get upgrade -y ip addr sudo apt-get install net-tool..

wz0z30.tistory.com

 

 

'JAVA > MyBatis' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Java] MyBatis xml ์ž‘์„ฑ  (0) 2023.09.18
[JAVA] MyBatis ์‹œ์ž‘ํ•˜๊ธฐ (with Delegation Pattern)  (0) 2021.09.23

๋Œ“๊ธ€