关于实现javaweb简单的增删改查操作
前言
在学完javaweb之后,想动手做一个简单的增删改查的阿案例`
一、pandas是什么?
示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。
二、使用步骤
1.mapper·层
package org.example.mapper;
import org.apache.ibatis.annotations.*;
import org.example.pojo.Brand;
import java.util.List;
public interface BrandMapper {
/**
* 查询所有
* @return
*/
@Select("select * from tb_brand")
List<Brand> selectAll();
/**
* 添加数据
* @param brand
*/
@Insert("insert into tb_brand values (null,#{brandName},#{companyName},#{ordered},#{description},#{status})")
void add(Brand brand);
/**
* 批量删除
* @param ids
*/
void deleteByIds(@Param("ids") int[] ids);
/**
* 单个删除
*/
@Delete("delete from tb_brand where id = #{id}")
void deleteById(int id);
/**
* 修改
* @param brand
*/
@Update("update tb_brand set brand_name = #{brandName},company_name = #{companyName},ordered = #{ordered},description = #{description},status = #{status} where id = #{id}")
void update(Brand brand);
/**
* 分页查询
* @param begin
* @param size
* @return
*/
@Select("select * from tb_brand limit #{begin},#{size}")
List<Brand> selectByPage(@Param("begin") int begin,@Param("size") int size);
/**
* 查询总记录数
* @return
*/
@Select("select count(*) from tb_brand")
int selectTotalCount();
/**
* 分页条件查询
* @param begin
* @param size
* @param brand
* @return
*/
List<Brand> selectByPageAndCondition(@Param("begin") int begin,@Param("size") int size,@Param("brand") Brand brand);
/**
* 根据条件查询总记录数
* @return
*/
int selectTotalCountByCondition(Brand brand);
2.pojo层
package org.example.pojo;
import java.sql.Date;
public class Brand {
// id 主键
private Integer id;
// 品牌名称
private String brandName;
// 企业名称
private String companyName;
// 排序字段
private Integer ordered;
// 描述信息
private String description;
// 状态:0:禁用 1:启用
private Integer status;
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
public Date getBackdate() {
return backdate;
}
public void setBackdate(Date backdate) {
this.backdate = backdate;
}
private Date date;
private Date backdate;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getBrandName() {
return brandName;
}
public void setBrandName(String brandName) {
this.brandName = brandName;
}
public String getCompanyName() {
return companyName;
}
public void setCompanyName(String companyName) {
this.companyName = companyName;
}
public Integer getOrdered() {
return ordered;
}
public void setOrdered(Integer ordered) {
this.ordered = ordered;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public Integer getStatus() {
return status;
}
//逻辑视图
public String getStatusStr(){
if (status == null){
return "未知";
}
return status == 0 ? "借出":"正常";
}
public void setStatus(Integer status) {
this.status = status;
}
@Override
public String toString() {
return "Brand{" +
"id=" + id +
", brandName='" + brandName + '\'' +
", companyName='" + companyName + '\'' +
", ordered=" + ordered +
", description='" + description + '\'' +
", status=" + status +
", date=" + date +
", backdate=" + backdate +
'}';
}
}
关于分页查询的pojo层:PageBean
package org.example.pojo;
import java.util.List;
// 分页查询的JavaBean
public class PageBean<T> {
// 总记录数
private int totalCount;
// 当前页数据
private List<T> rows;
public int getTotalCount() {
return totalCount;
}
public void setTotalCount(int totalCount) {
this.totalCount = totalCount;
}
public List<T> getRows() {
return rows;
}
public void setRows(List<T> rows) {
this.rows = rows;
}
}
services层
package org.example.service;
import org.example.mapper.BrandMapper;
import org.example.pojo.Brand;
import org.example.pojo.PageBean;
import org.example.util.SqlSessionFactoryUtils;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.example.pojo.PageBean;
import java.util.List;
public class BrandService {
// 1.创建对应SqlSessionFactory 工厂对象
SqlSessionFactory factory = SqlSessionFactoryUtils.getSqlSessionFactory();
/**
* 查询数据
* @return
*/
public List<Brand> selectAll() {
// 2.获取SqlSession对象
SqlSession sqlSession = factory.openSession();
// 3.获取BrandMapper
BrandMapper mapper = sqlSession.getMapper(BrandMapper.class);
// 4.调用方法
List<Brand> brands = mapper.selectAll();
// 5.释放资源
sqlSession.close();
return brands;
}
/**
* 添加数据
* @param brand
*/
public void add(Brand brand){
// 2.获取SqlSession对象
SqlSession sqlSession = factory.openSession();
// 3.获取BrandMapper
BrandMapper mapper = sqlSession.getMapper(BrandMapper.class);
// 4.调用方法
mapper.add(brand);
// 提交事务
sqlSession.commit();
// 5.释放资源
sqlSession.close();
}
/**
* 批量删除
* @param ids
*/
public void deleteByIds(int[] ids){
// 2.获取SqlSession对象
SqlSession sqlSession = factory.openSession();
// 3.获取BrandMapper
BrandMapper mapper = sqlSession.getMapper(BrandMapper.class);
// 4.调用方法
mapper.deleteByIds(ids);
// 提交事务
sqlSession.commit();
// 5.释放资源
sqlSession.close();
}
/**
* 单个删除
* @param id
*/
public void deleteById(int id){
// 2.获取SqlSession对象
SqlSession sqlSession = factory.openSession();
// 3.获取BrandMapper
BrandMapper mapper = sqlSession.getMapper(BrandMapper.class);
// 4.调用方法
mapper.deleteById(id);
// 提交事务
sqlSession.commit();
// 5.释放资源
sqlSession.close();
}
/**
* 修改
* @param brand
*/
public void update(Brand brand){
// 2.获取SqlSession
SqlSession sqlSession = factory.openSession();
// 3. 获取BrandMapper
BrandMapper mapper = sqlSession.getMapper(BrandMapper.class);
// 4.调用方法
mapper.update(brand);
// 提交事务
sqlSession.commit();
// 释放资源
sqlSession.close();
}
/**
*
* @param currentPage 当前页码
* @param pageSize 每页显示条数
* @return
*/
public PageBean<Brand> selectByPage(int currentPage, int pageSize){
// 2.获取SqlSession对象
SqlSession sqlSession = factory.openSession();
// 3.获取BrandMapper
BrandMapper mapper = sqlSession.getMapper(BrandMapper.class);
// 4.计算开始索引
int begin = (currentPage-1) * pageSize;
// 计算查询条目数
int size = pageSize;
// 5.查询当前页数据
List<Brand> rows = mapper.selectByPage(begin, size);
// 6.查询总记录数
int totalCount = mapper.selectTotalCount();
// 7.封装PageBean对象
PageBean<Brand> pageBean = new PageBean<>();
pageBean.setRows(rows);
pageBean.setTotalCount(totalCount);
// 8.释放资源
sqlSession.close();
return pageBean;
}
/**
* 分页条件查询
* @param currentPage
* @param pageSize
* @param brand
* @return
*/
public PageBean<Brand> selectByPageAndCondition(int currentPage,int pageSize,Brand brand){
// 2.获取SqlSession对象
SqlSession sqlSession = factory.openSession();
// 3.获取BrandMapper
BrandMapper mapper = sqlSession.getMapper(BrandMapper.class);
// 4.计算开始索引
int begin = (currentPage-1) * pageSize;
// 计算查询条目数
int size = pageSize;
// 处理brand条件 模糊查询
String brandName = brand.getBrandName();
if(brandName != null && brandName.length()>0){
brand.setBrandName("%"+brandName+"%");
}
String companyName = brand.getCompanyName();
if(companyName != null && companyName.length()>0){
brand.setCompanyName("%"+companyName+"%");
}
// 5.查询当前页数据
List<Brand> rows = mapper.selectByPageAndCondition(begin, size,brand);
// 6.查询总记录数
int totalCount = mapper.selectTotalCountByCondition(brand);
// 7.封装PageBean对象
PageBean<Brand> pageBean = new PageBean<>();
pageBean.setRows(rows);
pageBean.setTotalCount(totalCount);
// 8.释放资源
sqlSession.close();
return pageBean;
}
}
servlet层
链接: https://pan.baidu.com/s/1nFJ-3mC5znfBFgTm-oAw6g 提取码: 1fka
总结
在实现简单的增删改查操作时,我们难免遇到很多问题,比如过滤器导致无法识别vue,比如添加数据SQL遇到问题,不要心急。