自定义mvc框架03
目录
1.搭建自定义mvc框架环境
2.基础的增删改
3.通用的增删改
4.查询删除及重复表单提交问题
5.新增修改的前端实现
1.搭建自定义mvc框架环境

2.基础的增删改
package com.hz.dao;import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;import com.hz.entity.Book;
import com.hz.util.BaseDao;
import com.hz.util.PageBean;
import com.hz.util.StringUtils;public class BookDao extends BaseDao{
// 查看public List list(Book book,PageBean pageBean) throws Exception{String sql= "select*from t_mvc_book where 1=1";String bname = book.getBname();if(StringUtils.isNotBlank(bname)) {sql +=" and bname like '%"+bname+"%'";}int bid = book.getBid();if(bid!=0) {sql+=" and bid = "+bid;}return super.executeQuery(sql, pageBean, rs ->{List list =new ArrayList<>();try {while(rs.next()) {list.add(new Book(rs.getInt("bid"),rs.getString("bname"),rs.getFloat("price")));}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return list;});}// 增加public int add(Book book) throws Exception {String sql="insert into t_mvc_book values(?,?,?)";return super.executeUpdate(sql, book, new String[] {"bid","bname","price"});}// 删除public int del (Book book) throws Exception {String sql="delete from t_mvc_book where bid=?";return super.executeUpdate(sql, book, new String[] {"bid"});}// 修改public int edit (Book book) throws Exception {String sql="update t_mvc_book set bname=?,price=? where bid=?";return super.executeUpdate(sql, book, new String[] {"bname","price","bid"});}
}
3.通用的增删改
package com.hz.util;import java.lang.reflect.Field;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;import com.hz.entity.Book;/*** T代表的是实体类 可以是Book/User/Goods。。* @author Administrator** @param */
public class BaseDao {
// public List executeQuery(String sql,PageBean pageBean,CallBack callBack) throws Exception{sql="SELECT * FROM `t_mvc_book` where bname like '%圣墟%'\r\n" + "";从上面得到SELECT * FROM `t_mvc_book` where bname like '%圣墟%'目的是为了得到总记录数-》得到总页数SELECT * FROM `t_mvc_book` where bname like '%圣墟%' limit 10,10
//
// /**
// *1.拿到数据库连接
// *2.拿到preparestatement
// *3.执行sql语句
// */
// Connection con=DBAccess.getConnection();//重复代码1
//
// PreparedStatement ps=con.prepareStatement(sql);//重复代码2
// ResultSet rs=ps.executeQuery();//重复代码3
// /*while(rs.next()) {
// list.add(new Book(rs.getInt("bid"),rs.getString("bname"), rs.getFloat("price")));
// }*/查询不同的表,必然要处理不同的结果集接口是调用方来实现
// return callBack.foreach(rs);
//
// }public List executeQuery(String sql,PageBean pageBean,CallBack callBack) throws Exception{
// sql="SELECT * FROM `t_mvc_book` where bname like '%圣墟%'\r\n" +
// "";
// 从上面得到SELECT * FROM `t_mvc_book` where bname like '%圣墟%'
// 目的是为了得到总记录数-》得到总页数
// SELECT * FROM `t_mvc_book` where bname like '%圣墟%' limit 10,10/***1.拿到数据库连接 *2.拿到preparestatement*3.执行sql语句*/Connection con=null;//重复代码1PreparedStatement ps=null;//重复代码2ResultSet rs=null;//重复代码3if(pageBean!=null&&pageBean.isPagination()) {String countSQL=getcOuntSQL(sql);con=DBAccess.getConnection();//重复代码1ps=con.prepareStatement(countSQL);//重复代码2rs=ps.executeQuery();//重复代码3if(rs.next()) {
// 当前实体类就包含了总纪录数pageBean.setTotal(rs.getString("n"));}String pageSQL=getPageSQL(sql,pageBean);con=DBAccess.getConnection();//重复代码1ps=con.prepareStatement(pageSQL);//重复代码2rs=ps.executeQuery();//重复代码3}else {con=DBAccess.getConnection();//重复代码1ps=con.prepareStatement(sql);//重复代码2rs=ps.executeQuery();//重复代码3}return callBack.foreach(rs);}/*** 拼装第N页的数据SQL* @param sql* @param pageBean* @return*/
private String getPageSQL(String sql, PageBean pageBean) {// TODO Auto-generated method stubreturn sql+" limit " + pageBean.getStartIndex() +"," + pageBean.getRows();
}/*** 拼装符合条件总记录数的SQL* @param sql* @return*/private String getcOuntSQL(String sql) {
// sql="SELECT * FROM `t_mvc_book` where bname like '%圣墟%'\r\n" +
// "";
// select count(1) as n from (SELECT * from 't_mvc_book' where bname like '%圣墟%') t;return "select count(1) as n from ("+sql+") t";
}public int executeUpdate(String sql,T t,String[] sttrs ) throws Exception {Connection con=DBAccess.getConnection();PreparedStatement ps = con.prepareStatement(sql);
// 将t的摸一个属性对应的值加到pst对象中for (int i = 0; i < sttrs.length; i++) {Field f = t.getClass().getDeclaredField(sttrs[i]);f.setAccessible(true);ps.setObject(i+1, f.get(t));}
// ps.setObject(1, book.getBid());
// ps.setObject(2, book.getBname());
// ps.setObj ect(3, book.getPrice());return ps.executeUpdate();
}}
4.查询删除及重复表单提交问题
5.新增修改的前端实现
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<%@taglib prefix="h" uri="http://jsp.veryedu.cn" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
书籍列表
书籍ID 书籍名 价格 操作 ${b.bid} ${b.bname} ${b.price} 修改删除
界面展示

本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
