作业:
工具类:
public class DBUtils {
private static final Properties PROPERTIES = new Properties();
private static final ThreadLocal<Connection> THREAD_LOCAL = new ThreadLocal<Connection>();
static {
InputStream is = DBUtils.class.getResourceAsStream("/db.properties");
try {
PROPERTIES.load(is);
Class.forName(PROPERTIES.getProperty("driver"));
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public static Connection getConnection() {
Connection connection = THREAD_LOCAL.get();
try {
if (connection == null) {
connection = DriverManager.getConnection(PROPERTIES.getProperty("url"), PROPERTIES.getProperty("username"), PROPERTIES.getProperty("password"));
THREAD_LOCAL.set(connection);
}
} catch (SQLException e) {
e.printStackTrace();
}
return connection;
}
public static void begin() {
Connection connection = getConnection();
try {
connection.setAutoCommit(false);
} catch (SQLException e) {
e.printStackTrace();
}
}
public static void commit() {
Connection connection = getConnection();
try {
connection.commit();
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBUtils.closeAll(connection, null, null);
}
}
public static void rollback() {
Connection connection = getConnection();
try {
connection.rollback();
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBUtils.closeAll(connection, null, null);
}
}
public static void closeAll(Connection connection, Statement statement, ResultSet resultSet) {
try {
if (resultSet != null) {
resultSet.close();
}
if (statement != null) {
statement.close();
}
if (connection != null) {
connection.close();
THREAD_LOCAL.remove();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public class DateUtils {
private static final SimpleDateFormat SIMPLE_DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd");
public static java.util.Date strToUtilDate(String date){
try {
return SIMPLE_DATE_FORMAT.parse(date);
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}
public static java.sql.Date utilToSqlDate(java.util.Date date){
return new java.sql.Date(date.getTime());
}
}
public class DaoUtils<T> {
public int commonUpdate(String sql,Object... args){
Connection connection = null;
PreparedStatement preparedStatement = null;
try {
connection = DBUtils.getConnection();
preparedStatement = connection.prepareStatement(sql);
for(int i = 0;i < args.length;i++){
preparedStatement.setObject(i+1,args[i]);
}
return preparedStatement.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}finally {
DBUtils.closeAll(null,preparedStatement,null);
}
return 0;
}
public List<T> commonSelect(String sql, RowMapper<T> rowMapper, Object...args){
List<T> list = new ArrayList();
Connection connection = null;
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
try {
connection = DBUtils.getConnection();
preparedStatement = connection.prepareStatement(sql);
if(args != null){
for(int i = 0;i < args.length;i++){
preparedStatement.setObject(i+1,args[i]);
}
}
resultSet = preparedStatement.executeQuery();
while(resultSet.next()){
T t = rowMapper.getRow(resultSet);
list.add(t);
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
DBUtils.closeAll(null,preparedStatement,resultSet);
}
return list;
}
}
entity类:
package com.qf.student.entity;
import com.qf.student.utils.DateUtils;
import java.util.Date;
public class Student {
private int id;
private String name;
private String password;
private String sex;
private Date borndate;
private String phone;
public Student(){}
public Student( String name, String password, String sex, String borndate, String phone) {
this.name = name;
this.password = password;
this.sex = sex;
this.borndate = DateUtils.strToUtilDate(borndate);
this.phone = phone;
}
@Override
public String toString() {
return "Student{" +
"id=" + id +
", name='" + name + '\'' +
", password='" + password + '\'' +
", sex='" + sex + '\'' +
", borndate=" + borndate +
", phone='" + phone + '\'' +
'}';
}
public int getId() {
return 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;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Date getBorndate() {
return borndate;
}
public void setBorndate(Date borndate) {
this.borndate = borndate;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
}
RowMapper接口:
public interface RowMapper<T> {
public T getRow(ResultSet resultSet);
}
RowMapperImpl:
public class RowMapperImpl implements RowMapper<Student>{
@Override
public Student getRow(ResultSet resultSet) {
Student studnet = null;
try {
studnet = new Student(resultSet.getString(2),resultSet.getString(3),resultSet.getString(4),resultSet.getString(5),resultSet.getString(6));
} catch (SQLException e) {
e.printStackTrace();
}
return studnet;
}
}
StudentService接口:
public interface StudentService {
String register(Student student);
String login(int id,String password);
String update(Student student);
String deleteStudent(int id);
Student selectStudent(int id);
List<Student> showAllStudents();
}
StudentServiceIMpl:
public class StudentServiceImpl implements StudentService {
@Override
public String register(Student student) {
StudentDaoImpl studentDao = new StudentDaoImpl();
int result = studentDao.insert(student);
if(result > 0){
return "注册成功";
}else{
return "注册失败";
}
}
@Override
public String login(int id, String password) {
StudentDaoImpl studentDao = new StudentDaoImpl();
Student student = studentDao.select(id);
if(student.getPassword().equals(password)){
return "登录成功";
}else{
return "登陆失败";
}
}
@Override
public String update(Student student) {
StudentDaoImpl studentDao = new StudentDaoImpl();
int result = studentDao.update(student);
if(result > 0){
return "修改成功";
}else{
return "修改失败";
}
}
@Override
public String deleteStudent(int id) {
StudentDaoImpl studentDao = new StudentDaoImpl();
try {
//DBUtils.begin();
int result = studentDao.delect(id);
if(result > 0){
// DBUtils.commit();
return "删除成功";
}else {
DBUtils.rollback();
return "删除失败";
}
} catch (Exception e) {
// DBUtils.rollback();
e.printStackTrace();
}
return "出现异常";
}
@Override
public Student selectStudent(int id){
StudentDaoImpl studentDao = new StudentDaoImpl();
Student student = studentDao.select(id);
if(student == null){
throw new RuntimeException("未查询到该学生信息");
}else{
return student;
}
}
@Override
public List<Student> showAllStudents() {
StudentDaoImpl studentDao = new StudentDaoImpl();
return studentDao.selectAll();
}
}
StudentDao接口:
public interface StudentDao {
public int insert(Student student);
public int delect(int id);
public int update(Student student);
public Student select(int id);
public List<Student> selectAll();
}
StudentDaoImpl:
public class StudentDaoImpl implements StudentDao {
private DaoUtils daoUtils = new DaoUtils();
@Override
public int insert(Student student) {
Object[] args = {student.getName(),student.getPassword(),student.getSex(),student.getBorndate(),student.getPhone()};
String sql = "insert into t_student(name,password,sex,borndate,phone) values(?,?,?,?,?)";
return daoUtils.commonUpdate(sql,args);
}
@Override
public int delect(int id) {
String sql = "delete from t_student where id = ?";
return daoUtils.commonUpdate(sql,id);
}
@Override
public int update(Student student) {
String sql= "update t_student set name=?,password=?,sex=?,borndate=?,phone=? where id=?";
Object[] args = {student.getName(),student.getPassword(),student.getSex(),student.getBorndate(),student.getPhone(),student.getId()};
return daoUtils.commonUpdate(sql,args);
}
@Override
public Student select(int id) {
String sql = "select * from t_student where id = ?";
List<Student> list = daoUtils.commonSelect(sql,new RowMapperImpl(),id);
if(list !=null ){
return list.get(0);
}
return null;
}
@Override
public List<Student> selectAll() {
String sql = "select * from t_student";
List<Student> list = daoUtils.commonSelect(sql,new RowMapperImpl(),null);
return list;
}
}
测试类:
public class TestStudent {
public static void main(String[] args) {
StudentServiceImpl studentService = new StudentServiceImpl();
List<Student> list = studentService.showAllStudents();
list.forEach(System.out::println);
// Student student = new Student("侯玉","1234","男","2020-01-01","13211112222");
// studentService.register(student);
// System.out.println(studentService.deleteStudent(1001));
//// System.out.println(studentService.update(student));
// System.out.println("studentService.login(1001,1234)");
}
}
HTML:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>作业</title>
</head>
<body>
<div>
<table align="center" width="100%">
<tr>
<td align="left">
千锋教育-稀有的坚持全程面授品质的大型IT教育机构
</td>
<td align="right">
<a>haha </a>
<a>hehe </a>
<a>wahaha </a>
<a>heheda </a>
</td>
</tr>
<tr>
<td>
<img src="img/new_logo.png"/>
</td>
<td>
<img src="img/nav_r_ico.png"/ align="right">
</td>
</tr>
<tr>
<td align="center" colspan="2">
<hr />
<span>首页 </span>
<span>课程培训 </span>
<span>教学保障 </span>
<span>免费视频 </span>
<span>公开课 </span>
<span>企业合作 </span>
<span>就业喜报 </span>
<span>学员天地 </span>
<span>关于千锋 </span>
<span>加入我们</span>
<hr/>
</td>
</tr>
<tr>
<td align="right" colspan="2">
首页>课程培训>JavaEE列表
</td>
</tr>
</table>
</div>
<div>
<table align="center" width="100%">
<tr>
<td>
<h3>课程培训</h3>
<h4>共108种课程内容</h4>
</td>
</tr>
<tr>
<td>
<hr />
<img src="img/001.png" width="100%"/>
</td>
</tr>
</table>
<table align="center">
<tr align="center">
<td>
<img src="img/002.png"/><br/>
<div align="center">书名:XXX<div/>
<div align="center">售价:180<div/>
</td>
<td>
<img src="img/003.png"/><br/>
<div align="center">书名:XXX<div/>
<div align="center">售价:180<div/>
</td>
<td>
<img src="img/004.png"/><br/>
<div align="center">书名:XXX<div/>
<div align="center">售价:180<div/>
</td>
<td>
<img src="img/005.png"/><br/>
<div align="center">书名:XXX<div/>
<div align="center">售价:180<div/>
</td>
<td>
<img src="img/006.png"/><br/>
<div align="center">书名:XXX<div/>
<div align="center">售价:180<div/>
</td>
</tr>
<tr align="center">
<td>
<img src="img/007.png"/><br/>
<div align="center">书名:XXX<div/>
<div align="center">售价:180<div/>
</td>
<td>
<img src="img/008.png"/><br/>
<div align="center">书名:XXX<div/>
<div align="center">售价:180<div/>
</td>
<td>
<img src="img/009.png"/><br/>
<div align="center">书名:XXX<div/>
<div align="center">售价:180<div/>
</td>
<td>
<img src="img/010.png"/><br/>
<div align="center">书名:XXX<div/>
<div align="center">售价:180<div/>
</td>
<td>
<img src="img/011.png"/><br/>
<div align="center">书名:XXX<div/>
<div align="center">售价:180<div/>
</td>
</tr>
</table>
</div>
<div>
<table>
<tr>
<td>
<img src="img/012.png" width="100%">
</td>
</tr>
</table>
</div>
</body>
</html>