问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Apache Commons DbUtils 怎么实现 创建表的操作

发布网友 发布时间:2022-04-24 00:44

我来回答

3个回答

懂视网 时间:2022-04-29 23:25

java编程学习有一段时间了,今天突然发现以前比较基础的东西掌握的不牢固了,所以特意回顾下DBUtils架构的数据开发

QueryRunner类

该类简单化了SQL查询,它与ResultSetHandler组合在一起使用可以完成大部分的数据库操作,能够大大减少编码量。 QueryRunner类提供了两个构造方法: •默认的构造方法 •需要一个 javax.sql.DataSource 来作参数的构造方法。   QueryRunner类的主要方法 public Object query(Connection conn, String sql, Object[] params, ResultSetHandler rsh) throws SQLException:执行一个查询操作,在这个查询中,对象数组中的每个元素值被用来作为查询语句的置换参数。该方法会自行处理 PreparedStatement 和 ResultSet 的创建和关闭。 public Object query(String sql, Object[] params, ResultSetHandler rsh) throws SQLException: 几乎与第一种方法一样;唯一的不同在于它不将数据库连接提供给方法,并且它是从提供给构造方法的数据源(DataSource) 或使用的setDataSource 方法中重新获得 Connection。   public Object query(Connection conn, String sql, ResultSetHandler rsh) throws SQLException : 执行一个不需要置换参数的查询操作。   public int update(Connection conn, String sql, Object[] params) throws SQLException:用来执行一个更新(插入、更新或删除)操作。   public int update(Connection conn, String sql) throws SQLException:用来执行一个不需要置换参数的更新操作。   ResultSetHandler接口 该接口用于处理 java.sql.ResultSet,将数据按要求转换为另一种形式。 ResultSetHandler 接口提供了一个单独的方法:Object handle (java.sql.ResultSet .rs)。   ResultSetHandler 接口的实现类 ArrayHandler:把结果集中的第一行数据转成对象数组。 ArrayListHandler:把结果集中的每一行数据都转成一个数组,再存放到List中。 BeanHandler:将结果集中的第一行数据封装到一个对应的JavaBean实例中。 BeanListHandler:将结果集中的每一行数据都封装到一个对应的JavaBean实例中,存放到List里。   ResultSetHandler 接口的实现类 ColumnListHandler:将结果集中某一列的数据存放到List中。 KeyedHandler(name):将结果集中的每一行数据都封装到一个Map里,再把这些map再存到一个map里,其key为指定的key。 MapHandler:将结果集中的第一行数据封装到一个Map里,key是列名,value就是对应的值。 MapListHandler:将结果集中的每一行数据都封装到一个Map里,然后再存放到List   java实现数据操作底层代码  

private static ComboPooledDataSource ds;
//线程数据连接管理器
private static ThreadLocal<Connection> map = new ThreadLocal<Connection>();

static{
try{
//使用3cp0数据连接池获取数据资源
ds = new ComboPooledDataSource();
}catch (Exception e) {
throw new ExceptionInInitializerError(e);
}
}

public static Connection getConnection() throws SQLException{
Connection conn = map.get(); //获取到当前线程上绑定的链接
if(conn==null){
conn = ds.getConnection();
map.set(conn); //把链接绑定到当前线程上
}
return conn;
}
//开启事务
public static void startTransaction(){
try{
Connection conn = map.get(); //获取到当前线程上绑定的链接
if(conn==null){
conn = ds.getConnection();
map.set(conn);
}
conn.setAutoCommit(false);
}catch (Exception e) {
throw new RuntimeException(e);
}
}
//提交事务
public static void commitTransaction(){
try{
Connection conn = map.get(); //获取到当前线程上绑定的链接
if(conn!=null){
conn.commit();
}
}catch (Exception e) {
throw new RuntimeException(e);
}
}
//回滚事务
public static void rollbackTransaction(){
try{
Connection conn = map.get(); //获取到当前线程上绑定的链接
if(conn!=null){
conn.rollback();
conn.commit();
}
}catch (Exception e) {
throw new RuntimeException(e);
}
}
//关闭连接
public static void closeConnection(){
try{
Connection conn = map.get(); //获取到当前线程上绑定的链接
if(conn!=null){
try{
conn.close(); //求求大家,千万注意
}finally{
map.remove();//解除当前线程绑定的资源
}
}
}catch (Exception e) {
throw new RuntimeException(e);
}
}

public static DataSource getDataSource(){
return ds;
}

c3p0配置文件

<named-config name="mysql">
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/day16</property>
<property name="user">root</property>
<property name="password">root</property>

<property name="acquireIncrement">5</property>
<property name="initialPoolSize">10</property>
<property name="minPoolSize">5</property>
<property name="maxPoolSize">30</property>
</named-config>

Apache—DBUtils框架开发

标签:

热心网友 时间:2022-04-29 20:33

  关于Apache的DbUtils中间件或许了解的人并不多,大部分开发人员在生成环境中更多的是依靠Hibernate、Ibatis、Spring JDBC、JPA等大厂提供的持久层技术解决方案,或者是企业内部自己研发的持久层技术。但无论如何,使用这些技术的初衷和本质都是为了能够减少企业开发成本,提高生产效率,降低耦合。
  
  放眼企业级项目,Hibernate等ORM产品是首选,而互联网领域,大部分开发人员往往并不会在生产环境中上这些ORM技术,原因很简单,要的就是效率,其次都不重要。对于刚接触SQL和JDBC的开发人员,最引以为傲的就是希望能够在日后编写复杂的SQL语句,以及会使用诸如Hibernate、Ibatis等第三方持久层技术,并且极力的撇清与传统JDBC技术的关系,但笔者不得不认为,这是一种普遍业界存在的“病态”!
  
  如果是企业级的项目,尤其是跟金融相关的业务,SQL语句或许会非常复杂,并且关联着事物。但互联网项目却并非如此,在互联网项目中,看你牛不牛*并不是取决于你能否写出一条复杂的SQL语句,而是看你能否将原本一条复杂的SQL语句拆散成单条SQL,一句一句的执行;并且脱离Hibernate等ORM产品后,能否使用传统的JDBC技术完成一条简单的CRUD操作,这才是牛*!是的,你没有听错,互联网确确实实就是这么玩,还原最本质的东西,才是追求性能的不二选择。
  
  笔者本章不会提及垂直分库、水平分区等数据库概念,以及数据路由中间件等技术(请阅读笔者博文《剖析淘宝TDDL—Matrix层分库分表实现》),因为这些内容与本章内容无关,但间接来看,笔者之前提及的单条SQL、使用JDBC完成基本的CRUD操作就可以在最大程度上满足一个互联网场景的持久层操作。以Hibernate为例,简单来说需要经历HQL->SQL->DBMS等编译过程,中间还冗余着缓存、对象等开销,希望大家记住,封装层次越高,性能越低!这个是无可争议的事实。笔者希望大家接下来,暂时“忘记”掉你所会的持久层技术,耐心的听笔者为你介绍Apache的DbUtils技术,或许你会有意想不到的收获。

热心网友 时间:2022-04-29 21:51

是create table xxx语句。
实例

1、sql脚本
create table user (
id int(11) not null auto_increment,
name varchar(50) character set latin1 not null,
pswd varchar(50) character set latin1 default null,
primary key (id)
) engine=MYISAM auto_increment=1 default charset=gbk

2、简单的数据库连接工具
package stu.lavasoft.dbutils;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

/**
* 随便写个数据库连接获取工具,凑合着把例子跑起来
*
* @author leimin 2009-11-6 14:48:22
*/
public class ConnTools {
private static String dirverClassName = "com.mysql.jdbc.Driver";
private static String url = "jdbc:mysql://192.168.104.101:3306/testdb?useUnicode=true&characterEncoding=utf8";
private static String user = "root";
private static String password = "leimin";

public static Connection makeConnection() {
Connection conn = null;
try {
Class.forName(dirverClassName);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
try {
conn = DriverManager.getConnection(url, user, password);
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
win7不能浏览网页,但用搜狗浏览器高速模式能上网,兼容就不行???求 ... ...64位 IE浏览器无法打开网页 搜狗浏览器可以打开 类似的新窗口网页都... 千牛工作台子账号怎么开权限?子账号的安全设置在哪里? 千牛怎么设置子账号-千牛设置子账号步骤 怎么把CD里的歌曲改成MP3格式? ...戴眼镜吗?想给孩子去检查一下,哪里比较推荐,渭南这块的 Windows Media Player将CD音乐转换为MP3 最简单的方法将CD转换为MP3音频文件(一步一步教你将CD音乐转换为MP3格 ... 孩子最近视力下降了有可能是近视吗?渭南哪里可以免费检查视力啊 奥运会跳远世界纪录 微信里面的截图不小心被我删了,怎么样才能找回来啊? 耳朵里长毛的男人代表什么? org.apache.commons.httpclient.HttpClient与org.apache.http.client... 被删除的截图如何恢复 如何引入import org.apache.commons 耳朵里长一根毛命理 如何在 apache commons-httpclient 4.2 中使用自定义的 DNS 解析 耳朵里为什么长毛? 用apache commons-email 发送大量邮件时报异常 Apache Commons Logging 是如何决定使用哪个日志实现类的 apache commons compress怎么用 Google guava和Apache commons哪个好 org.apache.commons下的组件,这个commons到底是来干什么的。?_百度知 ... apache commons 怎么用 怎样修改腾达无线路由器密码修改 - 信息提示 拼多多六周年福利真的吗 王者荣耀六周年活动钥匙如何微信登录 微信怎么领礼包 微信游戏六周年扫一扫安全吗? 求org.apache.commons包 下载地址 怎样恢复被删除的截屏 为什么耳内会长毛? eclipse 配置org.apache.commons 耳朵眼里长毛是怎么回事 org.apache.commons.lang.StringUtils的jar包是什么? 为什么有的人耳朵里长毛? java如何下载和安装org.apache.commons.httpclient的jar包? 中年男子耳朵里长毛,是怎么回事 无法引用 org.apache.commons.codec.binary.Base64; 耳朵里面长毛好不好啊? apache commons configuration 在哪个jar包里 耳朵里面长毛好不好 耳朵里长毛是病吗,怎么回事? org.apache.commons.logging.Log?? 耳朵里面长毛影响正常休息!应该怎么办? 耳朵里长毛是怎么回事? 古人是怎么评价耳朵里长出的长毛的? 怎样水煮干鱿鱼 鱿鱼干煲汤的做法