增删改查武林秘籍 学之受用无穷,可在30分钟内写完增删改查所有后台代码
1:创建一个maven 带骨架webapp的项目 2:创建表:book表(你所要增删改查的表) 并且使用idea 连接数据库(方便生成实体类) 3.导包(pom文件 dependencies下所有的包) (记得刷新maven)(记得刷新maven)(记得刷新maven) 4,复制resources目录下所需要的文件 修改XxxxMapper 为你需要的名字 5.检查jdbc.properties 中的数据库是否写错(只需要检查数据库 别的什么都不用管) 6.创建包 com.heng.pojo :实体类包 : 自动生成数据表 Book表 (注意改包) 把Cond.java 和 RespResult.java 复制到此包下 (可以复制属于工具类) com.heng.service: 业务层包 XxxxxService com.heng.web.servlet: 前端控制器: productServlet (此项目只需要一个Servlet) com.heng.web.filter:过滤器包 : 把解决乱码的过滤器 粘贴到此包中, 把CharchaterFilter.java粘贴到filter包下 com.heng.mapper: 操作数据库包 创建XxxxMapper (注意是接口) com.heng.utils (存放工具类包) : 把 JSONUtils.java 和 SqlSessionUtil.java 粘贴到 utils包下 (可以复制 已经提供好)
到此项目搭建完毕,请把每一步操作熟练,已经尽量压缩
接下来进入代码阶段:请一定要沿用此代码的方法名称风格
2.1进行mapper接口的书写
你需要在此接口中书写6个方法 1:根据条件查询 方法名称:selectByCond(Cond cond); //参数为条件对象 //在Xml中写sql 2:添加语句 方法名称:add(Book book);//参数为实体类对象 //使用注解写sql 3:根据id删除语句 方法名称:delById(String id);//id //使用注解写sql 4:批量删除语句 方法名称:delBatch(Listlist); 参数为集合 集合中存的是前端传递过来的id数组 //在Xml中写sql 5:根据id查询 方法名称:selectById( String id);//id //使用注解写sql 6:更新语句 方法名称:update(Book book); //使用注解写sql
public interface BookMapper {
//根据条件查询
List selectByCond(Cond cond);
//添加语句
@Insert("insert into book values(null,#{name},#{price},#{autor})")
int add(Book book);
//根据id删除语句
@Delete("delete from book where id = #{id}")
int delById(@Param("id") String id);
//批量删除语句
int delBatch(List list);
//根据id查询
@Select("select * from book where id = #{id}")
Book selectById(@Param("id") String id);
//更新语句
@Update("update book set name=#{name},price=#{price},autor=#{autor} where id = #{id}")
int update(Book book);
}
到此为止 mapper接口中的方法书写完毕 请一定一定要保持sql语句的准确性,如果sql不对,对于新手来说,调试是很大的挑战
2.2进行Service类中方法的书写
此类中方法很简单,只需要把mapper接口中的注解全部去掉然后加上大括号就行
需要注意的是: 你需要使用mapper ,为了简化代码 我们把mapper 设为静态 在静态代码块中赋值
//业务层代码
public class BookService {
private static BookMapper mapper;
static {
SqlSession session = SqlSessionUtil.getSession();
mapper = session.getMapper(BookMapper.class);
}
//根据条件查询
public List selectByCond(Cond cond) {
return mapper.selectByCond(cond);
}
//添加语句
public int add(Book book) {
return mapper.add(book);
}
//根据id删除语句
public int delById(String id) {
return mapper.delById(id);
}
//批量删除语句
public int delBatch(List list) {
return mapper.delBatch(list);
}
//根据id查询
public Book selectById(String id) {
return mapper.selectById(id);
}
//更新语句
public int update(Book cust) {
return mapper.update(cust);
}
}
2.3Servlet类中代码的编写
为了简化代码 我们把所有的代码都放在了一个servlet中,但是这并不会让你的代码显得臃肿,反而经过我们这套系统的简化,代码变得非常简洁,但是请注意我们在方法上写的注释,注意提交方式 并且在路径后拼接 type="需要操作的方法"**(非常重要)**
@WebServlet("/productServlet")
public class ProductServlet extends HttpServlet {
BookService bookService = new BookService();
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
//获取用户的提交方式
String type = request.getParameter("type");
//添加方法
if (type != null && "add".equals(type)) {
try {
this.add(request, response);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//查询方法
if (type != null && "query".equals(type)) {
try {
this.query(request, response);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//修改方法
if (type != null && "update".equals(type)) {
try {
this.update(request, response);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//删除方法
if (type != null && "delete".equals(type)) {
try {
this.delete(request, response);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//删除方法
if (type != null && "queryById".equals(type)) {
try {
this.queryById(request, response);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//批量删除
if (type != null && "delBath".equals(type)) {
try {
this.delBath(request, response);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
//根据id查询一条数据 get请求 拼接参数
private void queryById(HttpServletRequest request, HttpServletResponse response) throws IOException {
//获取id
String id = request.getParameter("id");
Book book = bookService.selectById(id);
response.getWriter().write(JSON.toJSONString(new RespResult(2000, book)));
}
//添加 post请求 对象 需要用工具类直接获取数据
public void add(HttpServletRequest request, HttpServletResponse response)
throws Exception {
Book book = JSONUtils.getInstance(request, Book.class);
int count = bookService.add(book);
if (count > 0) {
response.getWriter().write(JSON.toJSONString(new RespResult(2000, "添加成功")));
} else {
response.getWriter().write(JSON.toJSONString(new RespResult(5000, "添加失败")));
}
}
// 根据id删除 //get请求 参数拼接在路径后面
public void delete(HttpServletRequest request, HttpServletResponse response)
throws Exception {
String id = request.getParameter("id");
int count = bookService.delById(id);
if (count > 0) {
response.getWriter().write(JSON.toJSONString(new RespResult(2000, "操作成功")));
} else {
response.getWriter().write(JSON.toJSONString(new RespResult(5000, "操作失败")));
}
}
// 修改
public void update(HttpServletRequest request, HttpServletResponse response)
throws Exception {
Book book = JSONUtils.getInstance(request, Book.class);
int count = bookService.update(book);
if (count > 0) {
response.getWriter().write(JSON.toJSONString(new RespResult(2000, "操作成功")));
} else {
response.getWriter().write(JSON.toJSONString(new RespResult(5000, "操作失败")));
}
}
// 查询
public void query(HttpServletRequest request, HttpServletResponse response)
throws Exception {
//获取参数
Cond Cond = JSONUtils.getInstance(request, Cond.class);
//给分页插件设置 查询的当前页码 和 每页显示的条数
PageHelper.startPage(Cond.getPage(), Cond.getSize());
//根据条件进行查询
List list = bookService.selectByCond(Cond);
//把查询出来的数据放到PageInfo中 会自动计算 总页数 和总条数 (我们只需要把PageInfo返回就可以了)
PageInfo pageInfo = new PageInfo(list);
//返回数据
response.getWriter().write(JSON.toJSONString(new RespResult(2000, pageInfo)));
}
// 批量删除 post提交方式 需要传递过去一个数组对象
public void delBath(HttpServletRequest request, HttpServletResponse response)
throws Exception {
//获取id的集合
BufferedReader reader = request.getReader();
String s = reader.readLine();//{ids:[2,4,6]}
List strings = JSON.parseArray(s, String.class);
//批量删除
int count = bookService.delBatch(strings);
if (count > 0) {
response.getWriter().write(JSON.toJSONString(new RespResult(2000, "操作成功")));
} else {
response.getWriter().write(JSON.toJSONString(new RespResult(5000, "操作失败")));
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) {
doGet(request, response);
}
}
到此为止,我们的增删改查后台逻辑代码 就书写完毕,去postman中进行测试吧 当我们测试通过后,再去进行前端代码的开发
请相信 这不是最简单的代码,最优的代码永远在你的脑海中
第一步:把文件复制到webapp目录下
引入element.css element.js
vue.js axios.js 这些文件
element 中文组件官网:Element - The world's most popular Vue UI framework
你一共需要导入四部分
1.条件查询部分内容
2.列表展示部分内容
3.分页插件部分内容
4.添加/修改页面内容
script的基本模板
记得创建 所有的代码都写在div中