dao+서비스 추가 삭제 및 수정 상세 설명 실현

7469 단어
1. 서비스 처리 개념: 서비스(Biz) 업무층 사용자가 완성한 기능 중 하나는 바로 업무이다.업무의 완성은 모두 DAO를 호출하는 방법에 의존한다.하나의 DAO에서 여러 방법을 호출할 수 있고, 여러 DAO에서 여러 방법을 호출할 수 있다
2. 테이블을 먼저 생성합니다.
create table emp(
id number(10) primary key,
name varchar2(30),
salary number(10,2),
age number(3)
)

3: 실체 클래스 만들기: 맵으로 만든 데이터베이스 만들기
public class Emp {

private int id;
private String name;
private double salary;
private int age;
}
        get、set            

4: 쓰기 dao층: 절차: 먼저 추가 삭제 검색 인터페이스를 쓴다.재실현 인터페이스
     :	
public interface EmpDAO {
//      
public void insertEmp(Emp emp);
//    
public void deleteEmp(int id);
//      
public void updateEmp(Emp emp);
//      
public List selectAllEmps();
//    
public Emp fuzzySelect(int id);
//    
List selectByKey(String name);
//    
List selectByPage(int pageIndex);
}

실현 인터페이스: 먼저 dao 인터페이스를 실현한 다음에 실현된 인터페이스에서 실현된 코드를 쓴다. 이 코드는 기초 코드로 최적화할 수 있다.
public class EmpDAOImpl implements EmpDAO{
@Override
public void insertEmp(Emp emp) {
	Connection conn = null;
	PreparedStatement pstm = null;
	try{
		conn = JDBCUtil.getConnection();
		String sql="insert into emp values(?,?,?,?)";
		pstm = conn.prepareStatement(sql);
		pstm.setInt(1, emp.getId());
		pstm.setString(2,emp.getName());
		pstm.setDouble(3, emp.getSalary());
		pstm.setInt(4, emp.getAge());
		pstm.executeUpdate();
	}catch(Exception e){
		e.printStackTrace();
		throw new RuntimeException("        ");
	}finally{
		JDBCUtil.close(null, pstm);
	}
}

@Override
public void deleteEmp(int id) {
	Connection conn = null;
	PreparedStatement pstm = null;
	try{
		conn = JDBCUtil.getConnection();
		String sql="delete from emp where id=?";
		pstm = conn.prepareStatement(sql);
		pstm.setInt(1, id);
		pstm.executeUpdate();
	}catch(Exception e){
		e.printStackTrace();
		throw new RuntimeException("    DAO    ");
	}finally{
		JDBCUtil.close(null, pstm);
	}
}

@Override
public void updateEmp(Emp emp) {
	Connection conn = null;
	PreparedStatement pstm = null;
	try{
		conn = JDBCUtil.getConnection();
		String sql="update emp set name=?,salary=?,age=?  where id=?";
		pstm = conn.prepareStatement(sql);
		pstm.setString(1, emp.getName());
		pstm.setDouble(2, emp.getSalary());
		pstm.setInt(3, emp.getAge());
		pstm.setInt(4, emp.getId());
		pstm.executeUpdate();
	}catch(Exception e){
		e.printStackTrace();
		throw new RuntimeException("  DAO    ");
	}finally{
		JDBCUtil.close(null, pstm);
	}
}

@Override
public List selectAllEmps() {
	Connection conn = null;
	PreparedStatement pstm = null;
	ResultSet rs = null;
	List emps = new ArrayList();
	try{
		conn = JDBCUtil.getConnection();
		String sql="select * from emp";
		pstm = conn.prepareStatement(sql);
		rs = pstm.executeQuery();
		while(rs.next()){
			Emp emp = new Emp();
			emp.setId(rs.getInt(1));
			emp.setName(rs.getString(2));
			emp.setSalary(rs.getDouble(3));
			emp.setAge(rs.getInt(4));
			emps.add(emp);
		}
		return emps;
	}catch(Exception e){
		e.printStackTrace();
		throw new RuntimeException("    DAO    ");
	}finally{
		JDBCUtil.close(conn, pstm, rs);
	}
}
public Emp fuzzySelect(int id){
		Connection conn=null;
		PreparedStatement psmt=null;
		ResultSet rs=null;
		try{
			conn = JDBCUtil.getConnection();
			String sql="select *  from stu where id=?";
			psmt=conn.prepareStatement(sql);
			psmt.setInt(1, id);
			rs=psmt.executeQuery();
			 
			 Emp e = new Emp();
			while(rs.next()){
				 e.setId(rs.getInt(1));
				 e.setName(rs.getString(2));
				 e.setSalary(rs.getDouble(3));
				 e.setAge(rs.getInt(4));
				
			}
			return e;
		}catch(Exception e){
			e.printStackTrace();
			return null;
		}finally{
			JDBCUtil.close(conn, psmt,rs);
		}
	}

@Override
public List selectByKey(String name) {
	Connection conn=null;
	PreparedStatement psmt=null;
	ResultSet rs=null;
	try{
		conn=JDBCUtil.getConnection();
		String sql="select * from emp where name like ?";
		psmt = conn.prepareStatement(sql);
		psmt.setString(1,"%"+name+"%" );
		rs = psmt.executeQuery();
		List list = new ArrayList();
		while(rs.next()){
			Emp employees = new Emp();
			employees.setId(rs.getInt(1));
			employees.setName(rs.getString(2));
			employees.setSalary(rs.getDouble(3));
			employees.setAge(rs.getInt(4));
			list.add(employees);
		}
		return list;
	}catch(Exception e){
		e.printStackTrace();
		return null;
	}
}

@Override
public List selectByPage(int pageIndex) {
	Connection conn=null;
	PreparedStatement pamt=null;
	ResultSet rs=null;
	try{
		conn=JDBCUtil.getConnection();
		String sql="select * from(select t.*,rownum as rn from telbook t) where rn >= ? and  rn<= ? ";
	    pamt=conn.prepareStatement(sql);
	    pamt.setInt(1,(pageIndex-1)*3+1);
	    pamt.setInt(2,pageIndex*3);
	    rs=pamt.executeQuery();
	    List list = new ArrayList();
	    while(rs.next()){
	    	Emp employees = new Emp();
	    	employees.setId(rs.getInt(1));
	    	employees.setName(rs.getString(2));
	    	employees.setSalary(rs.getDouble(3));
	    	employees.setAge(rs.getInt(4));
	    	list.add(employees);
	    }
	    return list;
	}catch(Exception e){
	 e.printStackTrace();
	 throw new RuntimeException("    ");
	}finally{
		JDBCUtil.close(conn, pamt, rs);
	}
}
}

5:dao층이 다 쓴 후에 서비스층을 써야 돼요. 위의 절차와 같이 인터페이스를 먼저 써야 돼요.
public interface EmpService {
//      
public void AddEmp(Emp es);
//      
public void removeEmp(int id);
//      
public void modifyEmp(Emp emp);
//      
public List queryAll();
//    
List selectByKey(String name);
//    
List selectByPage(int pageIndex);
}

그리고 서비스 인터페이스를 실현합니다.
public class EmpServiceImpl implements EmpService{ private EmpDAO ed = new EmpDAOImpl(); @Override public void AddEmp(Emp emp) { try{ TransactionManager.begin(); ed.insertEmp(emp); TransactionManager.commit(); }catch(Exception e){ e.printStackTrace(); TransactionManager.rollback(); } }
@Override
public void removeEmp(int id) {
	try{
		TransactionManager.begin();
		ed.deleteEmp(id);
		TransactionManager.commit();
	}catch(Exception e){
		e.printStackTrace();
		TransactionManager.rollback();
	}
}

//    
@Override
public void modifyEmp(Emp emp) {
	try{
		TransactionManager.begin();
		ed.updateEmp(emp);
		TransactionManager.commit();
	}catch(Exception e){
		e.printStackTrace();
		TransactionManager.rollback();
	}
}

@Override
public List queryAll() {
	return ed.selectAllEmps();
}


@Override
public List selectByKey(String name) {
	List list = ed.selectByKey(name);
	return list;
}

@Override
public List selectByPage(int pageIndex) {
	List list = ed.selectByPage(pageIndex);
	return list;
}	
}

여기까지 쓰기가 끝났지만 주의해야 할 것은 서비스 인터페이스를 실현할 때 사무 다음은 사무 실현 코드 6: 사무의 의미와 장점
서비스 중의 사무 Oracle: 데이터 일치성 보증 사무: 한 그룹의 ql문장이 실행하는 완전성을 보증합니다. 같이 성공하거나 실패하는 서비스: 업무 조작의 완전성을 보증합니다.비즈니스를 수행하기 위한 일련의 DAO 접근 방식이 함께 성공하거나 실패합니다.사무 제어의 위치: 서비스 방법에서 사무 제어 방식: JDBC 기본 사무 제어: 자동 제출은 오류가 발생하기 쉬운 수동 사무 제어를 사용하는 것을 권장하지 않습니다. 자동 제어를 수동 제어로 바꾸지 않고 원래의 자동 제출을 닫습니다. Connection.setAutoCommit(false); 수동 커밋: Connection.commit(); 수동 롤백:Connection.rollback(); 주의: 삭제 및 수정 작업, 사무 제어 조회 작업을 진행하려면 제어할 수도 있고 제어하지 않을 수도 있으며 건의를 제어하지 않을 수도 있습니다.

좋은 웹페이지 즐겨찾기