자바 학습 의 DAO 디자인 모델
전형 적 인 DAO 구현 에는 세 가지 구성 요소 가 있 습 니 다.
1. DAO 인터페이스
2. DAO 인터페이스의 구체 적 인 유형;
3. 데이터 전달 대상 (DTO) 또는 값 대상 (VO) 또는 영역 모델 (domain) [개인 적 으로 데이터베이스 표 에 대응 하 는 자바 대상 클래스 라 고 생각 합 니 다]
예 를 들 어:
먼저 데이터베이스 에 표 Person 을 만 들 면 네 개의 필드 id (pk), name, age, desc (설명) 가 있 습 니 다.
그리고 domain 만 들 기
1 package com.gh.domain;
2
3 public class Person {
4 private int id;
5 private String name;
6 private int age;
7 private String desc;
8 public int getId() {
9 return id;
10 }
11 public void setId(int id) {
12 this.id = id;
13 }
14 public String getName() {
15 return name;
16 }
17 public void setName(String name) {
18 this.name = name;
19 }
20 public int getAge() {
21 return age;
22 }
23 public void setAge(int age) {
24 this.age = age;
25 }
26 public String getDesc() {
27 return desc;
28 }
29 public void setDesc(String desc) {
30 this.desc = desc;
31 }
32 public Person(String name, int age, String desc) {
33 super();
34 this.name = name;
35 this.age = age;
36 this.desc = desc;
37 }
38 public Person() {
39 super();
40 }
41 // id oracle mysql id
42 public Person(int id, String name, int age, String desc) {
43 super();
44 this.id = id;
45 this.name = name;
46 this.age = age;
47 this.desc = desc;
48 }
49 @Override
50 public String toString() {
51 return "Person [id=" + id + ", name=" + name + ", age=" + age
52 + ", desc=" + desc + "]";
53 }
54 }
그리고 Person 의 Dao 인 터 페 이 스 를 쓰 도록 하 겠 습 니 다.
1 package com.gh.Dao;
2
3 import java.sql.SQLException;
4 import java.util.List;
5
6 import com.gh.domain.Person;
7 /**
8 * Person DAO
9 * @author ganhang
10 *
11 */
12 public interface PersonDao{
13 //
14 public void add(Person p) throws SQLException;
15 //
16 public void update(Person p)throws SQLException;
17 //
18 public void delete(int id)throws SQLException;
19 // id person
20 public Person findById(int id)throws SQLException;
21 // Person
22 public List<Person> findAll()throws SQLException;
23
24 }
그리고 Dao 인터페이스의 실현 류
1 package com.gh.Dao.impl;
2
3 import java.sql.Connection;
4 import java.sql.PreparedStatement;
5 import java.sql.ResultSet;
6 import java.sql.SQLException;
7 import java.util.ArrayList;
8 import java.util.Arrays;
9 import java.util.List;
10
11 import javax.sound.sampled.Line;
12
13 import com.gh.Dao.PersonDao;
14 import com.gh.db.JdbcUtil;
15 import com.gh.domain.Person;
16
17 /**
18 * PersonDao
19 *
20 * @author ganhang
21 *
22 */
23 public class PersonDaoImpl implements PersonDao {
24 //
25 @Override
26 public void add(Person p) throws SQLException {
27 // oracle , id 。
28 String sql = "insert into Person(id,name,age,description) values(?,?,?,?)";
29 // ,
30 JdbcTemplete.Update(sql, p.getId(), p.getName(), p.getAge(),
31 p.getDesc());
32 }
33 //
34 @Override
35 public void update(Person p) throws SQLException {
36 String sql = "update Person set name=?,age=?,description=? where id=?";
37 JdbcTemplete.Update(sql, p.getName(), p.getAge(), p.getDesc(),
38 p.getId());
39 }
40 //
41 @Override
42 public void delete(int id) throws SQLException {
43 String sql = "delete Person where id=?";
44 JdbcTemplete.Update(sql, id);
45
46 }
47 // id
48 @Override
49 public Person findById(int id) throws SQLException {
50 String sql = "select * from Person where id=?";
51 // JdbcTemplete ,
52 return (Person) JdbcTemplete.Query(sql, new ResultSetHandler() {
53 @Override
54 public Object doHandler(ResultSet rs) throws SQLException {
55 Person p = null;
56 // person
57 if (rs.next()) {
58 p = new Person();
59 p.setId(rs.getInt(1));
60 p.setName(rs.getString(2));
61 p.setAge(rs.getInt(3));
62 p.setDesc(rs.getString(4));
63 }
64 return p;
65 }
66 }, id);
67 }
68 //
69 @SuppressWarnings("unchecked")
70 @Override
71 public List<Person> findAll() throws SQLException {
72 String sql = "select * from Person";
73 return (List<Person>) JdbcTemplete.Query(sql, new ResultSetHandler() {
74 @Override
75 public Object doHandler(ResultSet rs) throws SQLException {
76 List<Person> Persons = new ArrayList<Person>();
77 Person p = null;
78 while (rs.next()) {
79 p = new Person();
80 p.setId(rs.getInt(1));
81 p.setName(rs.getString(2));
82 p.setAge(rs.getInt(3));
83 p.setDesc(rs.getString(4));
84 Persons.add(p);
85 }
86 return Persons;
87 }
88 });
89 }
90
91 }
JdbcTemplete
1 package com.gh.Dao.impl;
2
3 import java.sql.Connection;
4 import java.sql.PreparedStatement;
5 import java.sql.ResultSet;
6 import java.sql.SQLException;
7
8 import com.gh.db.JdbcUtil;
9 /**
10 * PersonDaoImpl
11 * @author ganhang
12 *
13 */
14 public class JdbcTemplete {
15 /**
16 * ( 、 、 )
17 * @param sql sql
18 * @param args
19 */
20 public static void Update(String sql, Object... args)throws SQLException {
21 Connection conn = JdbcUtil.getConnection();
22 try {
23 //
24 PreparedStatement ps = conn.prepareStatement(sql);
25 if (args != null) {
26 for (int i = 0; i < args.length; i++) {
27 ps.setObject(i + 1, args[i]);
28 }
29 }
30 ps.executeUpdate();
31 } catch (SQLException e) {
32 e.printStackTrace();
33 }
34 }
35 /**
36 *
37 * @param sql sql
38 * @param handler
39 * @param args
40 * @return
41 */
42 public static Object Query(String sql,ResultSetHandler handler,Object...args)throws SQLException{
43 Connection conn=JdbcUtil.getConnection();
44 PreparedStatement ps=null;
45 ResultSet rs=null;
46 try {
47 ps = conn.prepareStatement(sql);
48 if(args!=null){
49 for(int i=0;i<args.length;i++){
50 ps.setObject(i+1, args[i]);
51 }
52 }
53 rs=ps.executeQuery();
54 return handler.doHandler(rs);
55 } catch (SQLException e) {
56 e.printStackTrace();
57 }
58 return rs;
59 }
60 }
ResultSetHandler
1 package com.gh.Dao.impl;
2
3 import java.sql.ResultSet;
4 import java.sql.SQLException;
5 /**
6 *
7 * @author ganhang
8 *
9 */
10 public interface ResultSetHandler {
11 public Object doHandler(ResultSet rs)throws SQLException;
12 }
이렇게 해서 Person 표 에 대한 첨삭 과 수정 조 사 는 실현 되 었 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.