MVC模式设计
今天实现的是使用JDBC+MVC模式实现MySQL的增删查改,初学者作业
MVC全名是Model View Controller,是模型(model) - 视图(view)- 控制器(controller)的缩写。
项目结构是:
测试用数据库:
1、User类
实体类模型User,映射数据库字段
package bean;
//实体类模型User,实体类模型映射数据库字段
public class User {
//1对属性/参数的封装
private int id; //id
private String username;
private String password;
//2get set
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
2、DBUtil类
DBUtil工具类
package util;
import java.sql.*;
//封装 工具类
public class DBUtil {
private static String driver="com.mysql.jdbc.Driver" ;
private static String url="jdbc:mysql://localhost:3306/student?useSSL=true&characterEncoding=utf-8";
private static String user="root";
private static String password="123456";
static {
try {//1获取驱动
Class.forName(driver);
} catch(Exception e){
e.printStackTrace();
}
}
//2创建连接,被调用所以PUBLIC
public static Connection get_Conn() throws SQLException {
Connection conn = DriverManager.getConnection(url, user, password);
// System.out.println("数据库连接成功!");
return conn;
}
//3关闭资源
public static void get_CloseConn(ResultSet rs, PreparedStatement pstm,Connection conn)throws SQLException{
if(rs!=null)
rs.close();
if (pstm!=null)
pstm.close();
if (conn!=null)
conn.close();
}
//单元测试 白盒测试 代码内
/*public static void main (String[] args){
try {
get_Conn();
}catch (Exception e){
e.printStackTrace();
}
}*/
}
3、UserDao类
UserDao类直接与数据库做交互,在这个类中实现对数据库的增删查改操作。下边的代码只实现了增加和修改操作,删除和查询操作实现过程和上边两个差不多。
package dao;
import bean.User;
import util.DBUtil;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
//直接与数据库做交互,增删查改
public class UserDao {
//全局变量
Connection conn=null;
PreparedStatement pstm=null;
ResultSet rs=null;
public UserDao() {
try {
conn = DBUtil.get_Conn();
}
catch (Exception e)
{
e.printStackTrace();
}
}
//查询全部 一堆对象
public List<User> findAllUser(){
List<User> userList=new ArrayList<>();
try {
//1获取连接
conn = DBUtil.get_Conn();
//2获取存取sql语句对象
pstm=conn.prepareStatement("select * from tb_user");
//3执行并返回结果
rs=pstm.executeQuery();
//创建集合
//多态
//4遍历结果,处理结果
while (rs.next()) {
User user = new User();
user.setId(rs.getInt(1));
user.setUsername(rs.getString(2));
user.setPassword(rs.getString(3));
userList.add(user);
}//
//return userList;
System.out.println(userList);
}catch(Exception e)
{
e.printStackTrace();
}finally {
try {
DBUtil.get_CloseConn(rs,pstm,conn);
} catch (SQLException e) {
e.printStackTrace();
}
}return userList;
//return null;
}
void Change(){
Statement statement;
Scanner scanner=new Scanner(System.in);
System.out.println("账号:");
String user=scanner.next();
System.out.println("新密码");
String password=scanner.next();
try {
conn=DBUtil.get_Conn();
statement=conn.createStatement();
statement.executeUpdate("update tb_user set password='"+password+"'where id='"+user+"'");
statement.close();
}catch (Exception e)
{
e.printStackTrace();
}
System.out.println("修改成功!");
}
void Add(){
Statement statement;
Scanner scanner=new Scanner(System.in);
System.out.println("新账号:");
String id=scanner.next();
System.out.println("用户名");
String username=scanner.next();
System.out.println("密码");
String password=scanner.next();
try {
conn=DBUtil.get_Conn();
statement=conn.createStatement();
statement.executeUpdate("insert into tb_user values ('"+id+"','"+username+"','"+password+"')");
statement.close();
}catch (Exception e)
{
e.printStackTrace();
}
System.out.println("添加成功!");
}
public static void main(String[] args){
UserDao userDao=new UserDao();
userDao.findAllUser();
//userDao.Change();
userDao.Add();
}
}
4、运行结果