JDBC
JDBC简介
1、JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。
2、JDBC是Sun公司编的一堆类和方法,都封装在java.sql包中。你可以利用这堆类和方法来把你的程序和数据库连通。
JDBC的使用步骤
以下所有步骤根据如下所示的数据库建立:
1.java与mysql连接的驱动安装
将mysql-connector-java-5.1.36 .jar包拖进我们要写的项目组中
(不一样的版本用不一样的驱动包)
像下图所示:然后再将其导入类库
顺便扩充一下什么是jar包:
JAR文件(Java归档,英语:Java Archive)是一种软件包文件格式,通常用于聚合大量的Java类文件、相关的元数据和资源(文本、图片等)文件到一个文件,以便开发Java平台应用软件或库。
2.加载驱动
通过初始化驱动类com.mysql.jdbc.Driver,该类在mysql-connector-java的jar包中
//1.加载驱动
Class.forName("com.mysql.jdbc.Driver");
3.创建连接
创建连接需要的信息有:
a. 数据库所在的ip,本机为127.0.0.1或localhost,如果连接其他电脑上的数据库,则为那台电脑的相应ip;
b. 数据库的端口号, MySQL默认为3306,根据自己的设置来填;
c. 数据库名称,根据需要连接的数据库的名称填写,此处例子数据库名称为hui;
d. 编码方式UTF-8;
e. 账号 root;
f. 密码,如果创建数据库的时候没有使用默认的账号和密码,需填写自己设置的账号和密码。
connection = DriverManager.getConnection
("jdbc:mysql://127.0.0.1:3306/此处写自己新建的数据库?useSSL=true&" +
"characterEncoding=utf-8&user=" +
"root&password==此处写自己的密码");
System.out.println("创建连接成功");
4.写sql语句
根据不同的需要写不同的语句
String sql = "select * from userinfo";
5.得到statement对象
statement = connection.prepareStatement(sql);
6.执行sql得到结果集
rs = statement.executeQuery();
7.处理结果集
while (rs.next()) {
UserInfo userInfo = new UserInfo();
userInfo.setId(rs.getInt(1));
userInfo.setName(rs.getString(2));
userInfo.setPassword(rs.getString(3));
list.add(userInfo);
}
8.关闭资源
DBUtil.close(rs, statement, connection);
此处是对关闭资源做了一个封装 (所有的封装专门放在同一个工具包里),方便重复利用,具体函数如下:
public static void close(ResultSet rs,PreparedStatement statement,Connection connection){
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (statement != null) {
try {
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (connection != null) {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
对IDEA使用方式的一些补充
MVC模式
MVC简介
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。
Model(模型) - 模型代表一个存取数据的对象或 JAVA POJO。它也可以带有逻辑,在数据变化时更新控制器。
View(视图) - 视图代表模型包含的数据的可视化。
Controller(控制器) - 控制器作用于模型和视图上。它控制数据流向模型对象,并在数据变化时更新视图。它使视图与模型分离开。
MVC实现方法
model层
在一般的程序中就是对应的数据库表的实体类,即将现实对象抽象成类。本次使用如下:
public class UserInfo {
private int id;
private String name;
private String password;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "hui{" +
"id=" + id +
", name='" + name + '\'' +
", password='" + password + '\'' +
'}';
}
}
view层
view即为视图。不难理解,view层就是用户可以看到的东西。view层不关心后台怎么处理,只关心如何向用户展示信息。View层与Controller层接口紧密,需要系统开发
controller层
负责具体的业务模块流程的控制,在此层里要调用Service层的接口来控制业务流程。
Conroller层和Service层的区别:Controlle层负责具体的业务模块流程的控制;Service层负责业务模块的逻辑应用设计。
dao层
dao层(data access object)叫数据访问层,处于比较底层,执行一些比较基础的操作,具体到对于某个表、某个实体的增删改查等。以下是DAO层里查询所有用户的方法的具体实现
public class selectAllUser {
public static List<UserInfo> findAll(){
Connection connection = null;
PreparedStatement statement = null;
ResultSet rs = null;
List<UserInfo> list = new ArrayList();
try {
//1.加载驱动与2.建立连接
connection = DBUtil.create();
//3.写sql
String sql = "select * from userinfo";
//4.得到statement对象
statement = connection.prepareStatement(sql);
//5.执行sql得到结果集
rs = statement.executeQuery();
//6.处理结果集
while (rs.next()) {
UserInfo userInfo = new UserInfo();
userInfo.setId(rs.getInt(1));
userInfo.setName(rs.getString(2));
userInfo.setPassword(rs.getString(3));
list.add(userInfo);
}
//7.关闭资源
} catch (Exception e) {
e.printStackTrace();
} finally {
//7.关闭资源
DBUtil.close(rs, statement, connection);
}
return list;
}
}
services层
Service层主要负责业务模块的逻辑应用设计。同样是首先设计接口,再设计其实现的类,接着再Spring的配置文件中配置其实现的关联。这样我们就可以在应用中调用Service接口来进行业务处理。Service层的业务实现,具体要调用到已定义的Dao层的接口,封装Service层的业务逻辑有利于通用的业务逻辑的独立性和重复利用性,程序显得非常简洁。