一、简要说明
不管是Mybatis还是Hibernate都是对JDBC的二次封装,在使用JDBC之前,我们先回顾一下JDBC的使用。
二、准备工作
1.maven依赖
<dependencies>
<!-- mysql驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.18</version>
</dependency>
<!-- junit测试 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
2.实体类
public class Person {
private Integer id;
private String name;
private String sex;
private String telephone;
private String address;
private Integer age;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getTelephone() {
return telephone;
}
public void setTelephone(String telephone) {
this.telephone = telephone;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "Person{" +
"id=" + id +
", name='" + name + '\'' +
", sex='" + sex + '\'' +
", telephone='" + telephone + '\'' +
", address='" + address + '\'' +
", age=" + age +
'}';
}
}
3.sql资源
DROP TABLE IF EXISTS `person`;
CREATE TABLE `person` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(30) NOT NULL COMMENT '名字',
`sex` char(1) NOT NULL DEFAULT '男' COMMENT '性别',
`telephone` varchar(11) DEFAULT NULL COMMENT '手机号',
`address` varchar(50) DEFAULT NULL COMMENT '地址',
`age` tinyint(4) DEFAULT NULL COMMENT '年龄',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1295453 DEFAULT CHARSET=utf8;
INSERT INTO `person` VALUES ('1', 'xy', '男', '123456', '测试', '18');
INSERT INTO `person` VALUES ('2', 'ceshi', '女', '123456789', '美国', '20');
INSERT INTO `person` VALUES ('3', 'ceshi', '女', '123456789', '美国', '21');
三、JDBC使用说明
JDBC具体使用步骤共分为六步:
1.注册驱动
2.通过驱动管理器(DriverManager)获取连接(Connection)
3.通过连接(Connection)获取数据库操纵对象(Statement)
4.通过数据库操纵对象(Statement)执行SQL
5.获取执行后的结果集(ResultSet),并进行结果处理
6.释放以上对象的资源(先使用的后释放)
具体步骤代码及测试代码如下:
public class MybatisTest {
@Test
public void test() throws ClassNotFoundException {
String username = "root";
String password = "123456";
Connection connection = null;
Statement statement = null;
ResultSet resultSet = null;
String url = "jdbc:mysql://localhost:3306/mybatis_study?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8";
//1.注册驱动
Class.forName("com.mysql.cj.jdbc.Driver");
try {
//2.获取数据库连接
connection = DriverManager.getConnection(url, username, password);
//3.获取一个Statement对象
statement = connection.createStatement();
String sql = "select * from person limit 1";
//4.执行sql
resultSet = statement.executeQuery(sql);
//5返回结果处理
Person person = new Person();
while (resultSet.next()) {
person.setId(resultSet.getInt("id"));
person.setAge(resultSet.getInt("age"));
person.setName(resultSet.getString("name"));
person.setAddress(resultSet.getString("address"));
person.setSex(resultSet.getString("sex"));
person.setTelephone(resultSet.getString("telephone"));
}
System.out.println(person);
}catch (SQLException e) {
e.printStackTrace();
}finally {
//6.释放连接
if(resultSet != null) {
try {
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
}finally {
try {
if(statement != null) {
statement.close();
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
if(connection != null) {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
}
}
}