自定义MVC增删改查

news/2024/10/17 14:23:34/

 

目录

 mymvcdemo是自定义mvc框架的使用示例

1.1 实体类

1.2  dao方法

1.3 写Service / biz 三层架构

1.4 建action 相当于selvert

1.5 con连接MySQL 8.0 版本

1.6 配置文件 XML

1.7 主界面布局

1.8 增加界面布局

1.9 写tld配置文件

2.0 注意架包 我是已经打包好的


mymvcdemo是自定义mvc框架的使用示例

1.1 实体类

package com.zking.mymvc.entity;import java.io.Serializable;public class Book implements Serializable {private Integer bookid;private String bookname;private String bookname_pinyin;private Float price;private String booktype;public Integer getBookid() {return bookid;}public void setBookid(Integer bookid) {this.bookid = bookid;}public String getBookname() {return bookname;}public void setBookname(String bookname) {this.bookname = bookname;}public String getBookname_pinyin() {return bookname_pinyin;}public void setBookname_pinyin(String bookname_pinyin) {this.bookname_pinyin = bookname_pinyin;}public Float getPrice() {return price;}public void setPrice(Float price) {this.price = price;}public String getBooktype() {return booktype;}public void setBooktype(String booktype) {this.booktype = booktype;}public Book() {// TODO Auto-generated constructor stub}public Book(Integer bookid, String bookname, String bookname_pinyin, Float price, String booktype) {super();this.bookid = bookid;this.bookname = bookname;this.bookname_pinyin = bookname_pinyin;this.price = price;this.booktype = booktype;}public Book( String bookname, String bookname_pinyin, Float price, String booktype) {this.bookname = bookname;this.bookname_pinyin = bookname_pinyin;this.price = price;this.booktype = booktype;}@Overridepublic String toString() {return "Book [bookid=" + bookid + ", bookname=" + bookname + ", bookname_pinyin=" + bookname_pinyin + ", price="+ price + ", booktype=" + booktype + "]";}}

1.2  dao方法

package com.zking.mymvc.dao;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 org.junit.Test;import com.zking.dao.BaseDao02;
import com.zking.dao.BaseDao02.ICovent;
import com.zking.mymvc.entity.Book;import com.zking.util.DBHelper;
import com.zking.util.PageBean;
import com.zking.util.PinYinUtil;public class BookDao implements IBookDao {Connection con = null;PreparedStatement ps = null;ResultSet rs = null;@Overridepublic List<Book> getBooks(Book book, PageBean pageBean) {String sql="select * from tb_book where 1=1";List<Object> ls = new ArrayList<>();if(book != null && book.getBookname() !=null && !"".equals(book.getBookname())) {sql +=" and bookname like ?";ls.add("%"+book.getBookname()+"%") ;}return BaseDao02.query(sql, ls.toArray(), pageBean, new ICovent<Book>() {@Overridepublic List<Book> convent(ResultSet rs) throws SQLException {List<Book> list = new ArrayList<>();while(rs.next()) {Book book = new Book();book.setBookid(rs.getInt("bookid"));book.setBookname(rs.getString("bookname"));book.setBookname_pinyin(rs.getString("bookname_pinyin"));book.setPrice(rs.getFloat("price"));book.setBooktype(rs.getString("booktype"));list.add(book);}return list;}});}@Overridepublic void addBook(Book book) {System.out.println(book);try {//创建连接con=DBHelper.getConnection();//SQL语句String sql="insert into tb_book(bookname,bookname_pinyin,price,booktype) values(?,?,?,?)";//执行语句ps=con.prepareStatement(sql);//赋值ֵps.setString(1,book.getBookname());ps.setString(2,PinYinUtil.toPinyin(book.getBookname().toLowerCase()));ps.setFloat(3, book.getPrice());ps.setString(4, book.getBooktype());ps.executeUpdate();} catch (Exception e) {e.printStackTrace();}finally {DBHelper.close(con, ps, null);}}@Overridepublic int deleteBook(int bookid) {int n = 0;try {//创建连接con=DBHelper.getConnection();//定义SQL语句String sql="delete from tb_book where bookid=?";//获得执行语句ps=con.prepareStatement(sql);//赋值ps.setInt(1, bookid);n=ps.executeUpdate();} catch (Exception e) {e.printStackTrace();}finally {DBHelper.close(con, ps, rs);}return n;}@Testpublic void testGetBook() {Book book = new Book();book.setBookname("西");PageBean pageBean = new PageBean();pageBean.setRows(5);pageBean.setPage(2);List<Book> list = getBooks(book, pageBean);list.forEach(System.out::println);}@Testpublic void testAddBook() {Book book = new Book("哈哈哈", "hhh", 34.33f, "小说");BookDao bd = new BookDao();bd.addBook(book);}}

package com.zking.mymvc.dao;import java.util.List;import com.zking.mymvc.entity.Book;
import com.zking.util.PageBean;public interface IBookDao {/*** 查询方法* @param book* @param pageBean* @return*/List<Book> getBooks(Book book, PageBean pageBean);/*** 增加方法* @param book*/void addBook(Book book);/*** 删除方法* @param bookid* @return*/int deleteBook(int bookid);}

1.3 写Service / biz 三层架构

package com.zking.mymvc.service;import java.util.List;import com.zking.mymvc.dao.BookDao;
import com.zking.mymvc.dao.IBookDao;
import com.zking.mymvc.entity.Book;
import com.zking.util.PageBean;/*** @author PC**/
public class BookService implements IBookService {private IBookDao dao = new BookDao();@Overridepublic List<Book> getBooks(Book book,PageBean pageBean) {return dao.getBooks(book, pageBean);}@Overridepublic void addBook(Book book) {dao.addBook(book);}@Overridepublic void deleteBook(int bookid) {dao.deleteBook(bookid);}}
package com.zking.mymvc.service;import java.util.List;import com.zking.mymvc.entity.Book;
import com.zking.util.PageBean;public interface IBookService {List<Book> getBooks(Book book,PageBean pageBean);void addBook(Book book);void deleteBook(int bookid);}

1.4 建action 相当于selvert

package com.zking.mymvc.action;import java.util.List;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import com.zking.framework.AbstractDispatchAction;
import com.zking.framework.ModelDrive;
import com.zking.mymvc.entity.Book;
import com.zking.mymvc.service.BookService;
import com.zking.mymvc.service.IBookService;
import com.zking.util.PageBean;public class BookAction extends AbstractDispatchAction implements ModelDrive {private Book book = new Book();@Overridepublic Object getModel() {return book;}//查询private IBookService service = new BookService();public String getBooks(HttpServletRequest req,HttpServletResponse resp) {PageBean pageBean = new PageBean();pageBean.setRequest(req);pageBean.setRows(5);List<Book> bookPager = service.getBooks(book, pageBean);req.setAttribute("bookPager", bookPager);return "book";}/*** 增加* @param req* @param resp* @return*/public String addBook(HttpServletRequest req,HttpServletResponse resp) {service.addBook(book);return "success";}/*** 删除* @param req* @param resp* @return*/public String deleteBook(HttpServletRequest req,HttpServletResponse resp) {service.deleteBook(book.getBookid());return "ok";}}

1.5 con连接MySQL 8.0 版本

#oracle9i
#driver=oracle.jdbc.driver.OracleDriver
#url=jdbc:oracle:thin:@localhost:1521:orcl
#user=scott
#pwd=123#sql2005
#driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
#url=jdbc:sqlserver://localhost:1433;DatabaseName=test1
#user=sa
#pwd=123#sql2000
#driver=com.microsoft.jdbc.sqlserver.SQLServerDriver
#url=jdbc:microsoft:sqlserver://localhost:1433;databaseName=unit6DB
#user=sa
#pwd=888888#mysql
driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/tb_books?useUnicode=true&characterEncoding=UTF-8&useSSL=false&allowPublicKeyRetrieval=true
#url=jdbc:mysql://119.23.46.143:3306/db_s2_easyui?useUnicode=true&characterEncoding=UTF-8&useSSL=false
user=root
pwd=123456

1.6 配置文件 XML

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE config[<!ELEMENT config (action*)><!ELEMENT action (forward*)><!ELEMENT forward EMPTY><!ATTLIST actionpath CDATA #REQUIREDtype CDATA #REQUIRED><!ATTLIST forwardname CDATA #REQUIREDpath CDATA #REQUIREDredirect (true|false) "false">
]>
<config><action path="/bookAction" type="com.zking.mymvc.action.BookAction"><forward name="book" path="/bookList.jsp" redirect="false"/><forward name="success" path="http://localhost:8080/J2EE_mymvcdemo/bookAction.action?methodName=getBooks" redirect="true"/><forward name="ok" path="http://localhost:8080/J2EE_mymvcdemo/bookAction.action?methodName=getBooks" redirect="true"/></action>
</config>

1.7 主界面布局

<%@page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@taglib prefix="z" uri="/zking"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>通用分页案例书本信息</title>
</head>
<body><h1>书本信息</h1><form action="<%=request.getContextPath()%>/bookAction.action?methodName=getBooks" method="post"><input type="text" name="bookname" value="<%=request.getParameter("bookname")==null ? "" : request.getParameter("bookname")%>"/> <input type="submit" value="查询"></form><table width="100%" border="1" cellpadding="0" cellspacing="0"><thead><tr><td>书本编号</td><td>书本名字</td><td>书本拼音</td><td>书本价格</td><td>书本类型</td><td>操作<a href="<%=request.getContextPath()%>/addBook.jsp">增加</a></td></tr></thead><c:forEach items="${bookPager}" var="b"><tr><td>${b.bookid}</td><td>${b.bookname}</td><td>${b.bookname_pinyin}</td><td>${b.price}</td><td>${b.booktype}</td><td><a href="<%=request.getContextPath()%>/bookAction.action?methodName=deleteBook&bookid=${b.bookid}">删除</a></td></tr></c:forEach></table><z:paging pageBean="${pageBean}"/></body>
</html>

1.8 增加界面布局

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body><h1>增加</h1><form action="<%=request.getContextPath()%>/bookAction.action?methodName=addBook" method="post">书本名字: <input type="text" name="bookname"><br>书本价格: <input type="text" name="price"><br>书本类型: <input type="text" name="booktype"><br><input type="submit" value="提交"></form>
</body>
</html>

1.9 写tld配置文件

<!DOCTYPE taglibPUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN""http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<!-- 标签库描述符 -->
<taglib xmlns="http://java.sun.com/JSP/TagLibraryDescriptor"><tlib-version>1.0</tlib-version><jsp-version>1.2</jsp-version><short-name>Simple Tags</short-name><uri>/zking</uri><tag><name>paging</name><tag-class>com.zking.tag.PagingTag</tag-class><body-content>empty</body-content><attribute><name>pageBean</name><required>true</required><rtexprvalue>true</rtexprvalue></attribute></tag></taglib>

2.0 注意架包 我是已经打包好的

 


http://www.ppmy.cn/news/998263.html

相关文章

Expectation (Easy Version) 2023“钉耙编程”中国大学生算法设计超级联赛(5)hdu7330

Problem - 7330 题目大意&#xff1a;有n次游戏&#xff0c;每次游戏有a/b的概率获胜&#xff0c;且相互独立&#xff0c;如果当前赢了cnt次游戏&#xff0c;那么这次游戏会赢得的分数&#xff0c;问最后得分的期望 1<n<1e6;1<m,a<b<998244353 思路&#xff…

PHP高级检索功能的实现以及动态拼接sql

我们学习了解了这么多关于PHP的知识&#xff0c;不知道你们对PHP高级检索功能的实现以及动态拼接sql是否已经完全掌握了呢&#xff0c;如果没有&#xff0c;那就跟随本篇文章一起继续学习吧! PHP高级检索功能的实现以及动态拼接sql。完成的功能有&#xff1a;可以单独根据一个…

开源项目-知识库管理系统(中国软件杯项目)

简述 哈喽,大家好,今天带来一个开源项目-知识库管理系统,项目通过Spring MVC技术实现。通过readme了解到这是某位大神大三暑假(2016年)参加第五届中国软件杯项目的源码。由三人团队完成(Yu yufeng\Zhou changqin\Liu chenzhe) 此作品获得了本科组全国二等奖。项目本身用…

LeetCode 39. 组合总和(回溯+剪枝)

题目&#xff1a; 链接&#xff1a;LeetCode 39. 组合总和 难度&#xff1a;中等 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target &#xff0c;找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 &#xff0c;并以列表形式返回。你可以按 …

零基础学习编程(前端、Java、Python、大数据……)的一些建议

一、学习要明确动机和方向&#xff0c;有强烈的学习欲望 就自学前端来说&#xff0c;很多时候你其实都是孤独的&#xff0c;不知道到底学得怎么样&#xff0c;除非有强烈的欲望&#xff0c;不然大部分的新手很容易就会半途而废。 首先&#xff0c;要想明白自己学习编程的强烈…

MySQL 在CentOS下安装

yum安装 1、yum源安装 yum install mariadb-server2、启动MySQL服务 systemctl start mariadb3、查看运行状态 systemctl status mariadb4、设置初始密码 mysql -u rootuse mysql;update user set passwordpassword("root")where userroot;flush privileges;e…

C/C++几个关键知识点记录

1.将一个数值作为函数执行 (*(void(*)())0x13)();同理也可以将数值换成一个变量&#xff1a; int var0x13; (*(void(*)())var)();具体原理解释参考&#xff1a;https://blog.csdn.net/qq_39117115/article/details/128299574 2.断言assert 用于判断输入的参数是否正确&…

基于Ubuntu22.04部署bcache模式ceph

作者&#xff1a;吴业亮 博客&#xff1a;wuyeliang.blog.csdn.net 将Bcache集成到Ceph OSD后端可以带来一些优点和潜在的缺点。以下是它们的一些方面&#xff1a; 优点&#xff1a; 提高性能&#xff1a;BCache作为SSD缓存设备&#xff0c;可以提供更快的数据读取和写入速度…