您的位置:首页 > 编程语言 > Java开发

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

2013-11-27 15:56 531 查看
程序清单一览



bean类

[html] view
plaincopy

package com.software.usermanager.bean;



public class Users {

private String id;

private String name;

private String age;

public String getId() {

return id;

}

public void setId(String id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getAge() {

return age;

}

public void setAge(String age) {

this.age = age;

}





}

dao类

[html] view
plaincopy

package com.software.usermanager.dao;





import com.software.usermanager.bean.Users;

import com.software.usermanager.util.PageModel;

import java.util.List;



public interface UsersDAO {

public boolean insert(Users user); //增

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

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

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

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

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

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

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

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



}

daoimpl类

[html] view
plaincopy

package com.software.usermanager.dao;

import com.software.usermanager.util.OptTemplate;

import java.sql.ResultSet;

import java.util.List;



import com.software.usermanager.bean.Users;

import com.software.usermanager.util.*;



public class UsersDAOImpl implements UsersDAO {



private OptTemplate optTemplate = null;



public UsersDAOImpl(OptTemplate optTemplate) {

super();

this.optTemplate = optTemplate;

}

public boolean Login(String name, String password) {

// TODO Auto-generated method stub

return false;

}



public boolean delete(String id) {

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

Object[] obj = { id };

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

}



public boolean delete(String[] userIds) {

StringBuffer sbStr = new StringBuffer();

Object[] obj = userIds;

;

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

sbStr.append("?,");

}

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

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

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

}



public boolean insert(Users user) {

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

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

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

}



@SuppressWarnings("unchecked")

public List<Users> query() {

String sql = "select * from users";

Object[] obj = {};

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



}



public Users query(String id) {

String sql = "select * from users";

Object[] obj = {};

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

}



public PageModel query(int pageNo, int pageSize) {

String sql1 = "select * from users";

Object[] obj1 = {};

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

new UsersDAOObjectMapper());

int i = list1.size();

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

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

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

new UsersDAOObjectMapper());

PageModel pagemodel = new PageModel();

pagemodel.setPageNo(pageNo);

pagemodel.setPageSize(pageSize);

pagemodel.setList(list);

pagemodel.setTotalRecords(i);

return pagemodel;

}



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

String sql1 = "select * from users";

Object[] obj1 = {};

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

new UsersDAOObjectMapper());

int i = list1.size();

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>?";

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

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

new UsersDAOObjectMapper());

PageModel pagemodel = new PageModel();

pagemodel.setPageNo(pageNo);

pagemodel.setPageSize(pageSize);

pagemodel.setList(list);

pagemodel.setTotalRecords(i);

return pagemodel;

}



public boolean update(Users user) {

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

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

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

}





}

class UsersDAOObjectMapper implements ObjectMapper{

public Object mapping(ResultSet rs){

Users u=new Users();

try{



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

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

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





}catch(Exception ex){

ex.printStackTrace();

}



return u;

}



}



util类

[html] view
plaincopy

package com.software.usermanager.util;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import java.util.ArrayList;

import java.util.List;



import com.software.usermanager.db.DBConnection;



public class OptTemplate {

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

Object o=null;

Connection conn=null;

PreparedStatement pstmt=null;

try{

conn=DBConnection.getConn();

pstmt=conn.prepareStatement(sql);

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

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

ResultSet rs=pstmt.executeQuery();

if(rs.next()){

o=mapper.mapping(rs);

}

}

}catch(Exception ex){

ex.printStackTrace();

}finally{

try{

pstmt.close();

conn.close();

}catch(SQLException ex){

ex.printStackTrace();

}

}

return o;

}



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

Object o=null;

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

Connection conn=null;

PreparedStatement pstmt=null;

try{

conn=DBConnection.getConn();

pstmt=conn.prepareStatement(sql);

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

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

}

ResultSet rs=pstmt.executeQuery();



while(rs.next()){



o=mapper.mapping(rs);

list.add(o);

}





}catch(SQLException ex){

ex.printStackTrace();

}finally{

try{

pstmt.close();

conn.close();

}catch(SQLException ex){

ex.printStackTrace();

}

}

return list;

}

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

Connection conn=null;

PreparedStatement pstmt=null;

boolean bFlag=false;

try{

conn=DBConnection.getConn();

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

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

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

}

conn.setAutoCommit(false);

int i=pstmt.executeUpdate();

conn.commit();

if(i>0)

bFlag=true;

}catch(SQLException ex){

ex.printStackTrace();

}finally{

try{

conn.close();

pstmt.close();



}catch(SQLException ex){

ex.printStackTrace();

}

}

return bFlag;

}





}



[html] view
plaincopy

package com.software.usermanager.util;



import java.sql.ResultSet;



public interface ObjectMapper {

public Object mapping(ResultSet rs);



}







分页封装类



[html] view
plaincopy

package com.software.usermanager.util;



import java.util.List;



public class PageModel<T> {



//结果集

private List<T> list;



//记录数

private int totalRecords;



//每页多少条数据

private int pageSize;



//第几页

private int pageNo;



/**

* 返回总页数

* @return

*/

public int getTotalPages() {

return (totalRecords + pageSize - 1) / pageSize;

}



/**

* 首页

* @return

*/

public int getTopPageNo() {

return 1;

}



/**

* 上一页

* @return

*/

public int getPreviousPageNo() {

if (this.pageNo <= 1) {

return 1;

}

return this.pageNo - 1;

}



/**

* 下一页

* @return

*/

public int getNextPageNo() {

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

return getButtomPageNo();

}

return this.pageNo + 1;

}



/**

* 尾页

* @return

*/

public int getButtomPageNo() {

return getTotalPages();

}



public List<T> getList() {

return list;

}



public void setList(List<T> list) {

this.list = list;

}



public int getTotalRecords() {

return totalRecords;

}



public void setTotalRecords(int totalRecords) {

this.totalRecords = totalRecords;

}



public int getPageSize() {

return pageSize;

}



public void setPageSize(int pageSize) {

this.pageSize = pageSize;

}



public int getPageNo() {

return pageNo;

}



public void setPageNo(int pageNo) {

this.pageNo = pageNo;

}

}



数据库配置文件dbconf.properties

[html] view
plaincopy

#oracle连接实例

driverClass = oracle.jdbc.driver.OracleDriver

url = jdbc:oracle:thin:@192.168.137.23:1521:orcl

[html] view
plaincopy

username = 用户名

[html] view
plaincopy

password = 密码

数据库封装类

[html] view
plaincopy

package com.software.usermanager.db;





import java.io.IOException;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.SQLException;

import java.util.Properties;





public class DBConnection {



private static Connection conn = null;

private static Properties props = null;



static {

props = new Properties();

try {

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

} catch (IOException e1) {

e1.printStackTrace();

}

try {

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

} catch (ClassNotFoundException e) {

e.printStackTrace();

}

}





public static Connection getConn(){

try {

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

conn.setAutoCommit(false);

} catch (SQLException e) {

e.printStackTrace();

}

return conn;

}







public void closeConn(){

try {

if (conn != null)

conn.close();

} catch (SQLException e) {

e.printStackTrace();

}



}

}

junit测试类

[html] view
plaincopy

package com.software.usermanager.test;



import java.util.List;



import com.software.usermanager.bean.Users;



import org.apache.tomcat.jni.User;

import org.junit.After;

import org.junit.Before;

import org.junit.Test;



import com.software.usermanager.dao.UsersDAO;

import com.software.usermanager.dao.UsersDAOImpl;

import com.software.usermanager.db.DBConnection;

import com.software.usermanager.util.OptTemplate;

import com.software.usermanager.util.PageModel;



public class UserTest {

DBConnection dbConn = null;



@Before

public void setUp() {

dbConn = new DBConnection();

}



@After

public void tearDown() {

dbConn.closeConn();



}

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



// @Test

// public void testinsert() {

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

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

// Users u = new Users();

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

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

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

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

// if(b==false){

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

// }else{

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

// }}

//

//

// }

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



// @Test

// public void testupdate() {

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

// Users u = new Users();

// u.setId("5");

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

// u.setAge("21");

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

// if(b==false){

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

// }else{

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

// }

//

//

// }

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



// @Test

// public void testdeleteById() {

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

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

// if(b==false){

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

// }else{

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

// }

//

// }

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

//

// @Test

// public void testdeleteByArray() {

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

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

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

// if(b==false){

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

// }else{

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

// }

//

// }

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

// @Test

// public void testqueryAll(){

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

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

// for(Users u:list){

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

// }

// }

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

// @Test

// public void testqueryAll(){

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

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

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

//

// }

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

// @Test

// public void testqueryAll(){

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

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

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

// for(Users u:list){

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

// }

// }

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

@Test

public void testqueryAll(){

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

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

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

for(Users u:list){

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

}

}



}



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

Filter

[html] view
plaincopy

package com.software.usermanager.filter;



import java.io.IOException;



import javax.servlet.Filter;

import javax.servlet.FilterChain;

import javax.servlet.FilterConfig;

import javax.servlet.ServletException;

import javax.servlet.ServletRequest;

import javax.servlet.ServletResponse;



public class FilterEncoding implements Filter {



private String encoding = "utf-8";

public void destroy() {



}



public void doFilter(ServletRequest request, ServletResponse response,

FilterChain arg2) throws IOException, ServletException {

request.setCharacterEncoding(encoding);

response.setCharacterEncoding(encoding);

arg2.doFilter(request, response);



}



public void init(FilterConfig arg0) throws ServletException {

encoding = arg0.getInitParameter("encoding");

}



}

Listener



[html] view
plaincopy

package com.software.usermanager.listener;



import java.util.Date;



import javax.servlet.ServletContextEvent;

import javax.servlet.ServletContextListener;



public class Listener implements ServletContextListener

{

public void contextDestroyed(ServletContextEvent event)

{

// 销毁记录

}



public void contextInitialized(ServletContextEvent event)

{

// 记录登录信息

Date date = new Date();

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

}

}

web.xml配置文件



[html] view
plaincopy

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

<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">

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

<welcome-file-list>

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

</welcome-file-list>

<filter>

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

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



<init-param>

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

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

</init-param>

</filter>

<filter-mapping>

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

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

</filter-mapping>



<listener>

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

</listener>

<servlet>

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

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

</servlet>

<servlet-mapping>

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

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

</servlet-mapping>

<servlet>

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

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

</servlet>

<servlet-mapping>

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

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

</servlet-mapping>











</web-app>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐