

๊ฐ์ฌ๋ DB ์๋ฃ(๋ผ์ด๋ธ๋ฌ๋ฆฌ)
๋ค์ด๋ก๋ํ ํ์ผ ์๋ผ๋ด๊ธฐ ctrl + T
ํด๋น ํจํค์ง๋ก ๊ฐ์ฌ๋DB์๋ฃ ๋ถ์ฌ๋ฃ๊ธฐ (ctrl + V)
mysql ๋ผ์ด๋ธ๋ฌ๋ฆฌ > com.mysql > cj > jdbc > Driver.class


private Vector connections = new Vector(10);
private String _driver = "com.mysql.cj.jdbc.Driver", // Ctrl + V
_url = "jdbc:mysql://127.0.0.1:@@@@/chatting", //Mysql chatting schema
_user = "root", // Mysql workbench id
_password = "@@@@"; //Mysql workbench password
์๋ก์ด SCHEMAS ์ด๊ธฐ
user_mst table ์์ฑ
role_mst table ์์ฑ
role_dtl table ์์ฑ
Column ์ ๋ณด๋ ์ฌ์ง ์ฐธ๊ณ




package j23_database;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import j20_JSON.builder.User;
public class UserInsert {
private DBConnectionMgr pool ;
public UserInsert() {
pool = DBConnectionMgr.getInstance(); //Singleton
}
public int saveUser(User user) {
int successCount = 0;
String sql = null;
Connection connection = null; // ์ ์ญ๋ณ์๋ก ๋นผ์ค
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
try { // why???
connection = pool.getConnection(); //workbench ์ ์ ์
sql = "insert into user_mst\r\n"
+ "values (0,?,?,?,?)";
/*
* ? ์ฐ๋ ์ด์ : ์ด๋ค ๊ฐ์ด ๋ค์ด๊ฐ์ง ๋ชจ๋ฅด๋
*
*/
preparedStatement = connection.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);
preparedStatement.setString(1, user.getUsername()); // 1 <-- '?' ์ ์์
preparedStatement.setString(2, user.getPassword());
preparedStatement.setString(3, user.getName());
preparedStatement.setString(4, user.getEmail());
successCount = preparedStatement.executeUpdate(); //insert, update, delete ๋ช
๋ น ์คํ
resultSet = preparedStatement.getGeneratedKeys(); //return ResultSet
if(resultSet.next()) {
System.out.println("์ด๋ฒ์ ๋ง๋ค์ด์ง user_id Key๊ฐ: " + resultSet.getInt(1));
user.setUserId(resultSet.getInt(1)); //set
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return successCount; // ๊ฑด์๋ง ๋ฆฌํด
}
public int saveRoles(Map<String,Object> map) {
int successCount = 0;
String sql = null;
Connection connection = null; // ์ ์ญ๋ณ์๋ก ๋นผ์ค
PreparedStatement preparedStatement = null;
try { // why???
connection = pool.getConnection(); //workbench ์ ์ ์
List<Integer> roles = (List<Integer>) map.get("roles"); // map์ key๊ฐ์ด ๋ช
ํ
User user = (User)map.get("user");
sql = "insert into role_dtl\r\n"
+ " values";
// map์์ ๋ค์ด ์๋ List ํฌ๊ธฐ๋งํผ ๋ฐ๋ณต ํ์
for(int i = 0; i<roles.size(); i++) {
sql += "(0,?,?)";
if(i< roles.size()-1) {
sql += ",";
}
}
preparedStatement = connection.prepareStatement(sql); //prepareStatement์ ์์ฑ๋ query๋ฌธ์ ์ ๋ฌํด์ผํจ
for(int i = 0; i<roles.size();i++) {
preparedStatement.setInt((i*2) + 1, roles.get(i) );
preparedStatement.setInt((i*2) + 2, user.getUserId());
}
successCount = preparedStatement.executeUpdate(); //insert, update, delete ๋ช
๋ น ์คํ
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return successCount;
}
public static void main(String[] args) {
UserInsert userInsert = new UserInsert(); //saveUser๋ฅผ ์ฐ๊ธฐ์ํ ๊ฐ์ฒด ์์ฑ
User user = User.builder()
.username("qqq")
.password("1234")
.name("qqq")
.email("qqq@gmail.com")
.build();
int successCount = userInsert.saveUser(user);
System.out.println("query execution sucess: " + successCount + "๊ฑด");
System.out.println(user);
/*==============================================================*/
/*
* ๊ถํ์ ์ด๋ป๊ฒ ์ฃผ๋์ง ๋ณด์ฌ์ฃผ๋ ์
*/
List<Integer> roleIdList = new ArrayList<>();
roleIdList.add(15); // ์ซ์๊ฐ ๋ฌด์์ด๋ ์ค์์น์์
roleIdList.add(16);
Map<String,Object> map = new HashMap<>();
map.put("user", user);
map.put("roles", roleIdList);
/*
* ๋ฐ์ดํฐ๋ฅผ ๋ฌถ์ด๋๋ ์ฉ๋
* List - ๋ฐ๋ณต ์ฉ๋
*
* Map - ๊ผฌ๋ฆฌํ๋ฅผ ๋ฌ์๋๋๋ค... key๋ฅผ ์ ํํ๋ฉด value๊ฐ ๋ฐ๋ผ๋์ค๋... ์์ entity(์ค์ฌ) ๊ฐ์ฒด
*
*/
System.out.println(map);
successCount = userInsert.saveRoles(map);
}
}
package j23_database;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
public class RoleInsert {
private DBConnectionMgr pool; // ํธ๋ํฝ ๊ด๋ฆฌ (์ ์๋๊ธฐ์ ์ฐฝ...)
public RoleInsert() {
pool = DBConnectionMgr.getInstance(); //์ฑ๊ธํค, ์ ์ผํ ์ธ์คํด์ค(๊ฐ์ฒด) , ์ปฌ๋ ์
List( Vector )
}
public int saveRole(String roleName) {
int successCount = 0;
/*
* ํ๋ฆฌ ์ปค๋ฅ์
(free - Connection) ํ ๋ ์ฐ๋ ๋ณ์๋ค
*/
String sql = null;
Connection con = null; //db ์ฐ๊ฒฐ
PreparedStatement pstmt = null; //db ์คํ
ResultSet rs = null;
try {
con = pool.getConnection();
sql = "insert into role_mst values (0,?)";
pstmt = con.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);
pstmt.setString(1, roleName); // ์ฒซ๋ฒ์งธ ? < --- set
successCount = pstmt.executeUpdate(); // ์์ฑ๋ query๋ฌธ pstmt๊ฐ ๋ค๊ณ ์์
int newKey = 0;
rs = pstmt.getGeneratedKeys(); // ์ฟผ๋ฆฌ๊ฐ ์คํ๋๋ฉด, ์๋์ฆ๊ฐ(auto increment) ํค๊ฐ์ ๋ค๊ณ ์์
if(rs.next()) { // while ๋ฌธ ๋์ If๋ฌธ ์ด ์ด์ ? ๋ฐ์ดํฐ๊ฐ ํ๋๋ผ์..
newKey = rs.getInt(1); // 1๋ฒ์ด์ ์์น
}
System.out.println(newKey !=0 ? "์๋ก์ด ํค๊ฐ: " + newKey : "ํค๊ฐ ์์ฑ๋์ง ์์");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
pool.freeConnection(con, pstmt, rs);
}
return successCount;
}
public static void main(String[] args) {
RoleInsert roleInsert = new RoleInsert();
int successCount = roleInsert.saveRole("ROLE_TESTER");
System.out.println("insert ์ฑ๊ณต ๊ฑด์: " + successCount);
}
}
Java์์ ํ์์ ๋ณด ์
๋ฐ์ดํธ, MySQL์์ ํ์ธํ ๋ฐ์ดํฐ (user_mst)
Java์์ ํ์์ ๋ณด ์
๋ฐ์ดํธ, MySQL์์ ํ์ธํ ๋ฐ์ดํฐ (role_dtl)
Java์์ ํ์์ ๋ณด ์
๋ฐ์ดํธ, MySQL์์ ํ์ธํ ๋ฐ์ดํฐ (role_mst)