标签:介绍 test 数据类型 dml row 包装 creat cti out
java.sql包装的就是JDBC的API。各大数据库厂商就会对JDBC的API提供实现类驱动包。注意不要引错包,不用引用这个不要引入com.mysql..Xxx类
连接主要分为两步,第一步为加载驱动,第二步为建立连接获取连接对象。由于我用的数据库是MySQL所以在这只介绍MySQL连接。MySQL经历升级后现在分为两种驱动连接。具体的可以看这篇博文https://www.cnblogs.com/NyanKoSenSei/p/11510438.html。由于我使用的是MySQL8所以这边只列出5以上版本的连接方法
public static void main(String[] args) throws Exception {
//1.加载驱动
//把com.mysql.jdbc.Driver这份字节码加载进JVM
//当一份字节码被加载到JVM时,就会执行该字节码中的静态代码块
Class.forName("com.mysql.cj.jdbc.Driver");
//2.获取连接对象
//url数据库地址
String url = "jdbc:mysql://localhost:3306/promission?serverTimezone=UTC&characterEncoding=utf-8";
//用户名
String user = "root";
//密码
String password = "123456";
//获取连接对象
Connection conn = DriverManager.getConnection(url, user, password);
System.out.println(conn);
}
java在1.6以后可以不需要写第一步加载驱动,java会自动将图中文件将此字节码加载进jvm。但是如果是做javaweb开发则必须加上第一步,javaweb不会自动加载此字节码。
连接好数据库后我们改怎么建表,插入呢?
//编写sql语句
String s = "create table stu(id int, age int, name varchar(20))";
Statement st = conn.createStatement();
//执行sql
int row = st.executeUpdate(s);
//关闭资源
st.close();
conn.close();
为什么需要释放资源?
Connection连接就相当于Java和到Mysql之间建立管道。连接只连接到数据,Statement 就相当于从数据库又接了一个管道连接Mysql的执行程序。就如下图一般,所以在我们使用完后需要一级一级释放资源。
我们已经大致了解了如何利用jdbc操纵数据库,上面代码都直接将异常抛出了,但实际中我们不能这么做所以下面提供较为完整的代码
public static void main(String[] args) {
Connection conn = null;
Statement st = null;
try {
// 1.加载驱动
// 把com.mysql.jdbc.Driver这份字节码加载进JVM
// 当一份字节码被加载到JVM时,就会执行该字节码中的静态代码块
Class.forName("com.mysql.cj.jdbc.Driver");
// 2.获取连接对象
// url数据库地址
String url = "jdbc:mysql://localhost:3306/jdbc_db?serverTimezone=UTC&characterEncoding=utf-8";
// 用户名
String user = "root";
// 密码
String password = "123456";
// 获取连接对象
conn = DriverManager.getConnection(url, user, password);
// 3.编写sql语句
String s = "insert into stu(id, age, name)values(001, 20, 'xiaoming')";
st = conn.createStatement();
// 4.执行sql
int row = st.executeUpdate(s);
System.out.println(row);
} catch (Exception e) {
} finally {
// 5.关闭资源
if (st != null) {
try {
st.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
查询操作与上面类似,只是查询操作使用的是executeQuery(Sql)方法返回的是一个结果集(ResultSet)并不是像上面一般返回一个值。结果集中表示的是数据库查询的结果的集合,在执行查询语句时就会得到一个这样的结果。
查询常用方法有:
下图是java-MySQL常用数据类型对照表
下面列出一次查询多条数据的代码,异常全部抛出方便阅读:
public static void main(String[] args) throws Exception {
Class.forName("com.mysql.cj.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/jdbc_db?serverTimezone=UTC&characterEncoding=utf-8";
String user = "root";
String pwd = "123456";
Connection conn = DriverManager.getConnection(url, user, pwd);
String sql = "SELECT * FROM stu;";
Statement st = conn.createStatement();
ResultSet set = st.executeQuery(sql);
while(set.next()) {
int id = set.getInt("id");
int age = set.getInt("age");
String name = set.getString("name");
System.out.println("id = "+id+" age = "+age+" name = "+name);
}
st.close();
conn.close();
}
我们在前面可以发现,每次我们访问数据库都需要重复的写加载驱动、连接语句等等。这样会产生许多的重复代码,并且十分的不方便。所以DAO便应运而生了。什么是DAO?DAO全称Data Access Object(数据存取对象),位于业务逻辑(test)和持久化数据(DB)之间实现对持久化数据的访问。以后我们程序便是通过DAO进行访问数据库,通过DAO提供的操作进行对数据库的访问、修改。
在进行DAO设计前我们先需要了解ORM。什么是ORM?ORM是对象关系映射,将关系数据库中表中的记录映射成为对象,以对象的形式展现,因此ORM的目的是为了方便开发人员以面向对象的思想来实现对数据库的操作。对应关系如下图所示
具体的一个代码例子如下:
了解完ORM接下来我们还需要了解domain。那么什么是domain?domain就是一类类,这个类符合JavaBean规范(一个类当中有字段和该字段的getter与Setter方法)。domain的作用是用户与数据库交互的核心中转站。正如我们上面提到的ORM一般,domain其实就是orm加上getter与setter方法。
一个domain类如下图所示:
如何使用domain保存数据?见下图
在此图中我们很容易可以看出,通过对Stu类(domain)的一个对象s进行赋值,然后将s传入DAO层,在DAO层中解析s对象,取出对象中的数据,将数据拼接成sql语句然后对DB进行操作。
如何使用domain获取数据?见下图
在此图中我们表示了domain如何从DB中获取数据,在test1我们想要获取id = 1的记录,所以我们利用DAO层中的getStu(id)方法查询DB,将DB返回给我们的结果封装到一个Stu对象中,最后返回这个对象给test1。
标签:介绍 test 数据类型 dml row 包装 creat cti out
原文地址:https://www.cnblogs.com/ThinMoon/p/12302911.html