首先是数据库建表,数据类型建议用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三层建立完成之后我们就可以写他的界面调用了