1.jdbcutils的封装
1.加载驱动(静态代码块)
2.Connection 对象
3.close方法
public class JdbcUtil {
private static String url = null;
private static String user = null;
private static String password = null;
private static String driverClass = null;
static {
try {
//1.创建一个properties对象
Properties properties = new Properties();
//2.使用这个对象去加载文件
properties.load(new FileInputStream("./src/db.properties"));
//3.从properties 读取相应的数据
url = properties.getProperty("url");
user = properties.getProperty("user");
password = properties.getProperty("password");
driverClass = properties.getProperty("driver");
//4.加载驱动
Class.forName(driverClass);
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
//自己封装 connection这个函数
/*
* 返回的是Connection这个对象
* */
public static Connection getConnection () {
Connection connection = null;
try {
connection = DriverManager.getConnection(url, user, password);
} catch (SQLException e) {
e.printStackTrace();
}
return connection;
}
/*
* 关闭数据库的各种连接资源
* */
public static void close(Connection connection) throws SQLException {
// if (connection != null) {
// connection.close();
// }
close(connection, null,null);
}
public static void close(Connection connection, Statement statement) throws SQLException {
close(connection, statement, null);
}
public static void close(Connection connection, Statement statement, ResultSet resultSet) throws SQLException {
if (connection != null) {
connection.close();
}
if (statement != null) {
statement.close();
}
if (resultSet != null) {
resultSet.close();
}
}
}
2.JavaBean规范以及BeaUtils工具类
JavaBean是一种遵循开发规范的一种类。在JavaWeb开发中,经常用来存储实体信息,比如用户实体信息,实体信息不应该是散乱的,它应该是一个整体(就好像从数据库取出一个用户的年龄,id,手机等数据,这些数据应该归属于一个对象,而不应该用某个单纯变量来存储),所以才需要javabean。而为了规范开发,以及规范使用规则,所以需要按照一定规则来定义JavaBean。
只有符合以下规则的才是一个javabean:
1. 必须要有一个无参构造函数【一些地方的javabean的使用需要利用反射,所以需要无参构造函数】
2.所有属性必须私有化【私有规则】
3.私有化的属性必须提供public类型的getter、setter方法,对于boolean类型的可以使用isXxx来代替。 【getXxx()和setXxx()中的属性名首字母要大写(这是一种规则,不然的话,一些例如jsp中的使用“对象.属性 名”将无法获取,因为调用的是对应的getter函数)】
commons-beanutils-1.8.3.jar commons-logging-1.1.3.jar
BeaUtils是Apache开发的一种工具。
将数据放到咱们javabean规范中
public class Demo1 {
public static void main(String[] args) throws InvocationTargetException, IllegalAccessException, NoSuchMethodException {
Person person = new Person();
//setProperty 设置属性 第一个参数对象 第二个参数属性 第三个参数是属性值
BeanUtils.setProperty(person, "id", "1");
BeanUtils.setProperty(person, "name", "骚磊");
BeanUtils.setProperty(person, "age", 16);
System.out.println(person);
Person person1 = new Person();
//复制一个实体
copyProperties(person1, person);
System.out.println(person1);
//获取变量值
String name = BeanUtils.getProperty(person, "name");
System.out.println(name);
/*
* orm思想 就是对数据库的增删改查
* DBUtil 轻量级的
* Hibernate 比较笨重
* MyBatis即将要学的
* */
}
}
3.元数据
数据库元数据(不重要):
参数元数据(重要):
结果集元数据(重要):
数据库的元数据
public class Demo1 {
public static void main(String[] args) throws SQLException {
Connection connection = JdbcUtil.getConnection();
//数据库配置的一些元数据 不重要
DatabaseMetaData metaData = connection.getMetaData();
String driverVersion = metaData.getDriverVersion();
System.out.println(driverVersion);
}
参数元数据
public class Demo2 {
public static void main(String[] args) throws SQLException {
Connection connection = JdbcUtil.getConnection();
String sql = "insert into work (name, age, info) values(?, ?, ?)";
PreparedStatement preparedStatement = connection.prepareStatement(sql);
//获取参数的元数据的对象 parameterMetaData
ParameterMetaData parameterMetaData = preparedStatement.getParameterMetaData();
//获取元数据参数的个数
int parameterCount = parameterMetaData.getParameterCount();
System.out.println(parameterCount);
// for (int i = 1; i <= parameterCount; i++) {
// preparedStatement.setObject(i,数组中的参数);
//
// }
}
}
结果集元数据
public class Demo3 {
public static void main(String[] args) throws SQLException {
Connection connection = JdbcUtil.getConnection();
String sql = "select * from work";
PreparedStatement preparedStatement = connection.prepareStatement(sql);
ResultSet resultSet = preparedStatement.executeQuery();
//获取结果集元数据
ResultSetMetaData metaData = resultSet.getMetaData();
//获取出来字段的个数
int columnCount = metaData.getColumnCount();
System.out.println(columnCount);
//
// for (int i = 1; i <= columnCount; i++) {
// //getColumnName() 获取字段的名字
// System.out.println(metaData.getColumnName(i));
// }
while (resultSet.next()) {
for (int i = 1; i <= columnCount; i++) {
System.out.println(resultSet.getObject(metaData.getColumnName(i)));
}
}
}
}
总结:
参数的元数据:
getParameterMetaData() 获取参数元数据的对象
getParameterCount() 获取参数的个数
结果集元数据:
getMetaData() 获取结果集元数据的对象
getColumnCount() 获取字段的个数
getColumnName(i) 获取字段的名字
希望大家关注我一波,防止以后迷路,有需要的可以加我Q讨论互相学习java ,学习路线探讨,经验分享与java Q:2415773436