栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

自定义mvc增删改查

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

自定义mvc增删改查

目录

搭建自定义mvc框架环境

将上一次写的框架导出成为jar包

 代码展示:

基础增删改查

BaseDao

调用通用的增删改查:

增删改查及表单提交问题

1、xml的配置:

2、web层

3、主界面

4、编辑界面

效果展示:


搭建自定义mvc框架环境

1、将上一次写的框架导出成为jar包

 选择JAR file

 在JAR file这可以输入你想导出的位置

 代码展示:
package com.zlp.tag;
 
import java.io.IOException;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
 
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.BodyTagSupport;
 
import com.zlp.util.PageBean;
 
public class PageTag extends BodyTagSupport{
 
	private PageBean pageBean;
	
	
	
	public PageBean getPageBean() {
		return pageBean;
	}
 
	public void setPageBean(PageBean pageBean) {
		this.pageBean = pageBean;
	}
 
	@Override
	public int doStartTag() throws JspException {
		JspWriter out = pageContext.getOut();
		try {
			out.print(toHML());
		} catch (Exception e) {
			e.printStackTrace();
		}
		return super.doStartTag();
	}
 
	private String toHML() {
		//String
		StringBuffer sb = new StringBuffer();
		//隐藏的from表单,作用保存上一次
		sb.append("
"); sb.append(" "); Map parameterMap = pageBean.getParameterMap(); if(parameterMap!=null&¶meterMap.size()>0) { Set> entrySet = parameterMap.entrySet(); for (Entry entry : entrySet) { String key = entry.getKey(); String[] values = entry.getValue(); if(!"page".equals(key)) { for (String value : values) { sb.append(" "); } } } } sb.append(""); //分页条 sb.append("
    "); sb.append("
  • 首页
  • "); sb.append("
  • <
  • "); sb.append("
  • "+pageBean.getPage()+"
  • "); sb.append("
  • >
  • "); sb.append("
  • 尾页
  • "); sb.append("
  • 到第页
  • "); sb.append("
  • 确定
  • "); sb.append("
  • 共"+pageBean.getTotal()+"条
  • "); sb.append("
"); //分页js代码 sb.append(""); return sb.toString(); } }

基础增删改查

BaseDao
package com.zlp.util;
 
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.zlp.entity.Book;
 

public class BaseDao {
 
//	public List executeQuery(String sql,PageBean pageBean,CallBack callBack) throws Exception{
//		
//		Connection con = DBAccess.getConnection();//重复代码1
//		PreparedStatement pst = con.prepareStatement(sql);//重复代码2
//		ResultSet rs = pst.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 '%圣墟%'";
//		List list =new ArrayList();
//		从上面而得到select count(1) as n from (select * from t_mvc_book where bname like '%圣墟%') t
//		String countsql = "select count(1) as n from ("+sql+")t";
//		目的是为了得到总记录数-》得到总页数
//		select * from t_mvc_book where bname like '%圣墟%' LIMIT 10,10
		
		Connection con = null;//重复代码1
		PreparedStatement pst = null;//重复代码2
		ResultSet rs = null;//重复代码3
		
		if(pageBean!=null&&pageBean.isPagination()) {
			//总记录数
			String countSQL = getCountSQL(sql);
			con = DBAccess.getConnection();//重复代码1
			pst = con.prepareStatement(countSQL);//重复代码2
			rs = pst.executeQuery();//重复代码3
			if(rs.next()) {
				//当前实体类就包含总记录数
				pageBean.setTotal(rs.getString("n"));
			}
			//分页
			String pageSQL = getPageSQL(sql,pageBean);
			con = DBAccess.getConnection();//重复代码1
			pst = con.prepareStatement(pageSQL);//重复代码2
			rs = pst.executeQuery();//重复代码3
 
		}
		else {
			con = DBAccess.getConnection();//重复代码1
			pst = con.prepareStatement(sql);//重复代码2
			rs = pst.executeQuery();//重复代码3
 
		}
		
 
//		while(rs.next()) {
//			list.add(new Book(rs.getInt("bid"),rs.getString("bname"),rs.getFloat("price")));
//		}
//		查询不同的表到,必然处理不同的结果集
//		接口调用方来实现
		
		return callBack.foreach(rs);
	}
 
	
	private String getPageSQL(String sql, PageBean pageBean) {
		return sql+" limit " + pageBean.getStartIndex()+","+pageBean.getRows();
	}
 
 
	
	private String getCountSQL(String sql) {
	//	sql="select * from t_mvc_book where bname like '%圣墟%'";
	//	List list =new ArrayList();
	//	从上面而得到select count(1) as n from (select * from t_mvc_book where bname like '%圣墟%') t
	//	String countsql = "select count(1) as n from ("+sql+")t";
	//	目的是为了得到总记录数-》得到总页数
	//	select * from t_mvc_book where bname like '%圣墟%' LIMIT 10,10
	
		return "select count(1) as n from ("+sql+")t";
	}
	
	
	
	public int executeUpdate(String sql,T t,String[] attrs ) throws Exception{
		Connection con = DBAccess.getConnection();
		PreparedStatement pst = con.prepareStatement(sql);
		//将t的某一个属性对应的值加到pst对象中
		for (int i = 0; i < attrs.length; i++) {
			Field f = t.getClass().getDeclaredField(attrs[i]);
			f.setAccessible(true);
			pst.setObject(i+1, f.get(t));
		}
//		pst.setObject(1, book.getBid());
//		pst.setObject(2, book.getBname());
//		pst.setObject(3, book.getPrice());
		return pst.executeUpdate();
	
	}
	
}
package com.zlp.util;
 
import java.sql.ResultSet;
import java.util.List;
 
import com.zlp.entity.Book;
 

public interface CallBack {
 
	List foreach(ResultSet rs);
 
}
package com.zlp.util;
 
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
 

public class DBAccess {
	private static String driver;
	private static String url;
	private static String user;
	private static String password;
 
	static {// 静态块执行一次,加载 驱动一次
		try {
			InputStream is = DBAccess.class
					.getResourceAsStream("config.properties");
 
			Properties properties = new Properties();
			properties.load(is);
 
			driver = properties.getProperty("driver");
			url = properties.getProperty("url");
			user = properties.getProperty("user");
			password = properties.getProperty("pwd");
 
			Class.forName(driver);
		} catch (Exception e) {
			e.printStackTrace();
			throw new RuntimeException(e);
		}
	}
 
	
	public static Connection getConnection() {
		try {
			Connection conn = DriverManager.getConnection(url, user, password);
			return conn;
		} catch (SQLException e) {
			e.printStackTrace();
			throw new RuntimeException(e);
		}
	}
 
	public static void close(ResultSet rs) {
		if (null != rs) {
			try {
				rs.close();
			} catch (SQLException e) {
				e.printStackTrace();
				throw new RuntimeException(e);
			}
		}
	}
 
	public static void close(Statement stmt) {
		if (null != stmt) {
			try {
				stmt.close();
			} catch (SQLException e) {
				e.printStackTrace();
				throw new RuntimeException(e);
			}
		}
	}
 
	public static void close(Connection conn) {
		if (null != conn) {
			try {
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
				throw new RuntimeException(e);
			}
		}
	}
 
	public static void close(Connection conn, Statement stmt, ResultSet rs) {
		close(rs);
		close(stmt);
		close(conn);
	}
 
	public static boolean isOracle() {
		return "oracle.jdbc.driver.OracleDriver".equals(driver);
	}
 
	public static boolean isSQLServer() {
		return "com.microsoft.sqlserver.jdbc.SQLServerDriver".equals(driver);
	}
	
	public static boolean isMysql() {
		return "com.mysql.cj.jdbc.Driver".equals(driver);
	}
 
	public static void main(String[] args) {
		Connection conn = DBAccess.getConnection();
		System.out.println(conn);
		DBAccess.close(conn);
		System.out.println("isOracle:" + isOracle());
		System.out.println("isSQLServer:" + isSQLServer());
		System.out.println("isMysql:" + isMysql());
		System.out.println("数据库连接(关闭)成功");
	}
}

增加:

//	增
//	public int add(Book book) throws Exception {
//		Connection con = DBAccess.getConnection();
//		String sql="insert into t_mvc_book values(?,?,?)";
//		PreparedStatement pst = con.prepareStatement(sql);
//		pst.setObject(1, book.getBid());
//		pst.setObject(2, book.getBname());
//		pst.setObject(3, book.getPrice());
//		return pst.executeUpdate();
//	}

删除:

//	删
//	public int del(Book book) throws Exception {
//		Connection con = DBAccess.getConnection();
//		String sql="delete from t_mvc_book where bid=?";
//		PreparedStatement pst = con.prepareStatement(sql);
//		pst.setObject(1, book.getBid());
//		return pst.executeUpdate();
//	}

修改:

//	改
//	public int edit(Book book) throws Exception {
//		Connection con = DBAccess.getConnection();
//		String sql="update t_mvc_book set bname=?,price=? where bid=?";
//		PreparedStatement pst = con.prepareStatement(sql);
//		pst.setObject(1, book.getBname());
//		pst.setObject(2, book.getPrice());
//		pst.setObject(3, book.getBid());
//		return pst.executeUpdate();
//	}

通用:

public int executeUpdate(String sql,T t,String[] attrs) throws Exception {
		Connection con = DBAccess.getConnection();
		PreparedStatement pst = con.prepareStatement(sql);
//		将t的某一个属性对应值加到pst对象中
		for (int i = 0; i < attrs.length; i++) {
			Field f = t.getClass().getDeclaredField(attrs[i]);
			f.setAccessible(true);
			pst.setObject(i+1, f.get(t));
		}
//		pst.setObject(2, book.getBname());
//		pst.setObject(3, book.getPrice());
		return pst.executeUpdate();
	}

调用通用的增删改查:
package com.zlp.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import com.zlp.entity.Book;
import com.zlp.util.BaseDao;
import com.zlp.util.DBAccess;
import com.zlp.util.PageBean;
import com.zlp.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();
//		前台jsp传递到后台,只要传了就有值,没传就是默认值,默认值就是0
		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) {
				e.printStackTrace();
			}
			return list;
		});
	}
	
//	增
//	public int add(Book book) throws Exception {
//		Connection con = DBAccess.getConnection();
//		String sql="insert into t_mvc_book values(?,?,?)";
//		PreparedStatement pst = con.prepareStatement(sql);
//		pst.setObject(1, book.getBid());
//		pst.setObject(2, book.getBname());
//		pst.setObject(3, book.getPrice());
//		return pst.executeUpdate();
//	}
	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 {
//		Connection con = DBAccess.getConnection();
//		String sql="delete from t_mvc_book where bid=?";
//		PreparedStatement pst = con.prepareStatement(sql);
//		pst.setObject(1, book.getBid());
//		return pst.executeUpdate();
//	}
	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 {
//		Connection con = DBAccess.getConnection();
//		String sql="update t_mvc_book set bname=?,price=? where bid=?";
//		PreparedStatement pst = con.prepareStatement(sql);
//		pst.setObject(1, book.getBname());
//		pst.setObject(2, book.getPrice());
//		pst.setObject(3, book.getBid());
//		return pst.executeUpdate();
//	}
	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"});
	}
}

增删改查及表单提交问题

1、xml的配置:


	
		
		
		
	
	

2、web层
package com.zlp.web;

import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.zlp.dao.BookDao;
import com.zlp.entity.Book;
import com.zlp.framework.ActionSupport;
import com.zlp.framework.ModelDriven;
import com.zlp.util.PageBean;

public class BookAction extends ActionSupport implements ModelDriven{
	private Book book=new Book();
	private BookDao bookDao=new BookDao();
	
	@Override
	public Book getModel() {
		return book;
	}
	
//	增
	public String add(HttpServletRequest req, HttpServletResponse resp) {
		try {
			bookDao.add(book);
		} catch (Exception e) {
			e.printStackTrace();
		}
//		代表跳到查询界面
		return "toList";
	}
	
//	删
	public String del(HttpServletRequest req, HttpServletResponse resp) {
		try {
			bookDao.del(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 list(HttpServletRequest req, HttpServletResponse resp) {
		try {
			PageBean pageBean=new PageBean();
			pageBean.setRequest(req);
			List list = bookDao.list(book,pageBean);
			req.setAttribute("list", list);
			req.setAttribute("pageBean", pageBean);
		} catch (Exception e) {
			e.printStackTrace();
		}
//		执行查询展示
		return "list";
	}
	
//	跳转到新增/修改界面
	public String preEdit(HttpServletRequest req, HttpServletResponse resp) {
		try {
			int bid = book.getBid();
			if(bid!=0) {
//				传递bid到后台,有且只能查出一条数据,那也就意味着list集合中只有一条
				List list = bookDao.list(book, null);
				req.setAttribute("b", list.get(0));
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
//		代表跳到编辑界面
		return "toEdit";
	}
}

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






书籍列表



	
增加
书籍ID 书籍名 价格 操作
${b.bid} ${b.bname} ${b.price} 编辑 删除

4、编辑界面
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>




Insert title here


	
bid:
bname:
price:

效果展示:

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/999512.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号