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

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

2012-03-13 19:36 573 查看
程序清单一览



bean类

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类

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类

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类

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;
}

}


package com.software.usermanager.util;

import java.sql.ResultSet;

public interface ObjectMapper {
public Object mapping(ResultSet rs);

}


分页封装类

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

#oracle连接实例
driverClass = oracle.jdbc.driver.OracleDriver
url = jdbc:oracle:thin:@192.168.137.23:1521:orcl
username = 用户名
password = 密码


数据库封装类

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测试类

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

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

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配置文件

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