Spring ํ๊ฒฝ์์ Mybatis - Mysql ์ฐ๋ํด์ ๋ก๊ทธ์ธ ํ๋ก๊ทธ๋จ ๋ง๋ค๊ธฐ
1. Spring ์ธํ
[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 |
๋๊ธ