JAVA JDBC实际开发模式(MVC三层架构模式)数据库的连接(一)之查询数据
MVC三次架构模式
View | 视图层 |
---|---|
Control | 控制层 |
Model | 模型层 |
DB | 数据库 |
模型有两部分:
1、对数据库的 映射
2、对数据库的 映射的 抽象方法
增删改查(简称CRUD)
我们一般是从下网上执行:先处理好数据库,然后建立模型层,之后是处理控制层,最后解决视图层。
在上一篇的博客中,我已经将数据库这一层搭建好,所以我们现在直接进入第二部分,建立模型层
在src文件夹里面创建一个包(这个包用来存储一个类,这个类对应了我们的数据库 对象,就是我们创建的那张表)
我的表名为students所以我命名我的类名为students
这个类简称为一个视觉类,有好多个字段对应于表里面的字段
之后给这些字段生成getter setter方法
右击空白处,点击source,后面便可以看到getter setter方法自动生成
代码自动生成
再创建一个类进行一系列的增删该查(CRUD)
编辑其视觉类所对应的方法
如下
package com.DemoJdbc.dao;
import java.util.List;
import com.DemoJdbc.model.students;
public class StudentsDAO {
//增
public void addStudents() {
}
//改(更新)
public void updateStudents() {
}
//删
public void delStudents() {
}
//查 注意要有返回值,因为方法类型不是void
public List<students> query(){
return null;
}
//细化 查询单个学生 注意方法名不能够一样
public students get() {
return null;
}
}
修改DBUtil类,增加一个静态块
package com.DemoJdbc.db;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.mysql.jdbc.Statement;
public class DBUtil {
private static final String URL="jdbc:mysql://127.0.0.1:3306/cxpdb";
// 数据库的名称
private static final String NAME="root";
//private static final String PASSWORD=;
//增加连接
private static Connection conn = null;
//增加一个静态块
static {
try {
//1、加载驱动程序
Class.forName("com.mysql.jdbc.Driver");
//2、获得数据库的连接
conn = DriverManager.getConnection(URL, NAME, null);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//对外提供一个方法来获取这个链接
public static Connection getConnection() {
return conn;
}
public static void main(String[] args) throws Exception {
//1、加载驱动程序
Class.forName("com.mysql.jdbc.Driver");
//2、获得数据库的连接
Connection conn = DriverManager.getConnection(URL, NAME, null);
//3、通过数据库的连接操作数据库,实现增删改查
java.sql.Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select user_name,age from students");
while(rs.next()) {
System.out.println(rs.getString("user_name")+","+rs.getInt("age"));
}
}
}
此时我们便可以通过DBUtil这个类来拿到这个链接
编辑DAO层代码
package com.DemoJdbc.dao;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.DemoJdbc.db.DBUtil;
import com.DemoJdbc.model.students;
//实体类的第一个字母必须大写
public class StudentsDAO {
//增
public void addStudents() {
Connection conn = DBUtil.getConnection();
}
//改(更新)
public void updateStudents() {
}
//删
public void delStudents() {
}
//查 注意要有返回值,因为方法类型不是void
public List<students> query() throws Exception{
//验证
Connection conn = DBUtil.getConnection();//连接完成
//进行查询
java.sql.Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select user_name,age from students");
//此时需要返回一个LIST
List<students> stu = new ArrayList<students>();
students st = null;
while(rs.next()) {
st = new students();
st.setUser_name(rs.getString("user_name"));
st.setAge(rs.getInt("age"));
stu.add(st);
}
return stu;
}
//细化 查询单个学生 注意方法名不能够一样
public students get() {
return null;
}
}
完成以后再创建一个包来处理控制层
StudentsAction.java代码如下
package com.DemoJdbc.action;
import java.util.List;
import com.DemoJdbc.dao.StudentsDAO;
import com.DemoJdbc.model.students;
public class StudentsAction {
public static void main(String[] args) throws Exception {
//写一个main方法来测试刚刚我们写的查询方法、
StudentsDAO stu = new StudentsDAO();
List<students> st = stu.query();
//遍历集合
for (students students : st) {
System.out.println(students.getUser_name()+","+students.getAge());
}
}
}
控制层处理完毕
进行测试
先清空控制台
编译运行
结果一样
总结
DBUtil工具类 | 数据库的连接 |
---|---|
DAO | 用于执行业务方法即增删改查(CRUD) |