我不明白如何使用commons-dbutils获取自动生成的密钥?
查看DBUtils API文档,我无法查看是否List<String>可以List<MyBean>使用查询使用BeanListHandler 的相同方式查询.
我可以这样做是创建一个包装String并使用BeanListHandler的Bean,或者可能返回一个List<Object[]>并以这种方式捕获我的字符串.
但是有一种更直接的方式,DBUtils可以传回List<String>一个查询,从而从varchar表列生成一堆String值吗?
我有一个Dbutils的奇怪问题,我正在尝试运行参数化更新sql,我提供正确数量的参数,但dbutils通过更改修改它的名称修改时间戳列名称
当timestamp columnname是一个字母表时
java.sql.SQLException:错误的参数数量:预期4,给出了5个查询:UPDATE WEATHER_2 SET WEATHER =?,O = TO_TIMESTAMP(?,'YYYY-MM-DD HH24:MI:SS.FF'),湿度=?,TEMP =?在哪里ID =?参数:[804,2015-06-05 17:21:05.809,16.0,25.15,1347927]
当timestamp columnname为normal时,将省略第二个字母
java.sql.SQLException:ORA-00904:"OSTIME":无效的标识符查询:UPDATE WEATHER_2 SET WEATHER =?,OBSTIME = TO_TIMESTAMP(?,'YYYY-MM-DD HH24:MI:SS.FF'),HUMIDITY =?,TEMP =?在哪里ID =?参数:[804,2015-06-05 17:27:46.139,16.0,25.15,1347927]
这可能是数据库的事吗?此外,只有类型为Date或Timestamp的列才会发生这种情况.
我想使用QueryRunner来执行ArrayList的插入.我在网上找到的唯一信息是插入一个Object [].有点像:
qr.update("insert into MyTable (param1,param2,param3) values (?,?,?)",
new Object[] { str1, str2, str3});
Run Code Online (Sandbox Code Playgroud)
我显然希望避免循环遍历整个ArrayList并一次插入一个索引,因为每次要插入的行数是未知的.
我只想知道是否有人这样做过.查询返回一个List,所以我不明白为什么我不能插入List.任何建议表示赞赏.谢谢.
我有一个webservice,在初始化时实例化一个带有数据源的QueryRunner.它将这一个QueryRunner对象用于webapp使用的多个不同servlet的所有servlet请求,方法是将其作为servlet上下文属性传递.即:
// in servlet context listener (on app initialization)
QueryRunner myQueryRunner = new QueryRunner(myDataSource);
myServletContext.setAttribute("queryRunner", myQueryRunner);
// in the servlets
QueryRunner myQueryRunner = (QueryRunner) myServletContext.getAttribute("queryRunner");
myQueryRunner.query(myStoredProcedure, handler, params)
Run Code Online (Sandbox Code Playgroud)
我想弄清楚这是不是瓶颈.servlet是否应该为QueryRunner每个请求实例化一个新的?
在寻找答案时,我也发现了这个AsyncQueryRunner.但我更加困惑,因为QueryRunner和AsyncQueryRunner的API文档中的解释说的完全相同.
我查看了这里的示例,似乎应该对每个请求进行实例化,但我不确定这是否只是因为它是示例代码.
换句话说,当QueryRunner我使用DBUtils时:
QueryRunner每个请求都使用一个实例?(我现在在做什么)QueryRunner每个servlet请求都实例化一个新的?AsyncQueryRunner每个请求都使用一个实例?我有一个像这样的 mysql 表:
CREATE TABLE `sezione_menu` (
`id_sezione_menu` int(11) unsigned NOT NULL AUTO_INCREMENT,
`nome` varchar(256) NOT NULL DEFAULT '',
`ordine` int(11) DEFAULT NULL,
PRIMARY KEY (`id_sezione_menu`)
)ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
Run Code Online (Sandbox Code Playgroud)
我使用 apache dbutils 来查询我的数据库,方法如下:
public static List<SezioneMenu> getSezioniMenu() {
String sql = "SELECT * FROM sezione_menu";
try {
QueryRunner qr = new QueryRunner(createDataSource());
ResultSetHandler rsh = new BeanListHandler(SezioneMenu.class);
List<SezioneMenu> sezioni = (List<SezioneMenu>)qr.query(sql, rsh);
return sezioni;
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
private static DataSource createDataSource() { …Run Code Online (Sandbox Code Playgroud) 所以,我是一个初学者,正在 Databricks 上学习 Spark 编程 (pyspark) -
我想做什么?
列出目录中的所有文件并将其保存到数据框中,以便我能够在此文件列表上应用过滤、排序等。为什么 ?因为我试图找到目录中最大的文件。
为什么下面不起作用? 我缺少什么?
from pyspark.sql.types import StringType
sklist = dbutils.fs.ls(sourceFile)
df = spark.createDataFrame(sklist,StringType())
Run Code Online (Sandbox Code Playgroud) 我正在 Spring Framework 中创建 MVC Web 应用程序,我需要将 Apache DBUtils 结果集中的行转换为由嵌套对象组成的 JavaBeans。
关于我发现的极少数示例,我创建了这个 RowProcessor 实现。
public class MonthOrderCountHandler extends BasicRowProcessor {
@Override
public Object toBean(ResultSet rs, Class type) throws SQLException {
// Year
Year year = new Year();
year.setYearNo(rs.getInt("yearNo"));
year.setYear4(rs.getString("year4"));
year.setYear2(rs.getString("year2"));
// Quarter
Quarter quarter = new Quarter();
quarter.setQuarter(rs.getInt("quarter"));
// Month
Month m = new Month();
m.setYear(year);
m.setQuarter(quarter);
m.setMonthAbbreviation(rs.getString("monthAbbreviation"));
m.setMonthName(rs.getString("monthName"));
m.setMonthNo(rs.getInt("monthNo"));
// Final bean
MonthOrderCount result = new MonthOrderCount();
result.setMonth(m);
result.setOrderCount(rs.getInt("orderCount"));
return result;
}
}
Run Code Online (Sandbox Code Playgroud)
问题:我想知道如何在我的 DAO 对象中使用这个行处理器,以及这个实现是否正确?
通常我以这种方式将行转换为 JavaBeans: …
我想使用Apache DBUtils库从数据库填充POJO(State.java)。但是,由于Bean属性的名称与DB列名称不完全匹配,因此某些属性未填写。
现在,我通过谷歌搜索对此进行了一些研究,发现可以通过以下方法实现:
谁能提供一个很好的例子说明如何使用BeanProcessor将列名映射到属性?调整示例为我提供的效果会更好。
数据库表
CREATE TABLE public.states (
state_id INTEGER DEFAULT nextval('states_seq'::regclass) NOT NULL,
state_cd VARCHAR(2) NOT NULL,
name VARCHAR(100) NOT NULL,
tax_pct NUMERIC(10,2) DEFAULT 0.00 NOT NULL,
active CHAR(1) DEFAULT 'Y'::bpchar NOT NULL,
)
Run Code Online (Sandbox Code Playgroud)
State.java
public class State implements Serializable {
private int stateId;
private String stateCode;
private String name;
private BigDecimal taxPct = new BigDecimal(0);
private Date expiryDate;
private String createdBy;
private Date createdOn;
private String active;
//getters and setters here …Run Code Online (Sandbox Code Playgroud) 我在apache derby数据库中创建了一个名为Product的类和一个具有相同名称(Product)的表。现在,无论何时我使用BeanListHandler从数据库中检索行时,我都希望获得相应的Product对象,但总是会得到一个错误。我几乎到处都在搜索解决方案,之后我仍然看不到我的代码出了什么问题。有人可以告诉我我哪里错了。我的代码如下所示。
public class Product {
private long uniqueId; //Auto increment
private String productCode;
private String productName;
private String productCategory;
private boolean available;
private double productPrice;
private int quantityOnHand;
public Product(long uniqueId, String productCode, String productName, String productCategory, boolean available, double productPrice, int quantityOnHand) {
this.uniqueId = uniqueId; //Auto increment
this.productCode = productCode;
this.productName = productName;
this.productCategory = productCategory;
this.available = available;
this.productPrice = productPrice;
this.quantityOnHand = quantityOnHand; }
@Override
public String toString() {
return "Product{" + "uniqueId=" + uniqueId …Run Code Online (Sandbox Code Playgroud) 如何将准备好的语句与Apache DBUtils一起使用?
似乎org.apache.commons.dbutils.*的大多数方法都需要字符串参数.令人惊讶的是,没有一种方法可以接受PreparedStatements.
我们需要使用第三方库来执行 SQL 语句,在开始实施之前,我们希望确保库可以做我们想做的任何事情。我们目前正在评估 Apache DBUtils。
我们尝试执行类似的查询
INSERT INTO MyTable(ColA, ColB, ColC) VALUES (?, ?, ?),
(?, ?, ?),
(?, ?, ?);
Run Code Online (Sandbox Code Playgroud)
使用 insertBatch,但看起来它失败了,因为它想运行类似的东西:
INSERT INTO MyTable(ColA, ColB, ColC) VALUES (?, ?, ?);
INSERT INTO MyTable(ColA, ColB, ColC) VALUES (?, ?, ?);
INSERT INTO MyTable(ColA, ColB, ColC) VALUES (?, ?, ?);
Run Code Online (Sandbox Code Playgroud)
从性能的角度来看,这是更糟糕的。
我们做错了什么吗?有什么办法可以使用Apache DBUtils实现以前的SQL语句吗?