JDBC(3) JAVA 연결 데이터베이스의 추상적인 DAO 작업
DAO 작업의 인터페이스 추상
package lesson2.dao;
import java.io.Serializable;
import java.util.List;
/**
* DAO
* @author hh
*
* @param
*/
public interface Dao<T> {
public T findById(Serializable id,String sql,RowMapper rm);
public List find(String sql,RowMapper rm,Object...obj);
public int saveOrUpdateOrDelete(String sql,Object...obj);
}
실현 인터페이스
package lesson2.dao;
import java.io.Serializable;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import lesson2.JdbcUitl;
/**
* , DAO
* @author hh
*
* @param
*/
public class DaoSupport<T> implements Dao<T>{
/**
* ID
*/
@Override
public T findById(Serializable id,String sql,RowMapper rm) {
Connection con = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
T t=null;
try {
con = JdbcUitl.getConn();
pstmt = con.prepareStatement(sql);
pstmt.setObject(1, id);
rs = pstmt.executeQuery();
if(rs.next()){
// -->
t = rm.getRow(rs);
}
} catch (Exception e) {
e.printStackTrace();
}finally{
JdbcUitl.close(pstmt, rs);
}
return t;
}
/**
*
*/
@Override
public List find(String sql, RowMapper rm, Object... obj) {
List lists = new ArrayList();
Connection con = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
con = JdbcUitl.getConn();
pstmt = con.prepareStatement(sql);
for(int i = 0;i1, obj[i]);
}
rs=pstmt.executeQuery();
while(rs.next()){
T t = rm.getRow(rs);
lists.add(t);
}
} catch (Exception e) {
e.printStackTrace();
}finally{
JdbcUitl.close(pstmt, rs);
}
return lists;
}
/**
*
*/
@Override
public int saveOrUpdateOrDelete(String sql, Object... obj) {
Connection con = null;
PreparedStatement pstmt = null;
int n = 0;
try {
con = JdbcUitl.getConn();
pstmt = con.prepareStatement(sql);
for(int i=0;i1,obj[i]);
}
n=pstmt.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}finally{
JdbcUitl.close(pstmt, null);
}
return n;
}
}
RowMapper 커넥터
구체적인 반환값 유형을 얻을 수 없기 때문에 구체적인 두께가 데이터베이스 반환값을 얻은 후에 결정해야 한다.먼저 인터페이스를 정의하고 다음 프로그램에서 실현합니다.
ackage lesson2.dao;
import java.sql.ResultSet;
import java.sql.SQLException;
public interface RowMapper <T> {
public T getRow(ResultSet rs)throws SQLException;
}
테스트 클래스 1 Account 클래스
package lesson2.dao;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import lesson2.Account;
import lesson2.User;
import lesson2.dao.UserTest.UserMapper;
public class AccountTest {
public static void main(String[] args) {
DaoSupport dao = new DaoSupport();
// id
// Account account=dao.findById(1001, "select*from account where id = ?",new AccountMapper());
// System.out.println(account);
//
// List accounts = dao.find("select * from account where money=?and id=?", new AccountMapper(), 100,1010);
// for (Account account : accounts) {
// System.out.println(account);
// }
//
Account account = new Account(4000, 1000, "hh");
int n = dao.saveOrUpdateOrDelete("insert into account(id,money,name)values(?,?,?)", account.getId(),account.getMoney(),account.getName());
System.out.println(n);
}
/**
*
* @author hh
*
*/
static class AccountMapper implements RowMapper{
@Override
public Account getRow(ResultSet rs) throws SQLException {
Account account = new Account();
account.setId(rs.getInt("id"));
account.setMoney(rs.getInt("money"));
account.setName(rs.getString("name"));
return account;
}
}
}
테스트 클래스 2 User 클래스
package lesson2.dao;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import lesson2.User;
public class UserTest {
public static void main(String[] args) {
DaoSupport dao= new DaoSupport();
// id
// User u = dao.findById(1001,"select * from bb_user where id = ?",new UserMapper());
// System.out.println(u);
//
// List users = dao.find("select * from bb_user where username=?", new UserMapper(), "zhangsan");
// for (User user : users) {
// System.out.println(user);
// }
//
User user = new User(3000, "XXX", "YYY", "ZZZ");
int n =dao.saveOrUpdateOrDelete("insert into bb_user(id,username,userpass,email)values(?,?,?,?)",user.getId(),user.getUsername(),user.getUserpass(),user.getEmail());
System.out.println(n);
}
/**
*
* @author hh
*
*/
static class UserMapper implements RowMapper{
@Override
public User getRow(ResultSet rs) throws SQLException {
// TODO Auto-generated method stub
User u = new User();
u.setId(rs.getInt("id"));
u.setUsername(rs.getString("username"));
u.setUserpass(rs.getString("userpass"));
u.setEmail(rs.getString("email"));
return u;
}
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Calender 클래스의 응용Date 클래스의 가장 큰 역할은 현재 시간을 얻는 것이고, 진행 시간과 날짜 처리에 있어서 Calender 클래스를 사용하는 것을 추천합니다. java.util.Calendar 클래스는 추상적인 클래스입니다. ge...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.