自定义MVC:增删改查

思维导图

一、 导jar包

导出mvc.jar

利用之前自定义的MVC的framework右键-->Export-->导出mvc.jar包

 导入项目所需jar包

二、 配置web.xml

如下:



  DHM_xml
 
 DHM
 com.DHM.framework.DispatchServlet
 
 configurationLocation
 /DHM.xml
 

 
 

 
 DHM
 *.action
 

三、增删改查

 增删改最终都要跳回查询页面
 分析增删改查一共有多少结果集的配置
 查询:BookList.jsp   返回list
 增删改确定:book.action?methodName=list   返回:toList
 增加修改跳转对应页面:bookEdit.jsp   返回:toEdit

  ① DHM.xml:





②通用增删改

增删改查的通用套路
    1、建立连接
    2、预定义对象PreparedStatement
    3、设置占位符的?的值
    4、ps.executeUpdate();

BaseDao

package com.DHM.Dao;import java.lang.reflect.Field;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;import com.DHM.entity.Book;
import com.DHM.util.DBAccess;
import com.DHM.util.PageBean;
/*** 所有dao层的父类* @author T440s** @param */
public class BaseDao {/*** 通用的增删改方法* @param book* @throws Exception*/public void executeUpdate(String sql,T t,String[] attrs) throws Exception {
//		String[] attrs=new String[] {"bid","bname","price"};Connection con=DBAccess.getConnection();PreparedStatement ps = con.prepareStatement(sql);
//		ps.setObject(1, book.getBid());
//		ps.setObject(2, book.getBname());
//		ps.setObject(3, book.getPrice());
/*** 思路:* 1、从传来的t中读取属性值* 2、从预定义对象中设置值* */for (int i=0;i list(String sql,Class clz, PageBean pageBean) throws Exception{//不确定List集合中装了什么东西 子类Dao继承BaseDao,子类传递什么类.class,那么List集合中放什么。List list=new ArrayList();Connection con=DBAccess.getConnection();PreparedStatement ps=null;ResultSet rs=null;
//		是否需要分页?
//		无需分页(项目中的下拉框、查询条件教员下拉框,)
//		必须分页(项目中的表类需求、订单列表、学生列表)if(pageBean !=null && pageBean.isPagination()) {
//		分页(列表需求)	
//			 sql=select * from t_mvc_book where bname like '%圣墟%'
//			 pagesql=sql limit (page-1)*rows,rows    对应某一页的数据
//			 countsql=select count(1) from (sql) t    符合条件的总记录数String countSQL=getCountSQL(sql, pageBean);	 ps = con.prepareStatement(countSQL);rs=ps.executeQuery();String pagesql=getPageSQL(sql, pageBean);//符合条件的某一数据ps = con.prepareStatement(pagesql);rs=ps.executeQuery();if(rs.next()) {pageBean.setTotal(String.valueOf(rs.getObject(1)));}}else {
//			不分页(select需求)ps=con.prepareStatement(sql);rs=ps.executeQuery();}while(rs.next()) {//代码不一样:具体体现在,不同表会有不同字段,那么是体内对应的属性就会不一样;//list.add(new Book(rs.getInt("bid"), rs.getString("bname"), rs.getFloat("price")));/*** 1、实例化一个对象* 2、从ResultSet对象的属性(bid)获取值,赋值给了前面的实例化的对象* 3、把已经赋值的对象,添加到List集合中*///实例化T t=clz.newInstance();//从ResultSet对象的属性(bid)获取值,赋值给了前面的实例化的对象Field[] fields = clz.getDeclaredFields();for (Field f : fields) {//打开权限f.setAccessible(true);f.set(t, rs.getObject(f.getName()));}//把已经赋值的对象,添加到List集合中list.add(t);}return list;}/*** 将原生sql转换成符合条件总记录数的countsql*/private String getCountSQL(String sql, PageBean pageBean) {// TODO Auto-generated method stubreturn "select count(1) from ("+sql+")";}/*** 将原生sql转换成pagesql* @param sql* @param pageBean* @return*/private String getPageSQL(String sql,PageBean pageBean) {// TODO Auto-generated method stubreturn sql+"limit"+pageBean.getPage() +","+pageBean.getRows();
}}

 BookDao

package com.DHM.Dao;import java.util.List;import com.DHM.entity.Book;
import com.DHM.util.PageBean;
import com.DHM.util.StringUtils;public class BookDao extends BaseDao{/** 以前的增加方法public void add(Book book) throws Exception {String sql="insert into t_mvc_book values(?,?,?)";Connection con=DBAccess.getConnection();PreparedStatement ps = con.prepareStatement(sql);ps.setObject(1, book.getBid());ps.setObject(2, book.getBname());ps.setObject(3, book.getPrice());ps.executeUpdate();}增删改查的通用套路1、建立连接2、预定义对象PreparedStatement3、设置占位符的?的值4、ps.executeUpdate();*/public void add(Book book) throws Exception {String sql="insert into t_mvc_book values(?,?,?)";super.executeUpdate(sql, book, new String[] {"bid","bname","price"});}public void edit(Book book) throws Exception {String sql="update t_mvc_book set bname=?,price=? where bid=?";super.executeUpdate(sql, book, new String[] {"bname","price","bid"});}public void delete(Book book) throws Exception {String sql="delete from t_mvc_book where bid=?";super.executeUpdate(sql, book, new String[] {"bid"});}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+"%'";}return super.list(sql, Book.class, pagebean);}
//	public static void main(String[] args) throws Exception {
//		Book book=new Book();
//		book.setBid(2323);
//		book.setBname("小吕秃头");
//		book.setPrice(1113);
//		BookDao bookdao=new BookDao();
//		bookdao.delete(book);
//		bookdao.add(book);
//		bookdao.edit(book);
//	}
}

BookAction

package com.DHM.web;import java.util.List;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import com.DHM.Dao.BookDao;
import com.DHM.entity.Book;
import com.DHM.framework.ActionSupport;
import com.DHM.framework.ModelDriver;
import com.DHM.util.PageBean;/*** 目标:* 利用自己做的自定义MVC框架完成增删改查* 步骤:* 1、导入框架的Jar包* 2、做好框架的使用配置* 3、一切照旧* JSP、servlet/BookAction 、dao层、entity* @author T440s**/
public class BookAction extends ActionSupport implements ModelDriver{private Book book=new Book();BookDao bookDao=new BookDao();@Overridepublic Book getModel() {return book;}//		增删改最终都要跳回查询页面
//	分析增删改查一共有多少结果集的配置/*** 查询:BookList.jsp   返回list* 增删改确定:book.action?methodName=list   返回:toList* 增加修改跳转对应页面:bookEdit.jsp   返回:toEdit* @param req* @param resp* @return*/public String add(HttpServletRequest req, HttpServletResponse resp) {try {bookDao.add(book);} catch (Exception e) {e.printStackTrace();}return "toList";}public String list(HttpServletRequest req, HttpServletResponse resp) {try {PageBean pagebean=new PageBean();bookDao.list(book, pagebean);List list=bookDao.list(book, pagebean);req.setAttribute("books", list);req.setAttribute("pagebean", pagebean);} catch (Exception e) {e.printStackTrace();}return "list";}public String delete(HttpServletRequest req, HttpServletResponse resp) {try {bookDao.delete(book);} catch (Exception e) {e.printStackTrace();}return "toList";}public String edit(HttpServletRequest req, HttpServletResponse resp) {try {bookDao.edit(book);} catch (Exception e) {e.printStackTrace();}return "toList";}/*** 跳转到新增跟修改界面*/public String toEdit(HttpServletRequest req, HttpServletResponse resp) {try {/*** 如果是跳转修改界面,那么需要做bid条件的精准查询*/if(book.getBid()!=0) {List list=bookDao.list(book, null);req.setAttribute("b", list.get(0));}} catch (Exception e) {e.printStackTrace();}return "toEdit";}
}

 ③页面

bookList  展示界面

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<%@ taglib uri="http://jsp.veryedu.cn" prefix="z"%>	
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>	






书籍列表


新增
书籍ID书籍名价格操作
${b.bid }${b.bname }${b.price }修改删除

bookEdit  增加修改界面

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<%@ taglib uri="http://jsp.veryedu.cn" prefix="z"%>	
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>	






书籍新增/修改

书籍ID:
书籍名称:
书籍价格:

判断是修改还是增加 

        action="${pageContext.request.contextPath }/book.action?methodName=${empty b ? 'add' : 'edit'}" method="post">
        书籍ID:

        书籍名称:

        书籍价格:

        
    

⑤展示效果

修改

 增加

 展示界面效果

没有啦!!!


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

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部