JavaWeb学习记录(七)——MVC操作数据库增删改查与分页功能
一、分页工具类
package blank.util;
import java.util.List;
import org.springframework.jdbc.core.JdbcTemplate;
public class Pagination<T> {
// 每页的数量
private long pageSize;
// 当前页
private long nowPage;
// 总页数
private long pages;
// 每页开始的记录数
private long startSize;
// 当前页的数据
private List<T> rows;
// 总记录数
private long countSize;
public Pagination() {
super();
}
public Pagination(long pageSize, long nowPage, String tableName) {
super();
// 每页显示的数量
this.pageSize = pageSize;
// 总记录数
this.countSize =getCount(tableName);
// 计算出总页数
this.pages = this.countSize % this.pageSize == 0 ? this.countSize
/ this.pageSize : this.countSize / this.pageSize + 1;
// 判断当前页如果 小于等于0
if (nowPage <= 0) {
this.nowPage = 1; // 第一页
} else if (nowPage > this.pages) { // 如果当前页大于总页数 ,那么当前页应该等于总页数
this.nowPage = this.pages;
} else {
this.nowPage = nowPage; // 当前页就等于当前页
}
// 计算出开始的记录数
this.startSize = (this.nowPage - 1) * pageSize;
}
public long getCount(String tableName) {
JdbcTemplate jdbcTemplate = new JdbcTemplate(DBConn.getDataSource());
// 定义查询对象
long count = jdbcTemplate.queryForInt("select count(*) from "+tableName);
//返回总记录数
return count;
}
public List<T> getRows() {
return rows;
}
public void setRows(List<T> rows) {
this.rows = rows;
}
public long getPageSize() {
return pageSize;
}
public long getNowPage() {
return nowPage;
}
public long getPages() {
return pages;
}
public long getStartSize() {
return startSize;
}
public long getCountSize() {
return countSize;
}
@Override
public String toString() {
return "Pagination [pageSize=" + pageSize + ", nowPage=" + nowPage
+ ", pages=" + pages + ", startSize=" + startSize + ", rows="
+ rows + ", countSize=" + countSize + "]";
}
}
二、应用
(1)实体定义
public class Pet {
private Integer id;
private String name;
private String owner;
private String species;
private String sex;
private Date birth;
private Date death;
}
(2)数据库操作接口
public interface PetDao {
boolean insert(Pet entity);
boolean delete(Pet entity);
boolean delete(Integer id);
boolean update(Pet entity);
List<Pet> getObjects();
Pet getObjectsById(Integer id);
List<Pet> getObjects(long startSize, long pageSize);
}
(3)页面展示层(首页面list.jsp)
<table border="2">
<caption>宠物登记信息</caption>
<tr>
<th>select</th>
<th>id</th>
<th>name</th>
<th>owner</th>
<th>sex</th>
<th>species</th>
<th>birth</th>
<th>death</th>
<th>options</th>
</tr>
<c:forEach var="p" items="${pagination.rows}">
<tr>
<td><input type="checkbox" name="state" /></td>
<td>${p.id}</td>
<td>${p.name}</td>
<td>${p.owner}</td>
<td>${p.sex}</td>
<td>${p.species}</td>
<td>${p.birth}</td>
<td>${p.death}</td>
<td><a href="./pet.do?oper=update&id=${p.id}">update</a>
<a href="./pet.do?oper=delete&id=${p.id}">delete</a>
<a href="./pet.do?oper=details&id=${p.id}">details</a>
</td>
</tr>
</c:forEach>
<tr>
<td colspan="4"><a href="info.jsp">Insert</a></td>
<td colspan="5"><a href="./pet.do?oper=deleteSelect">DeleteSelected</a></td>
</tr>
<tr>
<td colspan="9">
<a href="./pet.do?oper=list&nowPage=1">首页</a>
<a href="./pet.do?oper=list&nowPage=${pagination.nowPage+1}">下一页</a>
<a href="./pet.do?oper=list&nowPage=${pagination.nowPage-1 }">上一页</a>
<a href="./pet.do?oper=list&nowPage=${pagination.pages}">末页</a>
</td>
</tr>
</table>
(4)servlet控制层
private PetDao petDao = new PetDaoImpl();
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
String value = request.getParameter("oper");
if ("list".equals(value)) {
listPets(request, response);
} else if ("insert".equals(value)) {
insertPet(request, response);
} else if ("delete".equals(value)) {
deletePet(request, response);
} else if ("update".equals(value)) {
updateById(request, response);
}else if ("updateOk".equals(value)) {
updatePet(request, response);
} else if ("details".equals(value)) {
detailsPet(request, response);
}
}
private void listPets(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
String snowPage=request.getParameter("nowPage");
long nowPage=1;
if(snowPage!=null){
nowPage=Long.valueOf(snowPage);
}
Pagination<Pet> pagination=new Pagination<Pet>(3,nowPage, "pet");
List<Pet> entities=petDao.getObjects(pagination.getStartSize(),3);
pagination.setRows(entities);
request.setAttribute("pagination", pagination);
request.getRequestDispatcher("/list.jsp").forward(request, response);
}
private void updateById(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
String id=request.getParameter("id");
Pet pet=null;
pet=petDao.getObjectsById(Integer.valueOf(id));
if(pet!=null){
request.setAttribute("pet", pet);
request.getRequestDispatcher("/update.jsp").forward(request, response);
}
}
private void updatePet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
String id=request.getParameter("id");
String nameValue = request.getParameter("name");
String ownerValue = request.getParameter("owner");
String sexValue = request.getParameter("sex");
String speciesValue = request.getParameter("species");
String birthValue = request.getParameter("birth");
String deathValue = request.getParameter("death");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
Pet pet = new Pet(Integer.valueOf(id), nameValue, ownerValue, speciesValue, sexValue,
sdf.parse(birthValue), sdf.parse(deathValue));
boolean flag=petDao.update(pet);
if(flag){
request.getRequestDispatcher("/pet.do?oper=list")
.forward(request, response);
}else{
request.getRequestDispatcher("/pet.do?oper=update")
.forward(request, response);
}
} catch (ParseException e) {
e.printStackTrace();
}
}
private void detailsPet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
String id=request.getParameter("id");
Pet pet=null;
pet=petDao.getObjectsById(Integer.valueOf(id));
if(pet!=null){
request.setAttribute("pet", pet);
request.getRequestDispatcher("/details.jsp")
.forward(request, response);
}else{
request.getRequestDispatcher("/pet.do?oper=list")
.forward(request, response);
}
}
private void deletePet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
String id = request.getParameter("id");
boolean flag = petDao.delete(Integer.valueOf(id));
if (flag) {
request.getRequestDispatcher("/pet.do?oper=list")
.forward(request, response);
} else {
request.getRequestDispatcher("/pet.do?oper=list")
.forward(request, response);
}
}
private void insertPet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
String nameValue = request.getParameter("name");
String ownerValue = request.getParameter("owner");
String sexValue = request.getParameter("sex");
String speciesValue = request.getParameter("species");
String birthValue = request.getParameter("birth");
String deathValue = request.getParameter("death");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Pet pet = null;
try {
pet = new Pet(null, nameValue, ownerValue, speciesValue, sexValue,
sdf.parse(birthValue), sdf.parse(deathValue));
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
boolean flag = petDao.insert(pet);
if (flag) {
List<Pet> pets = petDao.getObjects();
request.setAttribute("pets", pets);
request.getRequestDispatcher("/pet.do?oper=list")
.forward(request, response);
} else {
request.setAttribute("pet", "信息填写错误");
request.getRequestDispatcher("/info.jsp")
.forward(request, response);
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
JavaWeb学习记录(七)——MVC操作数据库增删改查与分页功能的更多相关文章
- 2. MongoDB基本操作 —— 用Mongo.exe操作数据库增删改查
一.开篇 传统的关系数据库一般由数据库(database).表(table).记录(record)三个层次概念组成,MongoDB是由数据库(database).集合(collection).文档对象 ...
- Django-Model操作数据库(增删改查、连表结构)
一.数据库操作 1.创建model表 基本结构 1 2 3 4 5 6 from django.db import models class userinfo(models.M ...
- MongoDB学习day04--NodeJs操作数据库增删改查
一.在Nodejs中使用Mongodb Nodejs需要引入的包 npm install mongodb --save -dev 或者使用镜像 cnpm install mongodb --save ...
- Android学习笔记_9_SQLiteOpenHelper对象之数据库增删改查以及事务回滚操作
一.SQLite数据库: 在Android平台上,集成了一个嵌入式关系型数据库—SQLite,SQLite3支持 NULL.INTEGER.REAL(浮点数字).TEXT(字符串文本)和BLOB(二进 ...
- phpcms 操作数据库 增删改查
数据库的其他类继承的都是libs/class/model.class.php 这里面有写好的操作数据库的常用方法 1.增 insert($data, $return_insert_id = false ...
- MongoDB学习【三】—MongoDB数据库增删改查
一.数据库的增删查 # 增加 use db # 有则切换,无则新 增 # 查看 show dbs # 查看所有数据库 db # 查看当前库 # 删除 db.dropDatabase() # 不会就用h ...
- java操作数据库增删改查的小工具1--TxQueryRunner
在java程序中,一般使用jdbc连接数据库,比较麻烦,在看传智教程时学了一个工具类,用于简化与数据库之间的操作步骤,就是TxQueryRunner,他是QueryRunner的子类,用起来和他是一样 ...
- mysql-数据(记录)相关操作(增删改查)及权限管理
一.介绍 在MySQL管理软件中,可以通过SQL语句中的DML语言来实现数据的操作,包括 使用INSERT实现数据的插入 UPDATE实现数据的更新 使用DELETE实现数据的删除 使用SELECT查 ...
- java操作数据库增删改查的小工具2--TxQueryRunner
当涉及到多表查询时,如数据库中有两张表分别为t_person和t_address,表结构如下: 其中t_person的外键为t-address的主键aid, 新建两个javaBean类,Person ...
随机推荐
- BCP 导入导出数据库数据
使用 bcp 将数据库迁移到 Azure SQL Database --所有 都是在本机sql上运行--先开启cmdshellEXEC sp_configure 'show advanced opti ...
- java基础-005
27.Java中垃圾回收的目的及回收的时机 垃圾回收的目的是识别并且丢弃不再使用的对象来释放和重用资源. 如果对象的引用被置为null,垃圾收集器不会立即释放对象占用的内存. 什么时候进行垃圾回收,主 ...
- javascript面向对象知识点
首先,声明何为对象:对象是键值对的集合 其次,声明:变量就是键值对 再次,声明:函数也是变量 1. JavaScript包含:ECMAScript(核心).DOM(文档对象模型)和BOM(浏览器对象模 ...
- <转>thinkphp的各种内部函数 D()、F()、S()、C()、L()、A()、I()详解
D.F.S.C.L.A.I 他们都在functions.php这个文件家下面我分别说明一下他们的功能 D() 加载Model类M() 加载Model类 A() 加载Action类L() 获取语言定义C ...
- powershell命令大全
Name Category Synopsis ---- -------- -------- ac Alias Add-Content asnp Alias Add-PSSnapin clc Alias ...
- (转)如何在Windows上安装多个MySQL
原文:http://www.blogjava.net/hongjunli/archive/2009/03/01/257216.html 如何在Windows上安装多个MySQL 本文以免安装版的mys ...
- 一次蜿蜒曲折的RFID破解之路
前言 早一段时间看到一篇看雪论坛关于逻辑嗅探破解接触式IC卡口令的文章,激起鄙人对rfid的兴趣.遂准备拿学校的卡一展身手. 0×00 前期准备 经过初步了解,学校的rfid卡片分为两种.校园卡采用M ...
- 12、SQL基础整理(运算符与优先级)
运算符 + - * / %(取余),赋值运算符 = declare @jia int set @jia = 1+1 print @jia declare @jia int set @jia = 10% ...
- C#基础指针类型
在C#的不安全的代码书写中,类型可以是指针类型.值类型或引用类型. 指针类型声明具有下列形式之一: type* identifier; void* identifier; //allowed bu ...
- HDU 3351
http://acm.hdu.edu.cn/showproblem.php?pid=3351 乍一看很像经典的括号匹配问题,其实不然,因为操作并非增加括号,而是翻转括号 只需记录多余的左括号的数量即可 ...