【javaSE 第三方插件commons-dbutils, 操作数据库的工具类, QueryRunner类, (query() 查询操作)】MySql驱动(jar包)下载:https://pan.baidu.com/s/19BYnGbO3l5MOOic5K4Ooaw密码:mwoh
第三方插件(commons-dbutils)下载:https://pan.baidu.com/s/17cyAXHZLgiayx5Y_VHvawQ密码:6om2
commons-dbutils-1.6.jar---右键---Build Path---Add to Build Path
Demo.java:
package cn.xxx.demo;
import java.sql.Connection;
// MySql驱动中的包
import java.sql.SQLException;
// MySql驱动中的包
import java.util.List;
import java.util.Map;
// 下面的包都是commons-dbutils插件(jar包)中的包
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.MapHandler;
import org.apache.commons.dbutils.handlers.MapListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;
import cn.xxx.domain.Sort;
// JavaBean类,实体类,必须有空参的构造器
import cn.xxx.jdbcutil.JDBCUtilsConfig;
// 自定义的连接数据库的工具类,用于获取数据库连接对象。/*
* QueryRunner数据查询操作:
*调用QueryRunner类方法query(Connection con,String sql,ResultSetHandler r, Object..params)
*ResultSetHandler r 结果集的处理方式,传递ResultSetHandler接口实现类。不同的实现类,返回不同的'结果集'。
*Object..params 对应SQL语句中的?占位符
*query的返回值由不同的ResultSetHandler实现类决定。 不同的实现类,返回不同的'结果集'。
*/
public class Demo {
private static Connection con = JDBCUtilsConfig.getConnection();
public static void main(String[] args) throws SQLException{
//ResultSetHandler接口实现类有如下: (根据不同的实现类,返回不同的'结果集')
//ArrayHandler: 返回对象数组 Object[];
封装第一条记录为数组(一维)
//ArrayListHandler: 返回List
JDBCUtilsConfig.java(自定义的数据库工具类,用于获取数据库连接对象):
package cn.xxx.jdbcutil;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.Properties;
public class JDBCUtilsConfig {
private static Connection con ;
private static String driverClass;
private static String url;
private static String username;
private static String password;
static{// 静态代码块,只会被执行一次
try{
readConfig();
Class.forName(driverClass);
con = DriverManager.getConnection(url, username, password);
}catch(Exception ex){
throw new RuntimeException("数据库连接失败");
}
}
private static void readConfig()throws Exception{
InputStream in = JDBCUtilsConfig.class.getClassLoader().getResourceAsStream("database.properties");
Properties pro = new Properties();
pro.load(in);
driverClass=pro.getProperty("driverClass");
url = pro.getProperty("url");
username = pro.getProperty("username");
password = pro.getProperty("password");
}
public static Connection getConnection(){
return con;
}
}
推荐阅读
- shiro的作用和执行流程总结
- 黑马程序员18-4(【day18集合泛型 练习与总结】)
- 05|循环得到resultset中的值
- JavaSE|JAVA8反射获取方法参数名
- javaSE|javaEE JDBC, dbutils插件, 事务
- javaSE 第三方插件commons-dbutils, 操作数据库的工具类, QueryRunner类, (update() 增、删、改操作)
- 邮件开发(邮件作用、邮件服务器、电子邮箱与邮件客户端软件)
- 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
- javase|创建两个线程,其中一个输出1-52,另外一个输出A-Z。输出格式要求(12A 34B 56C 78D 依次类推)