Java经典封装JDBC模板(充分体现面向对象思想)

程序清单一览

Java经典封装JDBC模板(充分体现面向对象思想)

bean类

 1 package com.software.usermanager.bean;

 2 

 3 public class Users {

 4     private String id;

 5     private String name;

 6     private String age;

 7     public String getId() {

 8         return id;

 9     }

10     public void setId(String id) {

11         this.id = id;

12     }

13     public String getName() {

14         return name;

15     }

16     public void setName(String name) {

17         this.name = name;

18     }

19     public String getAge() {

20         return age;

21     }

22     public void setAge(String age) {

23         this.age = age;

24     }

25     

26 

27 }

dao类

 1 package com.software.usermanager.dao;

 2 

 3 

 4 import com.software.usermanager.bean.Users;

 5 import com.software.usermanager.util.PageModel;

 6 import java.util.List;

 7 

 8 public interface UsersDAO {

 9     public boolean insert(Users user);    //

10     public boolean delete(String id);   //单条删除

11     public boolean delete(String[] userIds);  //批量删除

12     public boolean update(Users user);  //修改

13     public List<Users> query();     //全部查询

14     public Users query(String id);  //单记录查询

15     public PageModel query(int pageNo, int pageSize); //分页查询

16     public PageModel query(int pageNo, int pageSize,String condition); //分页模糊查询

17     public boolean Login(String name,String password); //登录

18 

19 }

daoimpl类

  1 package com.software.usermanager.dao;

  2 import com.software.usermanager.util.OptTemplate;

  3 import java.sql.ResultSet;

  4 import java.util.List;

  5 

  6 import com.software.usermanager.bean.Users;

  7 import com.software.usermanager.util.*;

  8 

  9 public class UsersDAOImpl implements UsersDAO {

 10 

 11     private OptTemplate optTemplate = null;

 12 

 13     public UsersDAOImpl(OptTemplate optTemplate) {

 14         super();

 15         this.optTemplate = optTemplate;

 16     }

 17     public boolean Login(String name, String password) {

 18         // TODO Auto-generated method stub

 19         return false;

 20     }

 21 

 22     public boolean delete(String id) {

 23         String sql = "delete from users where id=?";

 24         Object[] obj = { id };

 25         return optTemplate.update(sql, obj, false);

 26     }

 27 

 28     public boolean delete(String[] userIds) {

 29         StringBuffer sbStr = new StringBuffer();

 30         Object[] obj = userIds;

 31         ;

 32         for (int i = 0; i < userIds.length; i++) {

 33             sbStr.append("?,");

 34         }

 35         String sql = "delete from users where id in("

 36                 + sbStr.substring(0, sbStr.length() - 1) + ")";

 37         return optTemplate.update(sql, obj, false);

 38     }

 39 

 40     public boolean insert(Users user) {

 41         String sql = "insert into users(id,name,age) values(?,?,?)";

 42         Object[] obj = {user.getId(),user.getName(),user.getAge()};

 43         return optTemplate.update(sql, obj, false);

 44     }

 45 

 46     @SuppressWarnings("unchecked")

 47     public List<Users> query() {

 48         String sql = "select * from users";

 49         Object[] obj = {};

 50         return (List<Users>) optTemplate.query(sql, obj, new UsersDAOObjectMapper());

 51         

 52     }

 53 

 54     public Users query(String id) {

 55         String sql = "select * from users";

 56         Object[] obj = {};

 57         return (Users) optTemplate.query(sql, obj, new UsersDAOObjectMapper()).get(0);

 58     }

 59 

 60     public PageModel query(int pageNo, int pageSize) {

 61         String sql1 = "select * from users";

 62         Object[] obj1 = {};

 63         List<Users> list1 = (List<Users>) optTemplate.query(sql1, obj1,

 64                 new UsersDAOObjectMapper());

 65         int i = list1.size();

 66         String sql="select * from (select j.*,rownum rn from (select * from users) j where rownum<=?) where rn>?";

 67         Object[] obj = {pageNo * pageSize, (pageNo - 1) * pageSize};

 68         List<Users> list = (List<Users>) optTemplate.query(sql, obj,

 69                 new UsersDAOObjectMapper());

 70         PageModel pagemodel = new PageModel();

 71         pagemodel.setPageNo(pageNo);

 72         pagemodel.setPageSize(pageSize);

 73         pagemodel.setList(list);

 74         pagemodel.setTotalRecords(i);

 75         return pagemodel;

 76     }

 77 

 78     public PageModel query(int pageNo, int pageSize, String condition) {

 79         String sql1 = "select * from users";

 80         Object[] obj1 = {};

 81         List<Users> list1 = (List<Users>) optTemplate.query(sql1, obj1,

 82                 new UsersDAOObjectMapper());

 83         int i = list1.size();

 84         String sql="select * from (select j.*,rownum rn from (select * from users where id like '"+condition+"%' or name like '"+condition+"%') j where rownum<=?) where rn>?";

 85         Object[] obj = {pageNo * pageSize, (pageNo - 1) * pageSize};

 86         List<Users> list = (List<Users>) optTemplate.query(sql, obj,

 87                 new UsersDAOObjectMapper());

 88         PageModel pagemodel = new PageModel();

 89         pagemodel.setPageNo(pageNo);

 90         pagemodel.setPageSize(pageSize);

 91         pagemodel.setList(list);

 92         pagemodel.setTotalRecords(i);

 93         return pagemodel;

 94     }

 95 

 96     public boolean update(Users user) {

 97         String sql = "update users set name=?,age=? where id=?";

 98         Object[] obj = {user.getName(),user.getAge(),user.getId()};

 99         return optTemplate.update(sql, obj, false);

100     }

101 

102 

103 }

104 class UsersDAOObjectMapper implements ObjectMapper{

105     public Object mapping(ResultSet rs){

106         Users u=new Users();    

107             try{

108                 

109                 u.setId(rs.getString("id"));

110                 u.setName(rs.getString("age"));

111                 u.setName(rs.getString("name"));

112 

113                 

114             }catch(Exception ex){

115                 ex.printStackTrace();

116             }

117 

118         return u;

119     }

120     

121 }

util类

  1 package com.software.usermanager.util;

  2 import java.sql.Connection;

  3 import java.sql.PreparedStatement;

  4 import java.sql.ResultSet;

  5 import java.sql.SQLException;

  6 import java.sql.Statement;

  7 import java.util.ArrayList;

  8 import java.util.List;

  9 

 10 import com.software.usermanager.db.DBConnection;

 11 

 12 public class OptTemplate {

 13     public Object find(String sql,Object[] obj,ObjectMapper mapper){

 14         Object o=null;

 15         Connection conn=null;

 16         PreparedStatement pstmt=null;

 17         try{

 18             conn=DBConnection.getConn();

 19             pstmt=conn.prepareStatement(sql);

 20             for(int i=0;i<obj.length;i++){

 21                 pstmt.setObject(i+1, obj[i]);

 22                 ResultSet rs=pstmt.executeQuery();

 23                 if(rs.next()){

 24                     o=mapper.mapping(rs);

 25                 }

 26             }

 27             }catch(Exception ex){

 28                 ex.printStackTrace();

 29             }finally{

 30                 try{

 31                     pstmt.close();

 32                     conn.close();

 33                 }catch(SQLException ex){

 34                     ex.printStackTrace();

 35                 }

 36             }

 37             return o;

 38         }

 39 

 40     public List<? extends Object> query(String sql,Object[] obj,ObjectMapper mapper){

 41         Object o=null;

 42         List<Object> list=new ArrayList<Object>();

 43         Connection conn=null;

 44         PreparedStatement pstmt=null;

 45         try{

 46             conn=DBConnection.getConn();

 47             pstmt=conn.prepareStatement(sql);

 48             for(int i=0;i<obj.length;i++){

 49                 pstmt.setObject(i+1, obj[i]);

 50             }

 51                 ResultSet rs=pstmt.executeQuery();

 52 

 53                 while(rs.next()){

 54                     

 55                     o=mapper.mapping(rs);

 56                     list.add(o);

 57                 }

 58             

 59             

 60         }catch(SQLException ex){

 61             ex.printStackTrace();

 62         }finally{

 63             try{

 64                 pstmt.close();

 65                 conn.close();

 66             }catch(SQLException ex){

 67                 ex.printStackTrace();

 68             }

 69         }

 70         return list;

 71     }

 72     public boolean update(String sql,Object[] obj,boolean isGenerateKey){

 73         Connection conn=null;

 74         PreparedStatement pstmt=null;

 75         boolean bFlag=false;

 76         try{

 77             conn=DBConnection.getConn();

 78             pstmt=isGenerateKey ? conn.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS):conn.prepareStatement(sql);

 79             for(int i=0;i<obj.length;i++){

 80                 pstmt.setObject(i+1, obj[i]);

 81             }

 82             conn.setAutoCommit(false);

 83             int i=pstmt.executeUpdate();

 84             conn.commit();

 85             if(i>0)

 86                 bFlag=true;

 87         }catch(SQLException ex){

 88             ex.printStackTrace();

 89         }finally{

 90             try{

 91                 conn.close();

 92                 pstmt.close();

 93                 

 94             }catch(SQLException ex){

 95                 ex.printStackTrace();

 96             }

 97         }

 98         return bFlag;

 99     }

100     

101 

102 }
1 package com.software.usermanager.util;

2 

3 import java.sql.ResultSet;

4 

5 public interface ObjectMapper {

6     public Object mapping(ResultSet rs);

7 

8 }

分页封装类

 1 package com.software.usermanager.util;

 2 

 3 import java.util.List;

 4 

 5 public class PageModel<T> {

 6     

 7     //结果集

 8     private List<T> list;

 9     

10     //记录数

11     private int totalRecords;

12     

13     //每页多少条数据

14     private int pageSize;

15     

16     //第几页

17     private int pageNo;

18 

19     /**

20      * 返回总页数

21      * @return

22      */

23     public int getTotalPages() {

24         return (totalRecords + pageSize - 1) / pageSize;

25     }

26     

27     /**

28      * 首页

29      * @return

30      */

31     public int getTopPageNo() {

32         return 1;

33     }

34     

35     /**

36      * 上一页 

37      * @return

38      */

39     public int getPreviousPageNo() {

40         if (this.pageNo <= 1) {

41             return 1;

42         }

43         return this.pageNo - 1;

44     }

45     

46     /**

47      * 下一页

48      * @return

49      */

50     public int getNextPageNo() {

51         if (this.pageNo >= getButtomPageNo()) {

52             return getButtomPageNo();

53         }

54         return this.pageNo + 1;

55     }

56     

57     /**

58      * 尾页

59      * @return

60      */

61     public int getButtomPageNo() {

62         return getTotalPages();

63     }

64     

65     public List<T> getList() {

66         return list;

67     }

68 

69     public void setList(List<T> list) {

70         this.list = list;

71     }

72 

73     public int getTotalRecords() {

74         return totalRecords;

75     }

76 

77     public void setTotalRecords(int totalRecords) {

78         this.totalRecords = totalRecords;

79     }

80 

81     public int getPageSize() {

82         return pageSize;

83     }

84 

85     public void setPageSize(int pageSize) {

86         this.pageSize = pageSize;

87     }

88 

89     public int getPageNo() {

90         return pageNo;

91     }

92 

93     public void setPageNo(int pageNo) {

94         this.pageNo = pageNo;

95     }

96 }

数据库配置文件dbconf.properties

1 #oracle连接实例

2 driverClass = oracle.jdbc.driver.OracleDriver

3 url = jdbc:oracle:thin:@192.168.137.23:1521:orcl
1 username = 用户名

2 password = 密码

数据库封装类

 1 package com.software.usermanager.db;

 2 

 3 

 4 import java.io.IOException;

 5 import java.sql.Connection;

 6 import java.sql.DriverManager;

 7 import java.sql.SQLException;

 8 import java.util.Properties;

 9 

10 

11 public class DBConnection {

12 

13     private static Connection conn = null;

14     private static Properties props = null;

15 

16     static {

17         props = new Properties();

18         try {

19             props.load(DBConnection.class.getResourceAsStream("/dbconf.properties"));

20         } catch (IOException e1) {

21             e1.printStackTrace();

22         }

23         try {

24             Class.forName(props.getProperty("driverClass"));

25         } catch (ClassNotFoundException e) {

26             e.printStackTrace();

27         }

28     }

29     

30 

31     public static Connection getConn(){

32         try {

33             conn = DriverManager.getConnection(props.getProperty("url"), props.getProperty("username"), props.getProperty("password"));

34             conn.setAutoCommit(false);

35         } catch (SQLException e) {

36             e.printStackTrace();

37         }

38         return conn;

39     }

40 

41     

42     

43     public void closeConn(){

44         try {

45             if (conn != null)

46                 conn.close();

47         } catch (SQLException e) {

48             e.printStackTrace();

49         }

50         

51     }

52 }

junit测试类

  1 package com.software.usermanager.test;

  2 

  3 import java.util.List;

  4 

  5 import com.software.usermanager.bean.Users;

  6 

  7 import org.apache.tomcat.jni.User;

  8 import org.junit.After;

  9 import org.junit.Before;

 10 import org.junit.Test;

 11 

 12 import com.software.usermanager.dao.UsersDAO;

 13 import com.software.usermanager.dao.UsersDAOImpl;

 14 import com.software.usermanager.db.DBConnection;

 15 import com.software.usermanager.util.OptTemplate;

 16 import com.software.usermanager.util.PageModel;

 17 

 18 public class UserTest {

 19     DBConnection dbConn = null;

 20 

 21     @Before

 22     public void setUp() {

 23         dbConn = new DBConnection();

 24     }

 25 

 26     @After

 27     public void tearDown() {

 28         dbConn.closeConn();

 29 

 30     }

 31     /************测试插入记录***************/

 32 

 33 //    @Test

 34 //    public void testinsert() {

 35 //        UsersDAO usersdao = new UsersDAOImpl(new OptTemplate());

 36 //        for(int i=0;i<20;i++){

 37 //        Users u = new Users();

 38 //        u.setId(""+i);

 39 //        u.setName("郑六");

 40 //        u.setAge("2"+i);

 41 //        boolean b=usersdao.insert(u);

 42 //        if(b==false){

 43 //            System.out.println("插入失败");

 44 //        }else{

 45 //            System.out.println("插入成功");

 46 //        }}

 47 //        

 48 //

 49 //    }

 50     /************测试修改记录***************/

 51 

 52 //    @Test

 53 //    public void testupdate() {

 54 //        UsersDAO usersdao = new UsersDAOImpl(new OptTemplate());

 55 //        Users u = new Users();

 56 //        u.setId("5");

 57 //        u.setName("郑六");

 58 //        u.setAge("21");

 59 //        boolean b=usersdao.update(u);

 60 //        if(b==false){

 61 //            System.out.println("更新失败");

 62 //        }else{

 63 //            System.out.println("更新成功");

 64 //        }

 65 //        

 66 //

 67 //    }

 68     /************测试删除单条记录***************/

 69 

 70 //    @Test

 71 //    public void testdeleteById() {

 72 //        UsersDAO usersdao = new UsersDAOImpl(new OptTemplate());

 73 //        boolean b=usersdao.delete("2");

 74 //        if(b==false){

 75 //            System.out.println("删除失败");

 76 //        }else{

 77 //            System.out.println("删除成功");

 78 //        }

 79 //        

 80 //    }

 81     /************测试批量删除记录***************/

 82 //

 83 //    @Test

 84 //    public void testdeleteByArray() {

 85 //        UsersDAO usersdao = new UsersDAOImpl(new OptTemplate());

 86 //        String[] s={"3","4","5"};

 87 //        boolean b=usersdao.delete(s);

 88 //        if(b==false){

 89 //            System.out.println("删除失败");

 90 //        }else{

 91 //            System.out.println("删除成功");

 92 //        }

 93 //        

 94 //    }

 95     /*********查询全部记录结果集为泛型 ************/

 96 //    @Test

 97 //    public void testqueryAll(){

 98 //        UsersDAO usersdao = new UsersDAOImpl(new OptTemplate());

 99 //        List<Users> list=usersdao.query();

100 //        for(Users u:list){

101 //            System.out.println(u.getId());

102 //        }

103 //    }

104     /*********查询单条记录结果集为对象 ************/

105 //    @Test

106 //    public void testqueryAll(){

107 //        UsersDAO usersdao = new UsersDAOImpl(new OptTemplate());

108 //        Users u=usersdao.query("7");

109 //        System.out.println(u.getName());

110 //        

111 //    }

112 //    /*********分页查询全部记录结果集为pagemodel************/

113 //    @Test

114 //    public void testqueryAll(){

115 //        UsersDAO usersdao = new UsersDAOImpl(new OptTemplate());

116 //        PageModel pml=usersdao.query(2,2);

117 //        List<Users> list=pml.getList();

118 //        for(Users u:list){

119 //            System.out.println(u.getId());

120 //        }

121 //    }

122     /*********分页模糊查询全部记录结果集为pagemodel************/

123     @Test

124     public void testqueryAll(){

125         UsersDAO usersdao = new UsersDAOImpl(new OptTemplate());

126         PageModel pml=usersdao.query(1,2,"2");

127         List<Users> list=pml.getList();

128         for(Users u:list){

129             System.out.println(u.getId());

130         }

131     }

132 

133 }

注意:以下代码非本程序必须代码,仅供自己笔记之用

Filter

 1 package com.software.usermanager.filter;

 2 

 3 import java.io.IOException;

 4 

 5 import javax.servlet.Filter;

 6 import javax.servlet.FilterChain;

 7 import javax.servlet.FilterConfig;

 8 import javax.servlet.ServletException;

 9 import javax.servlet.ServletRequest;

10 import javax.servlet.ServletResponse;

11 

12     public class FilterEncoding implements Filter {

13 

14         private String encoding = "utf-8";

15         public void destroy() {

16 

17         }

18 

19         public void doFilter(ServletRequest request, ServletResponse response,

20                 FilterChain arg2) throws IOException, ServletException {

21             request.setCharacterEncoding(encoding);

22             response.setCharacterEncoding(encoding);

23             arg2.doFilter(request, response);

24 

25         }

26 

27         public void init(FilterConfig arg0) throws ServletException {

28             encoding = arg0.getInitParameter("encoding");

29         }

30 

31     }

Listener

 1 package com.software.usermanager.listener;

 2 

 3 import java.util.Date;

 4 

 5 import javax.servlet.ServletContextEvent;

 6 import javax.servlet.ServletContextListener;

 7 

 8 public class Listener implements ServletContextListener 

 9 {

10     public void contextDestroyed(ServletContextEvent event) 

11     {

12         // 销毁记录

13     }

14 

15     public void contextInitialized(ServletContextEvent event) 

16     {

17         // 记录登录信息

18         Date date = new Date();

19         event.getServletContext().log(date.toString());

20     }

21 }

web.xml配置文件

 1 <?xml version="1.0" encoding="UTF-8"?>

 2 <web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

 3     <display-name>xkxt</display-name>

 4     <welcome-file-list>

 5         <welcome-file>index.jsp</welcome-file>        

 6     </welcome-file-list>

 7       <filter>

 8       <filter-name>Encoding</filter-name>

 9       <filter-class>com.software.usermanager.FilterEncoding</filter-class>

10  

11     <init-param>

12     <param-name>encoding</param-name>

13     <param-value>UTF-8</param-value>

14     </init-param>

15      </filter>

16        <filter-mapping>

17        <filter-name>Encoding</filter-name>

18        <url-pattern>/*</url-pattern>

19   </filter-mapping>

20     

21     <listener>

22         <listener-class>com.software.usermanager.Listener</listener-class>

23     </listener>

24     <servlet>

25        <servlet-name>xkxt</servlet-name>

26        <servlet-class>com.software.usermanager.XKXTServlet</servlet-class>

27     </servlet>

28     <servlet-mapping>

29       <servlet-name>xkxt</servlet-name>

30       <url-pattern>/action</url-pattern>

31     </servlet-mapping>

32         <servlet>

33        <servlet-name>querydqm</servlet-name>

34        <servlet-class>com.software.usermanager.DQMServlet</servlet-class>

35     </servlet>

36     <servlet-mapping>

37       <servlet-name>querydqm</servlet-name>

38       <url-pattern>/action</url-pattern>

39     </servlet-mapping>

40   

41   

42     

43     

44     

45 </web-app>

 

你可能感兴趣的:(java)