准备环境
1.创建新的模块brand-demo,引入坐标
org.mybatis
mybatis
3.5.5
mysql
mysql-connector-java
5.1.46
javax.servlet
javax.servlet-api
3.1.0
provided
javax.servlet.jsp
jsp-api
2.2
provided
jstl
jstl
1.2
taglibs
standard
1.1.2
org.apache.tomcat.maven
tomcat7-maven-plugin
2.2
UTF-8
9
9
2.创建三层架构的包结构、
3.创建表
-- 删除tb_brand表
drop table if exists tb_brand;
-- 创建tb_brand表
create table tb_brand
(
-- id 主键
id int primary key auto_increment,
-- 品牌名称
brand_name varchar(20),
-- 企业名称
company_name varchar(20),
-- 排序字段
ordered int,
-- 描述信息
description varchar(100),
-- 状态:0:禁用 1:启用
status int
);
-- 添加数据
insert into tb_brand (brand_name, company_name, ordered, description, status)
values ('三只松鼠', '三只松鼠股份有限公司', 5, '好吃不上火', 0),
('华为', '华为技术有限公司', 100, '华为致力于把数字世界带入每个人、每个家庭、每个组织,构建万物互联的智能世界', 1),
('小米', '小米科技有限公司', 50, 'are you ok', 1);
SELECT * FROM tb_brand;
4.brand实体类
添加到pojo包中
package com.aiit.pojo;
/**
* 品牌实体类
*/
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 Brand() {
}
public Brand(Integer id, String brandName, String companyName, String description) {
this.id = id;
this.brandName = brandName;
this.companyName = companyName;
this.description = description;
}
public Brand(Integer id, String brandName, String companyName, Integer ordered, String description, Integer status) {
this.id = id;
this.brandName = brandName;
this.companyName = companyName;
this.ordered = ordered;
this.description = description;
this.status = status;
}
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 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 +
'}';
}
}
5.Mybits基础环境
Mybits-config.xml
BrandfMapper.xml
BrandMapper接口
package com.aiit.mapper;
public interface BrandMapper {
}
具体实现:
1.创建一个index.html文件
查询所有
2.完成数据访问层的设计
写一个BrandMapper接口
//查询所有
@Select("select * from tb_brand")
@ResultMap("brandResultMap")
List selectAll();
在BrandMapper.xml中添加
在util包下创建一个工具类SqlSessionFactoryUtils
用来减少代码的冗余
public class SqlSessionFactoryUtils {
private static SqlSessionFactory sqlSessionFactory;
static {
//静态代码块会随着类的加载而自动执行,且只执行一次
try {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
public static SqlSessionFactory getSqlSessionFactory(){
return sqlSessionFactory;
}
}
3.完成业务逻辑层的设计
在Service包下创建BrandService
public class BrandService {
//调用BrandMapper中的selectAll()
SqlSessionFactory factory= SqlSessionFactoryUtils.getSqlSessionFactory();
public List selectAll(){
//获取sqlSession
SqlSession sqlSession = factory.openSession();
BrandMapper mapper = sqlSession.getMapper(BrandMapper.class);
//调用方法
List brands = mapper.selectAll();
sqlSession.close();
return brands;
}
}
4.表现层的设计
在web包下创建selectAllServlet
@WebServlet("/selectAllServlet")
public class selectAllServlet extends HttpServlet {
BrandService brandService = new BrandService();
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1.调用BrandService完成查询
List brands = brandService.selectAll();
//2,存入request域中
request.setAttribute("brands",brands);
//3.转发
request.getRequestDispatcher("/brand.jsp").forward(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
}
创建一个brand.jsp文件在webapp包下
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
Title
序号
品牌名称
企业名称
排序
品牌介绍
状态
操作
${status.index}
${brand.brandName}
${brand.companyName}
${brand.ordered}
${brand.description}
${brand.status}
修改 删除
运行结果:
1.准备一个添加页面
addBrand.jsp
<%--
Created by IntelliJ IDEA.
User: Administrator
Date: 2022/7/9
Time: 15:32
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
添加品牌
添加品牌
2.在BrandMapper接口中定义一个添加方法
//添加
@Insert("insert into tb_brand values(null,#{brandName},#{companyName},#{ordered},#{description},#{status})")
void add(Brand brand);
3.在BrandService中调用BrandMapper中的add()
//添加
public void add(Brand brand){
SqlSession sqlSession = factory.openSession();
BrandMapper mapper = sqlSession.getMapper(BrandMapper.class);
mapper.add(brand);
//提交事务
sqlSession.commit();
sqlSession.close();
}
4.新建一个Servlet命名为selectAllServlet
@WebServlet("/selectAllServlet")
public class selectAllServlet extends HttpServlet {
BrandService brandService = new BrandService();
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1.调用BrandService完成查询
List brands = brandService.selectAll();
//2,存入request域中
request.setAttribute("brands",brands);
//3.转发
request.getRequestDispatcher("/brand.jsp").forward(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
}
5.在brand中
当点击新增按钮时跳转到addBrand.jsp页面
使用js实现
设置按钮的id
写JS
运行结果:
点击新增
填入信息后点击提交
1.在BrandMapper接口中定义一个通过id查询的方法
//根据id查询
@Select("select * from tb_brand where id=#{id}")
@ResultMap("brandResultMap")
Brand selectById(int id);
2.在BrandService中调用BrandMapper中的selectById()
//根据id查询
public Brand selectById(int id){
SqlSession sqlSession = factory.openSession();
BrandMapper mapper = sqlSession.getMapper(BrandMapper.class);
//调用方法
Brand brand = mapper.selectById(id);
sqlSession.close();
return brand;
}
3.获取点击的id
在brand.jsp中修改,修改按钮的herf 增加一个id=${brand.id}
4.新建一个Servlet命名为selectByIdServlet()
@WebServlet("/selectByIdServlet")
public class selectByIdServlet extends HttpServlet {
private BrandService service=new BrandService();
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1.接受id
String id = request.getParameter("id");
//2.调用service查询
Brand brand = service.selectById(Integer.parseInt(id));
//3.存储到requst中
request.setAttribute("brand",brand);
//4.转发到update.jsp中
request.getRequestDispatcher("/update.jsp").forward(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
}
5.准备一个页面为update.jsp
<%--
Created by IntelliJ IDEA.
User: Administrator
Date: 2022/7/9
Time: 15:32
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
修改品牌
修改品牌
效果展示:
点击修改
跳转到update.jsp页面
1.修改update.jsp表单的提交路径
2.在BrandMapper接口中写一个update的sql
//修改
@Update("update tb_brand set brand_name=#{brandName},company_name=#{companyName},ordered=#{ordered},description=#{description},status=#{status} where id=#{id}")
void update(Brand brand);
3.在BrandService中调用BrandMapper中的update()
//修改
public void update(Brand brand){
SqlSession sqlSession = factory.openSession();
BrandMapper mapper = sqlSession.getMapper(BrandMapper.class);
mapper.update(brand);
//提交事务
sqlSession.commit();
sqlSession.close();
}
4.新建一个Servlet命名为updateServlet()
@WebServlet("/updateServlet")
public class updateServlet extends HttpServlet {
private BrandService service=new BrandService();
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//设置乱码问题
request.setCharacterEncoding("UTF-8");
String id = request.getParameter("id");
String brandName = request.getParameter("brandName");
String companyName = request.getParameter("companyName");
String ordered = request.getParameter("ordered");
String description = request.getParameter("description");
String status = request.getParameter("status");
//封装对象
Brand brand=new Brand();
brand.setId(Integer.parseInt(id));
brand.setBrandName(brandName);
brand.setCompanyName(companyName);
brand.setOrdered(Integer.parseInt(ordered));
brand.setDescription(description);
brand.setStatus(Integer.parseInt(status));
//调用service完成修改
service.update(brand);
//转发到查询所有的servlet
request.getRequestDispatcher("/selectAllServlet").forward(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request,response);
}
}
效果展示:
点击修改按钮
修改排序为1
提交
1,修改brand.jsp
修改删除的href,加上获取id
2.在mapper中写sql
//删除
@Delete("delete from tb_brand where id=#{id}")
void delete(int id);
3. 在BrandService中调用BrandMapper中的delete()
//删除
public void delete(int id){
SqlSession sqlSession = factory.openSession();
BrandMapper mapper = sqlSession.getMapper(BrandMapper.class);
mapper.delete(id);
sqlSession.commit();
sqlSession.close();
}
4.新建一个Servlet命名为deleteServlet()
@WebServlet("/deleteServlet")
public class deleteServlet extends HttpServlet {
private BrandService service=new BrandService();
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//设置乱码问题
request.setCharacterEncoding("UTF-8");
String id = request.getParameter("id");
//封装对象
//调用service完成修改
service.delete(Integer.parseInt(id));
//转发到查询所有的servlet
request.getRequestDispatcher("/selectAllServlet").forward(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request,response);
}
}
效果展示:
点击删除后