package test;
import java.io.UnsupportedEncodingException;
import java.lang.reflect.Method;
import java.sql.Connection;
import java.sql.Date;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Timer;
import java.util.TimerTask;
import javax.servlet.http.HttpServletRequest;
import org.dom4j.Document;
import com.common.Dom4JParseXml;
import com.common.PathTool;
/**
* 单例模式
* @author panzhipeng
*/
public class JdbcTool {
// 1、私有的静态的类的实例
private static ThreadLocal<Connection> threadLocal = new ThreadLocal<Connection>();
private static JdbcTool INSTANCE = null;
private static Connection connect = null;
//2、私有的构造方法
public JdbcTool(){
}
//3、公有的静态的同步 工厂方法
public static synchronized JdbcTool getInstance() {
if (null == INSTANCE) {
INSTANCE = new JdbcTool();
connect=getConnection();
}
return INSTANCE;
}
// 4、重写clone方法
@Override
protected Object clone() throws CloneNotSupportedException {
return getInstance();
}
/**
* 执行DDL语句
* @return
*/
public boolean extecuteDDL(Connection connection) {
return false;
}
// public List<?> careLogin00(String username,String password){
// List<?> list=null;
// Connection connect = null;
// try{
// connect=this.getConnection();
// String selectSql="SELECT * FROM personal WHERE username=? and password=?";
// Object[] params = new Object[]{username,password};
// ResultSet rs = this.executePreparedQuery(connect, selectSql, params);
// list=this.parseResultset2List(rs, userinformation.class);
//
// }
// catch(Exception exception){
// exception.printStackTrace();
// }finally{
// closeConnection(connect);
// }
// return list;
// }
//根据用户名得到结果集
public static List<?> careLogin0(String username,Class<?> clazz){
List<?> list=null;
String tableName = clazz.getSimpleName(); //获取类名.不带包名
try{
getInstance();
String selectSql="SELECT * FROM "+tableName+" WHERE username=? ";
Object[] params = new Object[]{username};
ResultSet rs = executePreparedQuery(selectSql, params);
list=parseResultset2List(rs,clazz);
}
catch(Exception exception){
exception.printStackTrace();
}
return list;
}
//根据用户名得到结果集
public List<?> careLogin01(String username,Class<?> clazz){
List<?> list=null;
String tableName = clazz.getSimpleName(); //获取类名.不带包名
try{
getInstance();
String selectSql="SELECT * FROM "+tableName+" WHERE username like ? ";
Object[] params = new Object[]{username};
ResultSet rs = executePreparedQuery(selectSql, params);
list=parseResultset2List(rs,clazz);
}
catch(Exception exception){
exception.printStackTrace();
}
return list;
}
//根据用户名和密码得到结果集
public List<?> careLogin00(String username,String password,Class<?> clazz){
List<?> list=null;
String tableName = clazz.getSimpleName(); //获取类名.不带包名
try{
getInstance();
String selectSql="SELECT * FROM "+tableName+" where username=? and password=?";
Object[] params = new Object[]{username,password};
ResultSet rs =executePreparedQuery(selectSql, params);
list=parseResultset2List(rs,clazz);
}
catch(Exception exception){
exception.printStackTrace();
}
return list;
}
public static void dumpResultSet(ResultSet resultSet) {
if(resultSet != null) {
try {
ResultSetMetaData metaData = resultSet.getMetaData();
// 结果集有几列
// 结果集有几列
int num = metaData.getColumnCount();
while (resultSet.next()) {
for (int i = 1; i <= num; i++) {
System.out.println(resultSet.getObject(i) + "\t");
}
System.out.println("---------------");
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
//得到用户名
public String strusername(){
String username=null;
ResultSet rs;
try {
String sql="select username from personal ";
getInstance();
Object[] params=new Object[]{};
rs=executePreparedQuery(sql, params);
if(rs.next()){
username=rs.getString(1);
}
} catch (SQLException e) {
e.printStackTrace();
}
return username;
}
//得到锁定值
public static int initLock(String username){
int onlock=0;
ResultSet rs;
try {
String sql="select onlock from personal where username=?";
getInstance();
Object[] params=new Object[]{username};
rs=executePreparedQuery(sql, params);
if(rs.next()){
onlock=rs.getInt(1);
}
} catch (SQLException e) {
e.printStackTrace();
}
return onlock;
}
//得到登录次数
public static int initTimes(String username){
int times=1;
ResultSet rs;
try {
String sql="select times from personal where username=?";
getInstance();
Object[] params=new Object[]{username};
rs=executePreparedQuery(sql, params);
if(rs.next()){
times=rs.getInt(1);
}
} catch (SQLException e) {
e.printStackTrace();
}
return times;
}
//登录次数+1
public static void initTimesadd(String username){
try {
String sql="update personal set times=times+1 where username=?";
getInstance();
Object[] params=new Object[]{username};
executePreparedUpdate(sql, params);
} catch (Exception e) {
e.printStackTrace();
}
}
//成功 times 置1
public static void initTimes00(String username){
try {
String sql="update personal set times=1 where username=?";
getInstance();
Object[] params=new Object[]{username};
executePreparedUpdate(sql, params);
} catch (Exception e) {
e.printStackTrace();
}
}
// 调用 所有对象顺便 遍历
public static <T> List<T> parseResultset2List(ResultSet resultSet, Class<T> clazz) {
List<T> list = new ArrayList<T>();
// 判断结果集是否为空
if (null == resultSet) {
return list;
}
try {
// 1、获取ResultSetMetaData
ResultSetMetaData metaData = resultSet.getMetaData();
// 2、获取列名
int num = metaData.getColumnCount();
String [] columnNames = new String[num];
for (int i = 0; i < num; i++) {
columnNames[i] = metaData.getColumnName(i + 1);
}
Method [] methods = clazz.getDeclaredMethods();
// 3、处理结果集,遍历每一行记录
while (resultSet.next()) {
T t = clazz.newInstance(); // 实例化对象
// 遍历每一行的所有列,把每一列的值设置到我们对象的属性中
for (int i = 0; i < num; i++) {
String columnName = columnNames[i];
String methodName = "set" + columnName;
for (Method setMethod : methods) {
// 如果找到对应的set方法
if (methodName.equalsIgnoreCase(setMethod.getName())) {
// javaBean的属性的类型
String fieldTypeName = setMethod.getParameterTypes()[0].getName();
// 数据库中列的类型
String columnTypeName =
resultSet.getObject(columnName).getClass().getName();
if (!fieldTypeName.equals(columnTypeName)) {
continue; //继续下一个循环
}
setMethod.invoke(t, new Object[]{resultSet.getObject(columnName)});
break;
}
}
}
list.add(t);
}
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
/**
* 执行批量处理
* @return
*/
public boolean executeBatch(Connection connection) {
return false;
}
public static ResultSet executePreparedQuery( String sql, Object[] params) {
没有合适的资源?快使用搜索试试~ 我知道了~
SSI(struts2+ibatis+spring)
共115个文件
jar:40个
class:31个
java:13个
5星 · 超过95%的资源 需积分: 3 11 下载量 3 浏览量
2013-01-22
17:32:45
上传
评论
收藏 12.98MB RAR 举报
温馨提示
一个SSI整合的小例子,CRUD都有,架包全有,导入即可运行,数据库用的是mysql,dao层用了江南白衣的思想,已封装,在此拓展就行,希望能对你有所帮助
资源推荐
资源详情
资源评论
收起资源包目录
SSI(struts2+ibatis+spring) (115个子文件)
Iotest.class 10KB
JdbcTool.class 10KB
Md5Encoding.class 8KB
FileOperateTool.class 6KB
RssOrder.class 5KB
RssOrder.class 5KB
Dom4JParseXml.class 5KB
Dom4jTest.class 3KB
Pager.class 3KB
ParsePageParameter1.class 3KB
ParsePageParameter.class 3KB
Object2Json.class 3KB
UnZipTool.class 3KB
PathTool.class 3KB
ZipTool.class 3KB
PatternMaches.class 3KB
UserAction.class 2KB
GenericDaoHibernateImpl.class 2KB
BaseAction.class 2KB
ConnectDatabase.class 2KB
CharacterEncodingFilter.class 2KB
Md5EncodingJDKTest.class 2KB
User.class 1KB
userServiceImpl.class 1KB
StudyJdbcException.class 807B
StudyJdbcException.class 795B
tt.class 706B
BaseDao.class 678B
userService.class 521B
GenericDao.class 457B
Myconstant.class 347B
.classpath 529B
org.eclipse.wst.common.component 453B
org.eclipse.wst.jsdt.ui.superType.container 49B
connectDatabase.dtd 298B
entries 507B
format 2B
spring-2.5.5.jar 2.81MB
aspectjweaver-1.6.0.jar 1.82MB
ojdbc14.jar 1.47MB
freemarker-2.3.18.jar 903KB
struts2-core-2.3.1.2.jar 757KB
xwork-core-2.3.1.2.jar 605KB
javassist-3.11.0.GA.jar 600KB
c3p0-0.9.1.jar 594KB
mysql-connector-java-5.0.6-bin.jar 515KB
antlr-2.7.6.jar 433KB
ibatis-2.3.4.726.jar 375KB
cglib-nodep-2.1_3.jar 317KB
dom4j-1.6.1.jar 307KB
cglib-2.1.3.jar 276KB
commons-lang-2.5.jar 273KB
ognl-3.0.4.jar 222KB
jaxen-1.1-beta-7.jar 222KB
rome-1.0.jar 215KB
junit-4.6.jar 213KB
ehcache-1.2.3.jar 203KB
commons-beanutils.jar 184KB
commons-collections-2.1.1.jar 171KB
concurrent-1.3.2.jar 167KB
commons-io-2.0.1.jar 156KB
jdom.jar 149KB
aspectjrt-1.6.jar 112KB
commons-pool-1.4.jar 85KB
commons-dbcp.jar 80KB
commons-fileupload-1.2.2.jar 58KB
json-lib-0.8.jar 56KB
ejb3-persistence.jar 52KB
asm-commons-3.3.jar 37KB
commons-logging-1.0.4.jar 37KB
asm.jar 26KB
struts2-spring-plugin-2.3.1.2.jar 21KB
asm-tree-3.3.jar 21KB
slf4j-api-1.5.2.jar 17KB
jta.jar 9KB
slf4j-log4j12.jar 8KB
common-annotations.jar 6KB
JdbcTool.java 10KB
RssOrder.java 6KB
GenericDaoHibernateImpl.java 2KB
BaseAction.java 1KB
UserAction.java 1KB
ConnectDatabase.java 1KB
User.java 862B
userServiceImpl.java 790B
BaseDao.java 562B
StudyJdbcException.java 456B
GenericDao.java 363B
userService.java 363B
tt.java 276B
.jsdtscope 500B
update.jsp 1KB
regist.jsp 1KB
index.jsp 1KB
login.jsp 1KB
MANIFEST.MF 36B
.mymetadata 288B
org.eclipse.wst.jsdt.ui.superType.name 6B
org.eclipse.jdt.core.prefs 364B
.project 2KB
共 115 条
- 1
- 2
资源评论
- 春水_2014-03-18很好 可以运行 代码很清晰 有注释
- elfxiaofeng2014-08-15很不错 简单易懂
- asd8101853542015-01-26很不错 简单易懂
ni0438
- 粉丝: 0
- 资源: 8
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功