自定义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}修改删除

界面展示

 


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

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部