Java经典封装JDBC模板(充分体现面向对象思想)(转)
程序清单一览
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>
Java经典封装JDBC模板(充分体现面向对象思想)(转)的更多相关文章
- JAVA框架 Spring JDBC模板
一:引入jar包: 1.数据驱动jar包: dbcp依赖的包: spring的事务包和数据库包: IOC包AOP包.log4j的包: 所有的jar包: 编写测试类: 注入JdbcTemplate类,该 ...
- java高级特性(1)--理解面向对象思想
前言: 优秀的代码具备:高性能.可重用.可扩展.易维护.易理解 具体实现: 高性能:合理使用算法,数据结构等等 可重用:封装.继承 可扩展:多态 易维护.易理解:命名规范 + 注解 面向对象是一种思想 ...
- java语言基础(四)_面向对象_类_对象_封装_构造
面向对象 Java语言是一种面向对象的程序设计语言,而面向对象思想是一种程序设计思想,我们在面向对象思想的指引下,使用Java语言去设计.开发计算机程序. 这里的对象泛指现实中一切事物,每种事物都具备 ...
- [原创]java WEB学习笔记109:Spring学习---spring对JDBC的支持:使用 JdbcTemplate 查询数据库,简化 JDBC 模板查询,在 JDBC 模板中使用具名参数两种实现
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- 写Java程序要体现面向对象
对于之前写的一篇文章现在想想存在不足之处,之前写的测试ArrayList和LinkedList的各项操作性能比较的程序没有体现面向对象的封装特性,所以,今天把代码重新写了一遍,其实改动的地 ...
- java框架之Spring(3)-JDBC模板使用&事务管理
下面内容使用到的 jar 包下载 JDBC模板使用 入门 1.导包,如要导入 Spring 的基本开发包.数据库驱动包.Spring 提供的 JDBC 模板包,如下: 2.测试: @Test publ ...
- Java学习笔记43(Spring的jdbc模板)
在之前的学习中,我们执行sql语句,需要频繁的开流,关流比较麻烦,为了更加的简化代码,我们使用Spring 的jdbc模板jdbcTemplate来简化我们的代码量:需要导入的包有: 我们在之前的dr ...
- JAVA之旅(四)——面向对象思想,成员/局部变量,匿名对象,封装 , private,构造方法,构造代码块
JAVA之旅(四)--面向对象思想,成员/局部变量,匿名对象,封装 , private,构造方法,构造代码块 加油吧,节奏得快点了 1.概述 上篇幅也是讲了这点,这篇幅就着重的讲一下思想和案例 就拿买 ...
- java:Session(概述,三层架构实例(实现接口封装JDBC),Session实现简单购物车实例)
1.Session概述: Session:在计算机中,尤其是在网络应用中,称为“会话控制”.Session 对象存储特定用户会话所需的属性及配置信息.这样,当用户在应用程序的 Web 页之间跳转时,存 ...
随机推荐
- IE8下String的Trim()方法失效的解决方法
String的Trim()方法失效,在ie8下是有这样的情况的,解决方法也很简单使用$.trim(str)即可,需要的朋友可以了解下 用jquery的trim()方法,$.trim(str)就可以了.
- mysql Partition(分区)初探
mysql Partition(分区)初探 表数据量大的时候一般都考虑水平拆分,即所谓的sharding.不过mysql本身具有分区功能,可以实现一定程度 的水平切分. mysql是具有MERG ...
- [转贴]xcode帮助文档
突然间得到了一台MAC ,这时候不学OC 更待何时学呀?马上找了IOS开发的书和网上的帖子看,最近在开源力量那里看了TINYFOOL的入门讲座,讲的都很虚,可能时间不够吧,也没看到什么例子呀,什么的, ...
- ANDROID_MARS学习笔记_S02_014_GSON解析JSON串为对象
package com.json2; import android.app.Activity; import android.os.Bundle; import android.view.View; ...
- WebView 和Animation冲突
当有WebView时,可能会出现 动画没有执行过程. 解决方法: child.setLayerType(View.LAYER_TYPE_HARDWARE, null); child.setAnimat ...
- C# winform 导出导入Excel/Doc 完整实例教程[网上看到的]
还真没做过winform的导出导入,今天上网百度了一下.结果--- 所以还是我自己写个吧.之前做过web的,半搬半做就OK. 1添加引用:Aspose.Cells.dll(我们就叫工具包吧,可以从网上 ...
- POJ_3068_Shortest_pair_of_paths_(最小费用流)
描述 http://poj.org/problem?id=3068 危险品:N个仓库由M条有向边连接,每条边都有一定费用.将两种危险品从0运到N-1,除了起点和终点外,危险品不能放在一起,也不能走相同 ...
- DHU-1241 Oil Deposits
Oil Deposits Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tota ...
- linux下使用vim替换文件中的^M换行符
在linux下打开windows编辑过的文本,会出现由于换行符不一致而导致的内容格式错乱的问题.最常见的就是出现^M . 我出现的问题是:在windows编辑过的文件,传到linux上后再用vim打开 ...
- Chrome 控制台实用指南【转】
转自伯乐在线. Chrome 控制台实用指南 前言 Chrome浏览器我想是每一个前端er必用工具之一吧,一部分原因是它速度快,体积不大,支持的新特性也比其它浏览器多,还有一部分我想就是因为它的控制台 ...