day24 JDBC批处理(通用泛型查询方法 & 下划线转驼峰命名法)
批处理
public static Integer addBatch(String[] sqls){
init();
try {
//设置关闭自动提交
conn.setAutoCommit(false);
Statement stmt = conn.createStatement();
for (int i = 0; i < sqls.length; i++) {
stmt.addBatch(sqls[i]);
}
//批量执行
stmt.executeBatch();
//提交事务
conn.commit();
return 1;
} catch (SQLException e) {
e.printStackTrace();
return 0;
}finally {
close();
}
}
批处理在main方法中调用
String[] sql3 = new String[3];
sql3[0] = "insert into student(s_name, s_age)values('zs',11);";
sql3[1] = "insert into student(s_name, s_age)values('lis',22);";
sql3[2] = "insert into student(s_name, s_age)values('ww',33);";
int res = addBatch(sql3);
System.out.println(res);
通用泛型查询方法
public static <T> List<T> query1(String sql, Class<T> cls, Object...params){
init();
try {
//编译sql语句,返回PrepareStatement对象
ps = conn.prepareStatement(sql);
//参数替换sql中的占位符
if (params != null) {
for (int i = 0; i < params.length; i++) {
ps.setObject(i+1,params[i]);
}
}
//执行sql语句,结果集封装给ResultSet
rs = ps.executeQuery();
List<T> list = new ArrayList<T>();
//检索resultSet对象中的列数,类型和字段(结果集元数据)
ResultSetMetaData resultSetMetaData = rs.getMetaData();
while(rs.next()){
T t = cls.newInstance();//泛型实例化
//获取结果集的列数
int count = resultSetMetaData.getColumnCount();
for (int i = 0; i < count; i++) {
//获取每一列的别名,如果没有别名就返回resultSetMetaData.getColumnName();
String cName = resultSetMetaData.getColumnLabel(i + 1);
Object cValue = rs.getObject(cName);//通过获取的别名或者列名获取列的值
try {
Field field = cls.getDeclaredField(cName);//通过获取的别名或者列名获取类的属性
field.setAccessible(true);//开启私有访问权限
field.set(t, cValue);//变量赋值
} catch (NoSuchFieldException e) {
}
}
list.add(t);
}
return list;
} catch (Exception e) {
e.printStackTrace();
return null;
}finally{
close();
}
}
下划线转驼峰命名法
//下划线转驼峰命名
public static void conversion(String column){
// String[] conName = name.split("");
// String string = "";
// for (int i = 0; i < conName.length; i++) {
// if(conName[i].equals("_")){
// string = string + conName[i+1].toUpperCase();
// i++;
// }else {
// string = string +conName[i];
// }
// }
// System.out.println(string);
String[] arr = column.split("_");
StringBuffer sf = new StringBuffer(arr[0]);
for (int i = 1; i < arr.length; i++) {
String string = arr[i];
String firstStr = string.substring(0, 1).toUpperCase();
}
}
day24 JDBC批处理(通用泛型查询方法 & 下划线转驼峰命名法)的更多相关文章
- mybatis会自动把字段名中的下划线转为驼峰命名法?
先看一下转化的调用堆栈: 代码如下: 上面代码只是去掉了下划线,并没有首字母小写变大写的代码.再跟进findProperty方法可以找到获取驼峰结果的代码如下: 可以看出通过reflector.fin ...
- java下划线与驼峰命名互转
方式一: 下划线与驼峰命名转换: public class Tool { private static Pattern linePattern = Pattern.compile("_(\\ ...
- MyBatis Generator 下划线转驼峰命名
MyBatis Generator配置文件--指定生成实体类使用实际的表列名作为实体类的属性名 table标签下的设置属性useActualColumnNames用于指定生成实体类时是否使用实际的列名 ...
- <五>JDBC_利用反射及JDBC元数据编写通用的查询方法
此类针对javaBean类写了一个通用的查询方法,List<javaBean> 通用查询更新中...:通过学习,深刻体会到学会反射就等于掌握了java基础的半壁江山! 一.使用JDBC驱动 ...
- Java -- JDBC_利用反射及 JDBC 元数据编写通用的查询方法
先利用 SQL 进行查询,得到结果集: 利用反射创建实体类的对象:创建对象: 获取结果集的列的别名: 再获取结果集的每一列的值, 结合 3 得到一个 Map,键:列的别名,值:列的值: 再利用反射为 ...
- JDBC课程5--利用反射及JDBC元数据(ResultSetMetaData)编写通用的查询方法
/**-利用反射及JDBC元数据编写通用的查询方法 * 1.先利用SQl语句进行查询,得到结果集--> * 2.查找到结果集的别名:id--> * 3.利用反射创建实体类的对象,创建aut ...
- 使用ResultSet,写了一个通用的查询方法
此方法很烂,以后优化 /** * 通用的查询方法:SELECT */ @SuppressWarnings({ "unchecked", "rawtypes" } ...
- hibernate 或jpa 中使用 AliasToBeanResultTransformer 自定义类型转换ResultTransformer 下划线转驼峰
jpa中使用 sql查询时,返回结果直接转为实体bean的实现, 需要自定义一个ResultTransformer,如下, import java.util.Arrays; import org.ap ...
- Java Json 数据下划线与驼峰格式进行相互转换
概述 今天遇见一个需求,需要对json数据进行下划线与驼峰格式之间进行转换,在Fastjson.Jackson.Gson都提供了转换的方式,在这里进行一下列举. User类: public class ...
- 使用 Sublime Text 将含下划线的字符串批量替换为驼峰命名法格式的字符串
本文版权归cxun所有,如有转载请注明出处与本文链接,谢谢!原文地址:http://www.cnblogs.com/cxun/p/7762984.html For indexing: Convert ...
随机推荐
- Java SE 四大内部类
内部类 1.成员内部类 调用成员内部类 //在外面的类的最后,写一个方法,调用成员内部类(创建对象,在访问) class Outer08{ class Inner08{ //成员内部类 public ...
- Python数据科学手册-Pandas:向量化字符串操作、时间序列
向量化字符串操作 Series 和 Index对象 的str属性. 可以正确的处理缺失值 方法列表 正则表达式. Method Description match() Call re.match() ...
- fastapi教程进阶
一个简单的栗子 from fastapi import FastAPI app = FastAPI() @app.get("/") async def root(): return ...
- SNI 路由和多协议端口的 TCP
文章转载自:https://mp.weixin.qq.com/s/nMMN7hAJK6SFn1V1YyxvHA 下面是一个简单的示例配置 - 使用最新支持的 YAML 文件格式,将请求路由到一个数据库 ...
- 使用 systemd 定时器代替 cron 作业
转载自:https://mp.weixin.qq.com/s/HpDVp1sNYve8b7OdoHdGNw 创建一个定时器 首先,创建一个运行基础东西的简单的服务,例如 free 命令.举个例子,你可 ...
- Alermanager_template,email
default.tmpl {{ define "__subject" }}[{{ .Status | toUpper }}{{ if eq .Status "firing ...
- 一篇文章带你掌握主流服务层框架——SpringMVC
一篇文章带你掌握主流服务层框架--SpringMVC 在之前的文章中我们已经学习了Spring的基本内容,SpringMVC隶属于Spring的一部分内容 但由于SpringMVC完全针对于服务层使用 ...
- 【强烈推荐】用glob库的一行命令显著加速批量读取处理数据
在我们气象领域,对数据进行批处理随处可见,尤其是在处理模式数据的时候.为了能让这个过程加速,很多大佬们提出了不同的方法,比如使用numba库进行计算.使用dask库进行并行等等,都是非常好的加速手段. ...
- 华为路由器DHCP配置基本命令
配置基于接口地址池DHCP (动态主机配置协议) [R1]dhcp enable 路由器上开启DHCP [R1]int g0/0/0 [R1-GigabitEthernet0/0/0]dhcp sel ...
- java:找不到符号
出现这种情况的原因之一:实体类的字段修改过.实体类中的变量名修改.然而其他地方调用的字段名还是修改之前的变量.