维护院系的基础数据。包括CRUD(增删改查)的操作。首先定义对应的Bean
.
@Data
public class Depart {
private Integer id;
private String name;
private String notes;
private Date createTime;
}
然后创建对应的Dao
接口,在接口中什么CRUD
的基础方法。
public interface IDepartDao {
/**
* 分页查询的方法
* @param pageUtils 分页数据
* @return
*/
public List<Depart> listPage(PageUtils pageUtils);
int count(PageUtils pageUtils);
public int save(Depart entity);
public Depart findById(int id);
public int updateById(Depart entity);
int deleteById(int id);
}
然后创建对应的Dao
的实现类,并实现接口中定义的相关方法
public class DepartDaoImpl implements IDepartDao {
@Override
public List<Depart> listPage(PageUtils pageUtils) {
QueryRunner queryRunner = MyDbUtils.getQueryRunner();
String sql = "select * from t_depart limit ?,?";
if(StringUtils.isNotEmpty(pageUtils.getKey())){
sql = "select * from t_depart where name like '%"+pageUtils.getKey()+"%' or notes like '%"+pageUtils.getKey()+"%' limit ?,? ";
}
// 计算 分页开始的位置
int startNo = pageUtils.getStart();
try {
List<Depart> list = queryRunner.query(sql, new ResultSetHandler<List<Depart>>() {
@Override
public List<Depart> handle(ResultSet resultSet) throws SQLException {
// 存储返回结果的容器
List<Depart> list = new ArrayList<>();
while(resultSet.next()){
// 每次循环一次 user 存储一条数据
Depart entity = new Depart();
entity.setId(resultSet.getInt("id"));
entity.setName(resultSet.getString("name"));
entity.setNotes(resultSet.getString("notes"));
entity.setCreateTime(resultSet.getDate("create_time"));
list.add(entity); // 把查询的记录封装到了集合容器中
}
return list; // 返回查询的结果
}
},startNo,pageUtils.getPageSize());
return list;
} catch (SQLException throwables) {
throwables.printStackTrace();
}
return null;
}
@Override
public int count(PageUtils pageUtils) {
QueryRunner queryRunner = MyDbUtils.getQueryRunner();
String sql = "select count(1) from t_depart ";
if(StringUtils.isNotEmpty(pageUtils.getKey())){
sql = "select count(1) from t_depart where name like '%"+pageUtils.getKey()+"%' or notes like '%"+pageUtils.getKey()+"%' ";
}
try {
return queryRunner.query(sql, new ResultSetHandler<Integer>() {
@Override
public Integer handle(ResultSet resultSet) throws SQLException {
resultSet.next();
return resultSet.getInt(1);
}
});
} catch (SQLException throwables) {
throwables.printStackTrace();
}
return 0;
}
@Override
public int save(Depart entity) {
QueryRunner queryRunner = MyDbUtils.getQueryRunner();
String sql = "insert into t_depart(name,notes)values(?,?) ";
try {
return queryRunner.update(sql,entity.getName(),entity.getNotes());
} catch (SQLException throwables) {
throwables.printStackTrace();
}
return 0;
}
@Override
public Depart findById(int id) {
QueryRunner queryRunner = MyDbUtils.getQueryRunner();
String sql = "select * from t_depart where id = ?";
try {
return queryRunner.query(sql, new ResultSetHandler<Depart>() {
@Override
public Depart handle(ResultSet resultSet) throws SQLException {
// 存储返回结果的容器
if(resultSet.next()){
// 每次循环一次 user 存储一条数据
Depart entity = new Depart();
entity.setId(resultSet.getInt("id"));
entity.setName(resultSet.getString("name"));
entity.setNotes(resultSet.getString("notes"));
entity.setCreateTime(resultSet.getDate("create_time"));
return entity;
}
return null; // 返回查询的结果
}
},id);
} catch (SQLException throwables) {
throwables.printStackTrace();
}
return null;
}
@Override
public int updateById(Depart entity) {
QueryRunner queryRunner = MyDbUtils.getQueryRunner();
String sql = "update t_depart set name = ? , notes = ? where id = ?";
try {
return queryRunner.update(sql,entity.getName(),entity.getNotes(),entity.getId());
} catch (SQLException throwables) {
throwables.printStackTrace();
}
return 0;
}
@Override
public int deleteById(int id) {
QueryRunner queryRunner = MyDbUtils.getQueryRunner();
String sql = "delete from t_depart where id = ?";
try {
return queryRunner.update(sql,id);
} catch (SQLException throwables) {
throwables.printStackTrace();
}
return 0;
}
}
然后就可以Service
层的处理了。
public interface IDepartService {
public void listPage(PageUtils pageUtils);
int count(PageUtils pageUtils);
public int save(Depart entity);
public Depart findById(int id);
public int updateById(Depart entity);
int deleteById(int id);
}
在Service的接口实现类中要注意分页数据查询的处理。其他都是直接调用Dao中的方法处理
public class DepartServiceImpl implements IDepartService {
private IDepartDao dao = new DepartDaoImpl();
@Override
public void listPage(PageUtils pageUtils) {
// 查询分页的数据
List<Depart> list = dao.listPage(pageUtils);
// 查询 满足查询条件的记录数
int count = dao.count(pageUtils);
// 封装分页的数据
pageUtils.setList(list);
pageUtils.setTotalCount(count);
}
@Override
public int count(PageUtils pageUtils) {
return dao.count(pageUtils);
}
@Override
public int save(Depart entity) {
return dao.save(entity);
}
@Override
public Depart findById(int id) {
return dao.findById(id);
}
@Override
public int updateById(Depart entity) {
return dao.updateById(entity);
}
@Override
public int deleteById(int id) {
return dao.deleteById(id);
}
}
然后就是DepartServlet
中针对CRUD
操作需要涉及的接口方法的实现
@WebServlet(name = "departServlet",urlPatterns = {"/book/departServlet"})
public class DepartServlet extends BaseServlet {
private IDepartService service = new DepartServiceImpl();
@Override
public void list(HttpServletRequest req, HttpServletResponse resp) throws Exception {
super.list(req, resp);
service.listPage(pageUtils);
req.setAttribute(Constant.LIST_PAGE_UTILS,pageUtils);
// 页面跳转
req.getRequestDispatcher("/book/depart/list.jsp").forward(req,resp);
}
@Override
public void saveOrUpdatePage(HttpServletRequest req, HttpServletResponse resp) throws Exception {
String id = req.getParameter("id");
if(StringUtils.isNotEmpty(id)){
// 说明是更新操作
Depart entity = service.findById(Integer.parseInt(id));
req.setAttribute("entity",entity);
}
req.getRequestDispatcher("/book/depart/addOrUpdate.jsp").forward(req,resp);
}
@Override
public void saveOrUpdate(HttpServletRequest req, HttpServletResponse resp) throws Exception {
// 接收表单提交的数据
String id = req.getParameter("id");
String name = req.getParameter("name");
String notes = req.getParameter("notes");
Depart depart = new Depart();
depart.setName(name);
depart.setNotes(notes);
if(StringUtils.isNotEmpty(id)){
// 更新
depart.setId(Integer.parseInt(id));
service.updateById(depart);
}else{
// 保存数据
service.save(depart);
}
// 更新或者添加后需要重新查询相关的数据
resp.sendRedirect("/book/departServlet?action=list");
}
@Override
public void remove(HttpServletRequest req, HttpServletResponse resp) throws Exception {
String id = req.getParameter("id");
service.deleteById(Integer.parseInt(id));
PrintWriter writer = resp.getWriter();
writer.write("ok");
writer.flush();
}
@Override
public void findById(HttpServletRequest req, HttpServletResponse resp) throws Exception {
}
}
对应页面的处理操作,效果如下:
更新和添加效果
班级管理的功能和上面的院系功能很类似。只是多了一个所属的院系关系,笔记我们就重点突出这块。
在页面处理中需要多一个下拉菜单。分配院系功能
具体的实现效果如下:
学生管理是一个非常基础的CRUD
操作,需要完成基础的bean
,dao
,service
,servlet
以及前端jsp页面,效果如下:
添加和更新的效果
基本的代码就不贴了。列举需要注意的地方
resp.setContentType("application/json;charset=utf-8");
123
图书类型是我们图书信息中的一个非常重要的信息。所以我们需要单独的维护,功能非常简单就是一个普通的CRUD
操作。
图书管理功能是整个系统的核心功能。当然这块也是一个基本的CRUD
操作。只是这块的字段比较多。在实现的时候需要注意点即可。