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(); 주의: 삭제 및 수정 작업, 사무 제어 조회 작업을 진행하려면 제어할 수도 있고 제어하지 않을 수도 있으며 건의를 제어하지 않을 수도 있습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.