`
dawuafang
  • 浏览: 1109025 次
文章分类
社区版块
存档分类
最新评论

DBUtils使用总结

 
阅读更多

Apache DBUtils使用总结
2010-01-26 14:33:07
标签:DBUtilsApache
原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处、作者信息和本声明。否则将追究法律责任。http://lavasoft.blog.51cto.com/62575/270661
Apache DBUtils使用总结
DBUtils是个小巧的JDBC轻量级封装的工具包,其最核心的特性是结果集的封装,可以直接将查询出来的结果集封装成JavaBean,这就为我们做了最枯燥乏味、最容易出错的一大部分工作。
在使用DBUtils之前,应该注意一些问题:
1、DBUtils是JDBC的简单封装,可以和JDBC混合使用。
2、DBUtils对结果集自动封装为JavaBean是有着苛刻要求的:必须满足JavaBean的规范,其次Bean的getter与setter方法的名字与结果集的列名一一对应,而不要求JavaBean的私有成员与表结果集列名一一对应。
比如:
person表中有个字段叫:address,那么对应的JavaBean的Person类中必须有getAddress和setAddress两个方法,而Person类中可以将address属性命名为add,这是没问题的。
3、DBUtils可以将结果集封装为各种类型,主要有:Bean/List<Bean>,Map/List<Map>/Map<Map>,数组/List<数组>,列/List<列>,这些类型。
对于Map<Map>的类型使用KeyedHandler作为结果集处理器,内层的Map是“列名-值"对,外层的Map是“主键-内层Map的引用”,但此处的主键不一定就是数据库的主键,可以随意指定,比如:
ResultSetHandler h =newKeyedHandler("id");
Map found = (Map) queryRunner.query("select id, name, age from person", h);
Map jane = (Map) found.get(newLong(1));// jane's id is 1
String janesName = (String) jane.get("name");
Integer janesAge = (Integer) jane.get("age");
4、DBUtils执行插入操作的时候,无法返回自增主键,这是一个很严重的问题,当然不能怪DBUtils,可以通过变通的方法来实现,比如在MySQL中,执行完了一个插入SQL后,接着执行SELECT LAST_INSERT_ID()语句,就可以获取到自增主键。
5、DBUtils的性能和JDBC性能是一样,测试过程中没发现性能损失,拥有了很高性能的同时,而不失JDBC的灵活性。
6、对于JavaBean的成员类型定义,有一条原则那就是:尽可能使用包装类型,而不要使用基本类型。很多人不理解为什么,包括我见到一些傻B(,我提出让改为包装类型,他还信誓旦旦的说他的代码多牛多叼),都干好多年了,这个简单的道理还不知道:
//错误
int a1 = (Integer) null;
boolean x1 = (Boolean)null;
//正确
Integer a2 = (Integer) null;
Boolean x2 = (Boolean)null;
实际上就是为了保证在查询结果为null的时候,也不会因为给基本类型赋null值而发生错误。
下面给出一个简单例子,作为以后写代码时候有点参考:
环境:
MySQL5.4
JDK1.5
建表SQL:
CREATETABLEperson (
idbigint(20)NOTNULLAUTO_INCREMENT,
namevarchar(24)DEFAULTNULL,
ageint(11)DEFAULTNULL,
addressvarchar(120)DEFAULTNULL,
PRIMARYKEY(id)
) ENGINE=MyISAM AUTO_INCREMENT=1DEFAULTCHARSET=gbk
Java代码:
publicclassPerson {
privateLong id;
privateString sdf;
privateString address2;
privateInteger age;

publicPerson() {
}

publicPerson(String sdf) {
this.sdf = sdf;
}

publicPerson(String sdf, Integer age, String address) {
this.sdf = sdf;
this.age = age;
this.address2 = address;
}

publicLong getId() {
returnid;
}

publicvoidsetId(Long id) {
this.id = id;
}

publicString getSdf() {
returnsdf;
}

publicvoidsetSdf(String sdf) {
this.sdf = sdf;
}

publicInteger getAge() {
returnage;
}

publicvoidsetAge(Integer age) {
this.age = age;
}

publicString getAddress() {
returnaddress2;
}

publicvoidsetAddress(String address2) {
this.address2 = address2;
}
}
测试
packagecom.lavasoft.dbstu;

importcom.lavasoft.common.DBToolkit;
importorg.apache.commons.dbutils.QueryRunner;
importorg.apache.commons.dbutils.handlers.BeanHandler;
importorg.apache.commons.dbutils.handlers.BeanListHandler;
importorg.apache.commons.dbutils.handlers.MapHandler;
importorg.apache.commons.dbutils.handlers.ScalarHandler;

importjava.sql.Connection;
importjava.sql.SQLException;
importjava.util.List;
importjava.util.Map;

/**
* Created by IntelliJ IDEA.
*
* @author leizhimin 2010-1-25 21:00:29
*/

publicclassPersonDAOImplimplementsPersonDAO {
privatestaticPersonDAOImpl instance =newPersonDAOImpl();

publicstaticPersonDAOImpl getInstance() {
returninstance;
}

publicstaticvoidmain(String[] args) {
//错误
inta1 = (Integer)null;
booleanx1 = (Boolean)null;
//正确
Integer a2 = (Integer)null;
Boolean x2 = (Boolean)null;

getInstance().save(null);
//getInstance().save(null);
//getInstance().save(null);
//getInstance().save(null);
//getInstance().save(null);
getInstance().update(null);
getInstance().load(null);
getInstance().load4Map(null);
}

@Override
publicLong save(String sql) {
Long id =null;
String ins_sql ="INSERT INTO person (NAME, age, address) VALUES ('aaa', 21, 'address001')";
Connection conn = DBToolkit.getConnection();
QueryRunner qr =newQueryRunner();
try{
qr.update(conn, ins_sql);
//获取新增记录的自增主键
id = (Long) qr.query(conn,"SELECT LAST_INSERT_ID()",newScalarHandler(1));
}catch(SQLException e) {
e.printStackTrace();
}finally{
DBToolkit.closeConnection(conn);
}
returnid;
}

@Override
publicintdelete(Long id) {
intx = 0;
Connection conn = DBToolkit.getConnection();
QueryRunner qr =newQueryRunner();
try{
x = qr.update(conn,"DELETE FROM person WHERE id = ?", id);
}catch(SQLException e) {
e.printStackTrace();
}finally{
DBToolkit.closeConnection(conn);
}
returnx;
}

@Override
publicintupdate(Person person) {
intx = 0;
Connection conn = DBToolkit.getConnection();
QueryRunner qr =newQueryRunner();
try{
x = qr.update(conn,"UPDATE person SET NAME = ?, age = ?, address = ? WHERE id = ?","xxx", 23,"ttt", 5);
}catch(SQLException e) {
e.printStackTrace();
}finally{
DBToolkit.closeConnection(conn);
}
returnx;

}

@Override
publicPerson load(Long id) {
Connection conn = DBToolkit.getConnection();
QueryRunner qr =newQueryRunner();
try{
Person person = (Person) qr.query(conn,"SELECT * FROM person where id = ?",newBeanHandler(Person.class), 3L);
System.out.println(person.getId() +"/t"+ person.getSdf() +"/t"+ person.getAge() +"/t"+ person.getAddress());
}catch(SQLException e) {
e.printStackTrace();
}
returnnull;
}

@Override
publicList<Person> findPerson(String sql) {
Connection conn = DBToolkit.getConnection();
QueryRunner qr =newQueryRunner();
try{
List<Person> pset = (List) qr.query(conn,"SELECT * FROM person",newBeanListHandler(Person.class));
for(Person person : pset) {
System.out.println(person.getId() +"/t"+ person.getSdf() +"/t"+ person.getAge() +"/t"+ person.getAddress());
}
}catch(SQLException e) {
e.printStackTrace();
}
returnnull;
}

publicPerson load4Map(Long id) {
Connection conn = DBToolkit.getConnection();
QueryRunner qr =newQueryRunner();
try{
//先将两个字段置为null
qr.update(conn,"update person set age =null,address =nullwhere id =1");
Map<String, Object> map = qr.query(conn,"SELECT * FROM person where id = ?",newMapHandler(), 1L);
Person person =newPerson();
person.setId((Long) map.get("id"));
person.setSdf((String) map.get("name"));
person.setAge((Integer) map.get("age"));
person.setAddress((String) map.get("address"));
System.out.println(person.getId() +"/t"+ person.getSdf() +"/t"+ person.getAge() +"/t"+ person.getAddress());
}catch(SQLException e) {
e.printStackTrace();
}
returnnull;
}
}
注意:
从上面的过程看,每个SQL的执行都需要用到QueryRunner,这其实是一个普通的类,非线程安全。在创建这个QueryRunner对象的时候,每次都要new。
QueryRunner对象的创建方式很多,可以通过DateSource,也可以通过Connection来创建。从QueryRunner对象上,可以直接获取到DataSource或者Connection对象。
如果你想看更多例子:

本文出自 “熔 岩” 博客,请务必保留此出处http://lavasoft.blog.51cto.com/62575/270661

 附件下载:dbutilstest.rar



Dbutil 的使用示例

本文转载:http://2008ningli.blog.163.com/blog/static/3699023200983102416916/

Java代码收藏代码
  1. packagecn.lining.test;
  2. importjava.sql.Connection;
  3. importjava.sql.DriverManager;
  4. importjava.sql.SQLException;
  5. importjava.util.List;
  6. importjava.util.Map;
  7. importorg.apache.commons.dbutils.DbUtils;
  8. importorg.apache.commons.dbutils.QueryRunner;
  9. importorg.apache.commons.dbutils.handlers.ArrayHandler;
  10. importorg.apache.commons.dbutils.handlers.ArrayListHandler;
  11. importorg.apache.commons.dbutils.handlers.BeanHandler;
  12. importorg.apache.commons.dbutils.handlers.BeanListHandler;
  13. importorg.apache.commons.dbutils.handlers.ColumnListHandler;
  14. importorg.apache.commons.dbutils.handlers.KeyedHandler;
  15. importorg.apache.commons.dbutils.handlers.MapHandler;
  16. importorg.apache.commons.dbutils.handlers.MapListHandler;
  17. importorg.apache.commons.dbutils.handlers.ScalarHandler;
  18. publicclasstest{
  19. @SuppressWarnings("unchecked")
  20. publicstaticvoidmain(String[]args)throwsClassNotFoundException{
  21. UserFielduserField=newUserField();
  22. Connectionconn=null;
  23. StringjdbcURL="jdbc:mysql://localhost:3306/macaw4";
  24. StringjdbcDriver="com.mysql.jdbc.Driver";
  25. try{
  26. DbUtils.loadDriver(jdbcDriver);
  27. conn=DriverManager.getConnection(jdbcURL,"root","root");
  28. conn.setAutoCommit(false);//关闭自动提交
  29. QueryRunnerqRunner=newQueryRunner();
  30. //以下部分代码采用MapHandler存储方式查询
  31. System.out.println("***UsingMapHandler***");
  32. Mapmap=(Map)qRunner.query(conn,
  33. "select*frommc_user_fieldwhereid=?",
  34. newMapHandler(),newObject[]{"5"});
  35. System.out.println("id-------------name");
  36. System.out.println(map.get("id")+"-------------"
  37. +map.get("name"));
  38. //以下部分代码采用MapListHandler存储方式查询
  39. System.out.println("***UsingMapListHandler***");
  40. ListlMap=(List)qRunner.query(conn,
  41. "select*frommc_user_field",newMapListHandler());
  42. System.out.println("id-------------name");
  43. for(inti=0;i<lMap.size();i++){
  44. Mapvals=(Map)lMap.get(i);
  45. System.out.println(vals.get("id")+"-------------"
  46. +vals.get("name"));
  47. }
  48. //以下部分代码采用BeanHandler存储方式查询
  49. System.out.println("***UsingBeanHandler***");
  50. userField=(UserField)qRunner.query(conn,
  51. "select*frommc_user_fieldwhereid=?",
  52. newBeanHandler(Class.forName("cn.lining.test.UserField")),
  53. newObject[]{"5"});
  54. System.out.println("id-------------name");
  55. System.out.println(userField.getId()+"-------------"
  56. +userField.getName());
  57. //以下部分代码采用BeanListHandler存储方式查询
  58. System.out.println("***UsingBeanListHandler***");
  59. ListlBean=(List)qRunner.query(conn,
  60. "select*frommc_user_field",newBeanListHandler(Class
  61. .forName("cn.lining.test.UserField")));
  62. System.out.println("id-------------name");
  63. for(inti=0;i<lBean.size();i++){
  64. userField=(UserField)lBean.get(i);
  65. System.out.println(userField.getId()+"-------------"
  66. +userField.getName());
  67. }
  68. //以下部分代码采用ArrayHandler存储方式查询
  69. System.out.println("***UsingArrayHandler***");
  70. Object[]array=(Object[])qRunner.query(conn,
  71. "select*frommc_user_fieldwhereid=?",
  72. newArrayHandler(),newObject[]{"5"});
  73. System.out.println("id-------------name");
  74. System.out.println(array[0].toString()+"-------------"
  75. +array[1].toString());
  76. //以下部分代码采用ArrayListHandler存储方式查询
  77. System.out.println("***UsingArrayListHandler***");
  78. ListlArray=(List)qRunner.query(conn,
  79. "select*frommc_user_field",newArrayListHandler());
  80. System.out.println("id-------------name");
  81. for(inti=0;i<lArray.size();i++){
  82. Object[]var=(Object[])lArray.get(i);
  83. System.out.println(var[0].toString()+"-------------"
  84. +var[1].toString());
  85. }
  86. //以下部分代码采用ColumnListHandler存储方式查询指定列
  87. System.out.println("***UsingColumnListHandler***");
  88. ListlName=(List)qRunner.query(conn,
  89. "select*frommc_user_fieldwhereid=?",
  90. newColumnListHandler("name"),newObject[]{"5"});
  91. System.out.println("name");
  92. for(inti=0;i<lName.size();i++){
  93. Stringname=(String)lName.get(i);
  94. System.out.println(name);
  95. }
  96. //以下部分代码采用ScalarHandler存储方式查询
  97. System.out.println("***UsingScalarHandler***");
  98. Stringname=(String)qRunner.query(conn,
  99. "select*frommc_user_fieldwhereid=?",
  100. newScalarHandler("name"),newObject[]{"5"});
  101. System.out.println("name");
  102. System.out.println(name);
  103. //以下部分代码采用KeyedHandler存储方式查询
  104. System.out.println("***UsingKeyedHandler***");
  105. Map<String,Map>map2=(Map<String,Map>)qRunner.query(conn,
  106. "select*frommc_user_field",newKeyedHandler("name"));
  107. System.out.println("name:field_name2");
  108. Mapvals=(Map)map2.get("field_name2");
  109. System.out.println(vals.get("id")+""+vals.get("name")+""
  110. +vals.get("type"));
  111. //以下部分代码插入一条数据
  112. System.out.println("***Insertbegin***");
  113. userField=newUserField();
  114. qRunner.update(conn,"insertintomc_user_field("
  115. +"id,name,type,sort_order,required,visible)"
  116. +"values(?,?,?,?,?,?)",newObject[]{userField.getId(),
  117. userField.getName(),userField.getType(),
  118. userField.getSort_order(),userField.getRequired(),
  119. userField.getVisible()});
  120. System.out.println("***updateend***");
  121. //以下部分代码更新一条数据
  122. System.out.println("***updatebegin***");
  123. userField=newUserField();
  124. qRunner.update(conn,"updatemc_user_fieldset"
  125. +"name=?,type=?,sort_order=?,"
  126. +"required=?,visible=?"+"whereid=?",
  127. newObject[]{userField.getName(),userField.getType(),
  128. userField.getSort_order(),userField.getRequired(),
  129. userField.getVisible(),userField.getId()});
  130. System.out.println("***updateend***");
  131. //以下部分代码删除一条数据
  132. System.out.println("***deletebegin***");
  133. userField=newUserField();
  134. qRunner.update(conn,"deletefrommc_user_fieldwhereid2=?",
  135. newObject[]{userField.getId()});
  136. System.out.println("***deleteend***");
  137. }catch(SQLExceptionex){
  138. ex.printStackTrace();
  139. try{
  140. System.out.println("***rollbackbegin***");
  141. DbUtils.rollback(conn);
  142. System.out.println("***rollbackend***");
  143. }catch(SQLExceptione){
  144. e.printStackTrace();
  145. }
  146. }finally{
  147. DbUtils.closeQuietly(conn);
  148. }
  149. }
  150. }
  • ArrayHandler:把结果集中的第一行数据转成对象数组。
  • ArrayListHandler:把结果集中的每一行数据都转成一个对象数组,再存放到List中。
  • BeanHandler:将结果集中的第一行数据封装到一个对应的JavaBean实例中。
  • BeanListHandler:将结果集中的每一行数据都封装到一个对应的JavaBean实例中,存放到List里。
  • ColumnListHandler:将结果集中某一列的数据存放到List中。
  • KeyedHandler:将结果集中的每一行数据都封装到一个Map里,然后再根据指定的key把每个Map再存放到一个Map里。
  • MapHandler:将结果集中的第一行数据封装到一个Map里,key是列名,value就是对应的值。
  • MapListHandler:将结果集中的每一行数据都封装到一个Map里,然后再存放到List。
ScalarHandler:将结果集中某一条记录的其中某一列的数据存成Object。


common-utils的使用

默认分类2009-05-19 11:51:59阅读294评论0字号:订阅


package cn.lining.test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;

import org.apache.commons.dbutils.DbUtils;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.ArrayHandler;
import org.apache.commons.dbutils.handlers.ArrayListHandler;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.ColumnListHandler;
import org.apache.commons.dbutils.handlers.KeyedHandler;
import org.apache.commons.dbutils.handlers.MapHandler;
import org.apache.commons.dbutils.handlers.MapListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;

public class test {
@SuppressWarnings("unchecked")
public static void main(String[] args) throws ClassNotFoundException {

UserField userField = new UserField();

Connection conn = null;
String jdbcURL = "jdbc:mysql://localhost:3306/macaw4";
String jdbcDriver = "com.mysql.jdbc.Driver";
try {
DbUtils.loadDriver(jdbcDriver);
conn = DriverManager.getConnection(jdbcURL, "root", "root");
conn.setAutoCommit(false);//关闭自动提交
QueryRunner qRunner = new QueryRunner();

// 以下部分代码采用MapHandler存储方式查询
System.out.println("***Using MapHandler***");
Map map = (Map) qRunner.query(conn,
"select * from mc_user_field where id = ?",
new MapHandler(), new Object[] { "5" });

System.out.println("id ------------- name ");
System.out.println(map.get("id") + " ------------- "
+ map.get("name"));

// 以下部分代码采用MapListHandler存储方式查询
System.out.println("***Using MapListHandler***");
List lMap = (List) qRunner.query(conn,
"select * from mc_user_field", new MapListHandler());

System.out.println("id ------------- name ");
for (int i = 0; i < lMap.size(); i++) {
Map vals = (Map) lMap.get(i);
System.out.println(vals.get("id") + " ------------- "
+ vals.get("name"));
}

// 以下部分代码采用BeanHandler存储方式查询
System.out.println("***Using BeanHandler***");
userField = (UserField) qRunner.query(conn,
"select * from mc_user_field where id = ?",
new BeanHandler(Class.forName("cn.lining.test.UserField")),
new Object[] { "5" });
System.out.println("id ------------- name ");
System.out.println(userField.getId() + " ------------- "
+ userField.getName());

// 以下部分代码采用BeanListHandler存储方式查询
System.out.println("***Using BeanListHandler***");
List lBean = (List) qRunner.query(conn,
"select * from mc_user_field", new BeanListHandler(Class
.forName("cn.lining.test.UserField")));
System.out.println("id ------------- name ");
for (int i = 0; i < lBean.size(); i++) {
userField = (UserField) lBean.get(i);
System.out.println(userField.getId() + " ------------- "
+ userField.getName());
}

// 以下部分代码采用ArrayHandler存储方式查询
System.out.println("***Using ArrayHandler***");
Object[] array = (Object[]) qRunner.query(conn,
"select * from mc_user_field where id = ?",
new ArrayHandler(), new Object[] { "5" });

System.out.println("id ------------- name ");
System.out.println(array[0].toString() + " ------------- "
+ array[1].toString());

// 以下部分代码采用ArrayListHandler存储方式查询
System.out.println("***Using ArrayListHandler***");
List lArray = (List) qRunner.query(conn,
"select * from mc_user_field", new ArrayListHandler());
System.out.println("id ------------- name ");
for (int i = 0; i < lArray.size(); i++) {
Object[] var = (Object[]) lArray.get(i);
System.out.println(var[0].toString() + " ------------- "
+ var[1].toString());
}

// 以下部分代码采用ColumnListHandler存储方式查询指定列
System.out.println("***Using ColumnListHandler***");
List lName = (List) qRunner.query(conn,
"select * from mc_user_field where id = ?",
new ColumnListHandler("name"), new Object[] { "5" });
System.out.println("name ");
for (int i = 0; i < lName.size(); i++) {
String name = (String) lName.get(i);
System.out.println(name);
}

// 以下部分代码采用ScalarHandler存储方式查询
System.out.println("***Using ScalarHandler***");
String name = (String) qRunner.query(conn,
"select * from mc_user_field where id = ?",
new ScalarHandler("name"), new Object[] { "5" });

System.out.println("name ");
System.out.println(name);

// 以下部分代码采用KeyedHandler存储方式查询
System.out.println("***Using KeyedHandler***");
Map<String, Map> map2 = (Map<String, Map>) qRunner.query(conn,
"select * from mc_user_field", new KeyedHandler("name"));

System.out.println("name: field_name2");
Map vals = (Map) map2.get("field_name2");
System.out.println(vals.get("id") + " " + vals.get("name") + " "
+ vals.get("type"));

// 以下部分代码插入一条数据
System.out.println("***Insert begin***");
userField = new UserField();
qRunner.update(conn, "insert into mc_user_field ("
+ "id,name,type,sort_order,required,visible)"
+ "values (?,?,?,?,?,?)", new Object[] { userField.getId(),
userField.getName(), userField.getType(),
userField.getSort_order(), userField.getRequired(),
userField.getVisible() });
System.out.println("***update end***");

// 以下部分代码更新一条数据
System.out.println("***update begin***");
userField = new UserField();
qRunner.update(conn, "update mc_user_field set "
+ "name = ?,type = ?,sort_order = ?,"
+ "required = ?,visible = ?" + "where id = ?",
new Object[] { userField.getName(), userField.getType(),
userField.getSort_order(), userField.getRequired(),
userField.getVisible(), userField.getId() });
System.out.println("***update end***");

// 以下部分代码删除一条数据
System.out.println("***delete begin***");
userField = new UserField();
qRunner.update(conn, "delete from mc_user_field where id2 = ?",
new Object[] { userField.getId() });
System.out.println("***delete end***");

} catch (SQLException ex) {
ex.printStackTrace();
try {
System.out.println("***rollback begin***");
DbUtils.rollback(conn);
System.out.println("***rollback end***");
} catch (SQLException e) {
e.printStackTrace();
}
} finally {
DbUtils.closeQuietly(conn);
}

}
}
/*
* ArrayHandler:把结果集中的第一行数据转成对象数组。
* ArrayListHandler:把结果集中的每一行数据都转成一个对象数组,再存放到List中。
* BeanHandler:将结果集中的第一行数据封装到一个对应的JavaBean实例中。
* BeanListHandler:将结果集中的每一行数据都封装到一个对应的JavaBean实例中,存放到List里。
* ColumnListHandler:将结果集中某一列的数据存放到List中。
* KeyedHandler:将结果集中的每一行数据都封装到一个Map里,然后再根据指定的key把每个Map再存放到一个Map里。
* MapHandler:将结果集中的第一行数据封装到一个Map里,key是列名,value就是对应的值。
* MapListHandler:将结果集中的每一行数据都封装到一个Map里,然后再存放到List。
* ScalarHandler:将结果集中某一条记录的其中某一列的数据存成Object。
*
*/

分享到:
评论

相关推荐

    Apache DBUtils使用总结

    DBUtils是个小巧的JDBC轻量级封装的工具包,其最核心的特性是结果集的封装,可以直接将查询出来的结果集封装成JavaBean,这就为我们做了最枯燥乏味、最容易出错的一大部分工作。

    Dbutils学习源码总结

    apache下面有很多值得学习的开源项目,尤其是commons系列,在此,特封装了其组织下的dbutils根据,方便了喜欢使用sql开发的java朋友,里面有各种实用的封装类和对数据库操作的接口,欢迎下载!

    在Eclipse中用JDBC连接Sql Server 2005总结

    在Eclipse中用JDBC连接Sql Server 2005总结,非常好

    MVC总结大全

    utils工具类知识请求和响应 entity实体类知识,序列化 单例模式和dbutils

    访问SQLServer - springboot自定义DBUtil(druid连接池)操作SQLServer数据库

    总结:【共3步】 第1步:添加druid和MSSQL Driver的依赖项; 第2步:配置连接字符串; 第3步:创建数据库操作类,使用@Bean注入DruidDataSource, 然后根据DruidDataSource获取到空闲连接操作数据库;

    day_45_bookstore.rar

    本Java视频教程案例是尚硅谷JavaWEB学习完成后的一个总结性案例,由讲师在第45、46、47天带领学员一起完成。 该案例把 JavaWEB 之前学习的大部分技术融合到一起,具体内容涉及:JavaSE、SQL、JDBC、DBUtils、C3P0、...

    基于控制台的图书管理系统

    3.新增Manage操作类及DBUtils数据库工具类 4.完善代码(封装及方法调用) ----------------------------------------------------------------------- 2019.3.29 数据库版本2.1 1..封装更彻底,除了查询不会封其他都...

    jsp+servlet+javabean+jdbc+mysql实现增删改查和分页功能

    1.目的:总结JDBC,和Servlet JSP结合到一起。 2.开发中的一些小技巧。 3.客户管理平台功能 * 添加客户 * 查询所有的客户的信息 * 修改客户信息 * 删除客户信息 * 按条件查询 * 分页查询数据 4.准备环境 5....

    javaEE开发lib工具.zip

    javaEE开发过程中用到的jar包,绝对齐全,包括C3p0,dbutils,mysql等等,个人总结望采纳

    JavaWeb学生管理系统(报告+源码)

    就是一个简单的学生信息的增删改查,适合初学者和应付课程报告。 前端是JSP,后端是Servlet,DAO层用的dbutils库,数据库是MySQL。

    基于Java语言的Servlet技术完成的图书管理系统源码+部署教程.zip

    本项目是本人在大三阶段,学习完了Java Web相关的知识点,为了对知识点进行总结和更好的掌握,编写的一款基于Java语言,Servlet、Jsp、MySQL等技术的实现的图书借阅管理系统。也是本人第一款独立完成能够实现其功能...

Global site tag (gtag.js) - Google Analytics