package com.jr;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class DBTool {
/**
* 1 不和业务关联
* 2 方法通用性
* 3 方法简洁性方便使用
* 4 人性化返回值
*
*/
//驱动
private static final String DRVIER="com.mysql.jdbc.Driver";
//数据库连接
private static final String URL="jdbc:mysql://localhost:3306/wjsx";
//用户
private static final String USER="root";
//密码
private static final String PWD="123456";
//创建全局的连接对象
private static Connection conn=null;
/**
* 创建数据库连接
*/
private static void getConnection() {
try {
if(conn==null) {
//加载驱动
Class.forName(DRVIER);
//创建连接
conn= DriverManager.getConnection(URL,USER,PWD);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
*
* @param sql
* @param params
* @return
*/
public static int executeUpdateWithSqlAndParams(String sql,List<Object> params) {
//调用创建连接方法
getConnection();
try {
//创建句柄
PreparedStatement pstmt= conn.prepareStatement(sql);
//设置参数
if(params!=null) {
for(int i=0;i<params.size();i++) {
pstmt.setObject(i+1, params.get(i));
}
}
//执行数据库
int rsult=pstmt.executeUpdate();
return rsult;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return 0;
}
/**
* 判断数据是否存在
* @param sql 必须是 select count(*) num
* @param params 必须List列表
* @return 布尔类型是与否
*
*
*/
public static boolean isExistWithSqlAndParams(String sql,List<Object> params) {
//调用创建连接方法
getConnection();
try {
//创建句柄
PreparedStatement pstmt= conn.prepareStatement(sql);
//设置参数
if(params!=null) {
for(int i=0;i<params.size();i++) {
pstmt.setObject(i+1, params.get(i));
}
}
//执行数据库
ResultSet rs=pstmt.executeQuery();
if(rs.next()) {
return rs.getInt("num")>0;
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return false;
}
/**
*
* @param sql
* @param params
* @return
*/
private static ResultSet executeQuery(String sql,List<Object> params) {
//调用创建连接方法
getConnection();
try {
//创建句柄
PreparedStatement pstmt= conn.prepareStatement(sql);
//设置参数
if(params!=null) {
for(int i=0;i<params.size();i++) {
pstmt.setObject(i+1, params.get(i));
}
}
//执行数据库
ResultSet rs=pstmt.executeQuery();
return rs;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
/**
*
* @param sql
* @param params
* @return
*/
public static <T> List<T> executeQueryWithSqlAndParams(String sql,List<Object> params,T t) {
//调用创建连接方法
getConnection();
//循环结果集,封装成T的列表集合
ResultSet rs=executeQuery(sql, params);
//定义一个集合
List<T> list=new ArrayList<T>();
//通过传入的对象反射出来原来的类
Class<?> c=t.getClass();
try {
//遍历结果集
while(rs.next()) {
//创建一个对象
@SuppressWarnings("unchecked")
T obj=(T)c.newInstance();
//获取这个类的所有属性
Field [] fields=c.getDeclaredFields();
for(Field f:fields) {
//获取属性类型的简写 java.lang.String
String ftype=f.getType().getSimpleName();
//获取属性名
String fname=f.getName();
//全局的value
Object value=null;
if(ftype.equalsIgnoreCase("string")) {
value=rs.getString(fname);
}else if(ftype.equalsIgnoreCase("int")) {
value=rs.getInt(fname);
}else if(ftype.equalsIgnoreCase("float")) {
value=rs.getFloat(fname);
}else if(ftype.equalsIgnoreCase("boolean")) {
value=rs.getBoolean(fname);
}else if(ftype.equalsIgnoreCase("date")) {
value=rs.getDate(fname);
}
//将取出来的值放进obj
//找到当前属性对应的set方法
Method[] methods=c.getDeclaredMethods();
for(Method m:methods) {
//获取方法名字
String mName=m.getName();
//setname getname setid getid
//当前方法是不是set+fname
if(mName.equalsIgnoreCase("set"+fname)) {
//调用该set方法
m.invoke(obj, value);
}
}
}
//++++++++++++++++++++
list.add(obj);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return list;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
基于JavaWeb开发的公司CRM管理系统源码(毕设项目).zip 【资源介绍】 该项目是个人毕设项目,答辩评审分达到95分,代码都经过调试测试,确保可以运行!欢迎下载使用,可用于小白学习、进阶。 该资源主要针对计算机、通信、人工智能、自动化等相关专业的学生、老师或从业者下载使用,亦可作为期末课程设计、课程大作业、毕业设计等。 项目整体具有较高的学习借鉴价值!基础能力强的可以在此基础上修改调整,以实现不同的功能。 基于JavaWeb开发的公司CRM管理系统源码(毕设项目).zip基于JavaWeb开发的公司CRM管理系统源码(毕设项目).zip基于JavaWeb开发的公司CRM管理系统源码(毕设项目).zip基于JavaWeb开发的公司CRM管理系统源码(毕设项目).zip基于JavaWeb开发的公司CRM管理系统源码(毕设项目).zip
资源推荐
资源详情
资源评论
收起资源包目录
基于JavaWeb开发的公司CRM管理系统源码(毕设项目).zip (270个子文件)
DBTool.class 6KB
DeleteServlet.class 3KB
EmailUtil.class 3KB
LoginCheckServlet.class 2KB
AddClientServlet.class 2KB
SaveUpdateServlet.class 2KB
RegisterServlet.class 2KB
ShowUpdateServlet.class 2KB
SearchServlet.class 2KB
ClearServlet.class 2KB
Client.class 2KB
Middle2.class 2KB
Middle.class 2KB
ClientServlet.class 2KB
User.class 1KB
OutServlet.class 1KB
amazeui.min.css 249KB
bootstrap.css 143KB
bootstrap.min.css 118KB
app.css 47KB
style.css 44KB
reader-info.css 42KB
bootstrap-theme.css 26KB
font-awesome.css 25KB
jquery-ui-1.8.13.custom.css 24KB
bootstrap-theme.min.css 23KB
fullcalendar.min.css 15KB
bootstrap-admin-theme.css 12KB
bootstrap.css 11KB
amazeui.datatables.min.css 9KB
fullcalendar.print.css 5KB
admin.css 5KB
dataTables.bootstrap.css 4KB
mylib.css 3KB
fontawesome-webfont.eot 75KB
glyphicons-halflings-regular.eot 20KB
tanwan.gif 901KB
tanwan2.gif 800KB
tanwan2.gif 800KB
tawan3.gif 594KB
tawan3.gif 594KB
tanwan.gif 571KB
arrow_down.gif 414B
1.html 15KB
1.html 12KB
mainpage.html 10KB
add.html 8KB
mainpage(4).html 5KB
list.html 5KB
index.html 4KB
sign_in.html 3KB
sign_up.html 3KB
mainpage(5).html 3KB
mainpage(3).html 2KB
day1_2.html 2KB
day1-2.html 2KB
day1-1.html 2KB
day1-1.html 2KB
day1_2.html 2KB
day1.html 1KB
day1.html 1KB
mainpage(2).html 1KB
login.html 856B
faild.html 834B
231231312312312321.html 676B
ffgfdgfdgdfgdf.html 355B
index2.html 127B
code.iml 281B
mysql-connector-java-5.1.7-bin.jar 693KB
javax.mail.jar 639KB
DBTool.java 5KB
EmailUtil.java 5KB
DeleteServlet.java 2KB
LoginCheckServlet.java 2KB
AddClientServlet.java 2KB
SaveUpdateServlet.java 2KB
RegisterServlet.java 2KB
ShowUpdateServlet.java 1KB
SearchServlet.java 1KB
ClearServlet.java 1KB
Middle.java 1KB
ClientServlet.java 1KB
Middle2.java 1KB
Client.java 1KB
OutServlet.java 965B
User.java 841B
cq2.jpg 1.11MB
cq2.jpg 1.11MB
cq.jpg 1.03MB
cq.jpg 1.03MB
rock.jpg 808KB
rock.jpg 808KB
timg (1).jpg 646KB
timg (1).jpg 646KB
2.jpg 631KB
2.jpg 631KB
3.jpg 461KB
3.jpg 461KB
500view.jpg 337KB
black.jpg 192KB
共 270 条
- 1
- 2
- 3
资源评论
Make程序设计
- 粉丝: 5614
- 资源: 3567
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功