学生信息管理JDBC+MVC三层架构 简单易懂

首先是数据库建表,数据类型建议用varchar类型

导入jar包 如何下载jar包可以看我另外一篇博文 记得要build path

下面建立起MVC三层架构的包结构 model是数据封装类 dao是操作数据库 service是实现方法

链接数据库 要用到JDBC 因为代码很长 重复书写浪费时间 我们可以建一个util包 来建立链接

test文件  保存数据库链接的配置 

driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/study?useSSL=false&useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&serverTimezone=Hongkong&allowPublicKeyRetrieval=true
user=root
pass=123456

 JDBCUtil 写链接方法

public class JDBCUtil {

	private static ResourceBundle rb = ResourceBundle.getBundle("com.situ.schoool.util.test");
	private static String className = rb.getString("driver");
	private static String url = rb.getString("url");
	private static String user = rb.getString("user");
	private static String password = rb.getString("pass");

	static {
		try {
			Class.forName(className);// 1、加载驱动: Class.forName("");
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
	}

	/**
	 * 获得链接对象
	 *
	 * @return Connection .
	 *
	 * @throws SQLException
	 */
	public static Connection getConnection() throws SQLException {
		return DriverManager.getConnection(url, user, password);
	}

	/**
	 * 获取状态集PreparedStatement 也可以使用这个方法
	 * @param conn
	 * @param st
	 * @param rs
	 */
	public static void close(Connection conn, Statement st, ResultSet rs) {
		try {
			if (rs != null) {
				rs.close();
				rs = null;
			}
			if (st != null) {
				st.close();
				st = null;
			}
			if (conn != null) {
				conn.close();
				conn = null;
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	/**
	关闭连接
	@param connection
	* @param statement
	*/
	public static void close (Connection connection, Statement statement) {
	close(connection, statement, null);
	}

	public static void main(String[ ] args) throws SQLException {
		Connection con = JDBCUtil.getConnection();
		System.out.println(con);
		JDBCUtil.close(con, null);
	}
	
	
	//不需要实例化 只需要使用静态方法
		private JDBCUtil() {
		
		}

}

链接成功之后就是我们的三层架构的代码书写

model

public class StudentModel {

	private String name;
	private String major;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getMajor() {
		return major;
	}
	public void setMajor(String major) {
		this.major = major;
	}
	@Override
	public String toString() {
		return "StudentModel [name=" + name + ", major=" + major + "]";
	}
	
}

 dao

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.PseudoColumnUsage;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import com.mysql.cj.exceptions.RSAException;
import com.mysql.cj.protocol.Resultset;
import com.situ.schoool.student.model.StudentModel;
import com.situ.schoool.util.JDBCUtil;

public class StudentDao {

	private Connection conn = null;
	private PreparedStatement pr = null;
	
	public String insert(StudentModel model) {
		String sql = "insert into student(name,major) values(?,?)";
		try {
			conn = JDBCUtil.getConnection();
			pr = conn.prepareStatement(sql);
			pr.setString(1, model.getName());
			pr.setString(2, model.getMajor());
			int rs = pr.executeUpdate();
			return rs+"";
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally {
			JDBCUtil.close(conn, pr);
		}
		return null;
	}
	public String delete(StudentModel model) {
		String sql = "delete from student where name = ?";
		try {
			conn = JDBCUtil.getConnection();
			pr = conn.prepareStatement(sql);
			pr.setString(1, model.getName());
			int rs = pr.executeUpdate();
			return rs+"";
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally {
			JDBCUtil.close(conn, pr);
		}
		return null;
	}
	public String update(StudentModel model) {
		String sql = "update student set major = ? where name = ?";
		try {
			conn = JDBCUtil.getConnection();
			pr = conn.prepareStatement(sql);
			pr.setString(2, model.getName());
			pr.setString(1, model.getMajor());
			int rs = pr.executeUpdate();
			return rs+"";
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally {
			JDBCUtil.close(conn, pr);
		}
		return null;
	}
	public ArrayList<StudentModel> select(StudentModel model){
		StringBuilder sql = new StringBuilder("select name,major from student where 1=1");
		List<Object> list = appendWhere(model, sql);
		System.out.println(sql);
		System.out.println(list);
		ArrayList<StudentModel> result = new ArrayList<StudentModel>();
		ResultSet rs = null;
		try {
			conn = JDBCUtil.getConnection();
			pr = conn.prepareStatement(sql.toString());
			System.out.println(list.size());
			for(int i = 0;i < list.size();i++) {
				pr.setObject(i + 1, list.get(i));
			}
			rs = pr.executeQuery();
			while(rs.next()) {
				String name = rs.getString("name");
				String major = rs.getString("major");
				StudentModel model2 = new StudentModel();
				model2.setName(name);
				model2.setMajor(major);
				result.add(model2);
			}
			return result;
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally {
			JDBCUtil.close(conn, pr,rs);
		}
		return result;
	}
	private List<Object> appendWhere(StudentModel model,StringBuilder sql){
		List<Object> list = new ArrayList<Object>();
		String name = model.getName();
		String major = model.getMajor();
		if(name != null && !name.trim().isEmpty()) {
			sql.append(" and name like ?");
			list.add(name);
		}
		if(major != null && !major.trim().isEmpty()) {
			sql.append(" and major like ?");// 切记加空格
			list.add(major);
		}
		return list; 
	}
}

service

import java.util.ArrayList;


import com.situ.schoool.student.dao.StudentDao;
import com.situ.schoool.student.model.StudentModel;

public class StudentService {

	private StudentDao dao = new StudentDao();
	
	public String insert(StudentModel model) {
		if(selectName(model) == null) {
			return insert(model);
		}
		return null;
	}
	public String delete(StudentModel model) {
		return dao.delete(model);
	}
	public String update(StudentModel model) {
		return dao.update(model);
	}
	//g根据姓名查学生 学生姓名不可重复
	public StudentModel selectName(StudentModel model) {
		String name = model.getName();
		StudentModel model2 = new StudentModel();
		model2.setName(name);
		ArrayList<StudentModel> list = dao.select(model2);
		return list.get(0);
	}
	//根据专业查学生
	public ArrayList<StudentModel> selectList(StudentModel model) {
		String major = model.getMajor();
		//name = name == null || name.trim().isEmpty() ? "":name;
//		if(major == null || major.trim().isEmpty()) {
//			major = "";
//		}else {
//			major = major;
//		}
		major = major == null||major.trim().isEmpty() ? "":major;
		model.setMajor("%" + major + "%");
		return dao.select(model);
	}
	

}

MVC三层建立完成之后我们就可以写他的界面调用了

猜你喜欢

转载自blog.csdn.net/NuanShuTT/article/details/107907837
今日推荐