分享第二十二篇励志语录
有些烦恼是我们凭空虚构的,而我们却把它当成真实去承受。想得太多只会毁了你,让你陷入忐忑,让实际上本不糟糕的事情,变得糟糕。阳光这么好,何必自寻烦恼。
目录
分享第二十二篇励志语录
一:封装工具类
1 为什么要封装工具类
2 重用性方案
2.1 方案思想
2.2 方案代码
3 跨平台方案
3.1 方案思想
3.2 方案代码
二、ORM
1 实体类(entity):零散数据的载体
2 ORM应用
2.1 创建表student
2 实现步骤
2.2 创建entity实体类
2.3 查询结果封装
一:封装工具类
1 为什么要封装工具类
-
在实际JDBC中的使用中,存在着大量的重复代码:例如连接数据库、关闭数据库这些操作。
-
我们需要把传统的JDBC代码进行重构,抽取出通用的JDBC工具类。以后连接任何数据库、释放资源都可以使用这个工具类。
2 重用性方案
2.1 方案思想
(1)新建一个工具类DBUtils。
(2)在工具类DBUtils类中封装获取连接、释放资源两个方法。
-
提供public static Connection getConnection(){}方法。
-
提供public static void closeAll(Connection connection,Statement statement,ResultSet resultSet){}方法
2.2 方案代码
package cn.bdqn.demo03;
import java.sql.*;
/**
* 重用性方案
* 获取连接
* 释放资源
*/
public class DBUtils {
static {// 类加载,执行一次!
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
// 1.获取连接
public static Connection getConnection() {
Connection connection = null;
try {
connection = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/java2217", "root", "123456");
} catch (SQLException e) {
e.printStackTrace();
}
return connection;
}
// 2.释放资源
public static void closeAll(Connection connection, Statement statement,
ResultSet resultSet) {
try {
if (resultSet != null) {
resultSet.close();
}
if (statement != null) {
statement.close();
}
if (connection != null) {
connection.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
3 跨平台方案
3.1 方案思想
(1)在项目src文件夹下创建db.properties文件,在文件中编写数据库驱动、数据库url、用户名、密码相关数据。
driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/java2217 username=root password=123456
(2)在工具类DBUtils类中读取db.properties配置文件数据。
定义private static final Properties PROPERTIES = new Properties();//读取配置文件的Map 定义static{ //通过复用本类自带流,读取配置文件中的数据 InputStream is = DBUtils.class.getResourceAsStream("配置文件路径"); // 通过prop对象将流中的配置信息分隔成键值对 PROPERTIES.load(is); //通过driverName的键获取对应的值(com.mysql.jdbc.Driver) String driverName=PROPERTIES.getProperty("driver"); //注册驱动 Class.forName(driverName); }
(3)在工具类DBUtils类中封装获取连接、释放资源两个方法。
-
提供public static Connection getConnection(){}方法。
-
提供public static void closeAll(Connection connection,Statement statement,ResultSet resultSet){}方法
3.2 方案代码
package cn.bdqn.demo04;
import java.io.IOException;
import java.io.InputStream;
import java.sql.*;
import java.util.Properties;
public class DBUtils {
// //读取配置文件的Map
private static final Properties PROPERTIES = new Properties();
static {
// 通过复用本类自带流,读取配置文件中的数据
InputStream is = DBUtils.class.getResourceAsStream("/db.properties");
try {
// 通过prop对象将流中的配置信息分隔成键值对,将配置文件内容加载到properties集合
PROPERTIES.load(is);
// 注册驱动,通过driverName的键获取对应的值(com.mysql.jdbc.Driver)
Class.forName(PROPERTIES.getProperty("driver"));
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
// 获取连接对象
public static Connection getConnection() {
Connection connection = null;
try {
connection = DriverManager.getConnection(
PROPERTIES.getProperty("url"),
PROPERTIES.getProperty("username"),
PROPERTIES.getProperty("password"));
} catch (SQLException e) {
e.printStackTrace();
}
return connection;
}
// 释放所有资源
public static void closeAll(Connection connection, Statement statement,
ResultSet resultSet) {
try {
if (resultSet != null) {
resultSet.close();
}
if (statement != null) {
statement.close();
}
if (connection != null) {
connection.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
二、ORM
(1)ORM(Object Relational Mapping),对象关系映射。
(2)从数据库查询到的结果集(ResultSet)在进行遍历时,逐行遍历,然后一个字段一个字段的读取数据,取出的都是零散的数据。在实际应用开发中,我们需要将零散的数据进行封装整理。
(3)在Java中,将查询出来的数据封装成一个对象。
1 实体类(entity):零散数据的载体
-
一行数据中心,多个零散的数据进行整理,一行数据(在数据库中称之为一条记录或者一个实体)对应Java中的一个对象。
-
通过entity的规则对表中的数据进行对象的封装。
-
表名=类名;列名=属性名;提供各个属性的getXxx()/setXxx()方法。
-
提供无参构造方法、有参构造方法
-
重写toString()方法
2 ORM应用
2.1 创建表student
1、创建一张学生表student,表的字段如下:
sid,学生编号,主键、自动增长。
name,学生姓名,字符串类型、唯一、非空。
age,年龄,int类型、非空。
phone,手机号码,字符串类型,非空
CREATE TABLE IF NOT EXISTS `student`( `sid` INT PRIMARY KEY AUTO_INCREMENT, `name` VARCHAR(10) UNIQUE NOT NULL, `age` INT NOT NULL, `phone` VARCHAR(11) NOT NULL );
2、向student表中插入两条数据:
INSERT INTO `student` VALUES(1001,'zhangsan',19,'13112341234'); INSERT INTO `student` VALUES(1002,'lisi',19,'13866665555');
2 实现步骤
2.2 创建entity实体类
package com.cxyzxc.examples01;
/**
* entity实体类
*
* @author 程序员张小厨
*
*/
public class Student {
/** 学号 */
private int sid;
/** 姓名 */
private String name;
/** 年龄 */
private int age;
/** 手机号码 */
private String phone;
// 无参构造方法
public Student() {
super();
}
// 有参构造方法
public Student(int sid, String name, int age, String phone) {
super();
this.sid = sid;
this.name = name;
this.age = age;
this.phone = phone;
}
// getXxx()/setXxx()方法
public int getSid() {
return sid;
}
public void setSid(int sid) {
this.sid = sid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
// 重写Object类中的toString()方法
@Override
public String toString() {
return "id=" + sid + ", name=" + name + ", age=" + age + ", phone="
+ phone;
}
}
2.3 查询结果封装
package com.cxyzxc.examples01;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class StudentJDBCQuery {
public static void main(String[] args) {
Connection connection = null;
Statement statement = null;
ResultSet resultSet = null;
try {
// 2、获取连接对象(1、注册驱动在DBUtils类中完成了)
connection = DBUtils.getConnection();
// 3、获取发送SQL语句的对象
statement = connection.createStatement();
// 编写SQL语句
String sql = "select * from student";
// 4、执行SQL语句,得到结构集
resultSet = statement.executeQuery(sql);
// 5、遍历结果集,使用while循环进行遍历
while (resultSet.next()) {
// 如果有数据,根据列的编号获取每行每个字段的数据
int sid = resultSet.getInt(1);
String name = resultSet.getString(2);
int age = resultSet.getInt(3);
String phone = resultSet.getString(4);
// 创建实体类对象
Student student = new Student();
// 将字段数据赋值给对应的实体类对象属性
student.setSid(sid);
student.setName(name);
student.setAge(age);
student.setPhone(phone);
System.out.println(student);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBUtils.closeAll(connection, statement, resultSet);
}
}
}
今天的分享就到此结束了
创作不易点赞评论互关三连