一、我的项目形容

实现品牌数据的增删改查操作

二、环境筹备

2.1、创立新的模块 brand_demo,在pom.xml中引入我的项目须要坐标    2.1.1、依赖:mybatis、mysql、servlet、jsp-api、    2.2.2、插件:tomcat7-maven-plugin

2.2、创立三层架构的包构造:三层架构是将咱们的我的项目分成了三个层面,别离是:体现层 、业务逻辑层 、数据拜访层。        1、数据拜访层(web/controller):对数据库的CRUD基本操作        2、业务逻辑层(service):对业务逻辑进行封装,组合数据拜访层层中基本功能,造成简单的业务逻辑性能。                      例如注册业务性能 ,咱们会先调用数据拜访层的 selectByName() 办法判断该用户名是否存在,如果不存在再调用数据拜访层的insert()办法进行数据的增加操作        3、体现层(mapper/dao):接管申请,封装数据,调用业务逻辑层,响应数据



2.3、数据库表 tb_brand


2.4、实体类 Brand


2.5、MyBatis 根底环境        Mybatis-config.xml        BrandMapper.xml        BrandMapper接口

三、增删改查

3.1、查问所有操作    3.1.1、流程图


    3.1.2、编写BrandMapper:在mapper包下创立创立BrandMapper接口,在接口中定义 selectAll()办法        /**        * 查问所有        * @return        */        @Select("select * from tb_brand")        List<Brand> selectAll();

    3.1.3、编写工具类:在 com.itheima 包下创立 utils 包,并在该包下创立名为 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.1.4、 编写BrandService:在service包下创立BrandService类        public class BrandService {            SqlSessionFactory factory = SqlSessionFactoryUtils.getSqlSessionFactory();            /**            * 查问所有            * @return            */            public List<Brand> selectAll(){                //调用BrandMapper.selectAll()                //2. 获取SqlSession                SqlSession sqlSession = factory.openSession();                //3. 获取BrandMapper                BrandMapper mapper = sqlSession.getMapper(BrandMapper.class);                //4. 调用办法                List<Brand> brands = mapper.selectAll();                sqlSession.close();                return brands;            }        }

    3.1.5、 编写Servlet        在 web 包下创立名为 SelectAllServlet 的 servlet ,该 servlet 的逻辑如下:            1、调用 BrandService 的 selectAll() 办法进行业务逻辑解决,并接管返回的后果            2、将上一步返回的后果存储到 request 域对象中            3、跳转到 brand.jsp 页面进行数据的展现        @WebServlet("/selectAllServlet")        public class SelectAllServlet extends HttpServlet {            private BrandService service = new BrandService();            @Override            protected void doGet(HttpServletRequest request, HttpServletResponse response) throwsServletException, IOException {                //1. 调用BrandService实现查问                List<Brand> brands = service.selectAll();                //2. 存入request域中                request.setAttribute("brands",brands);                //3. 转发到brand.jsp                request.getRequestDispatcher("/brand.jsp").forward(request,response);            }            @Override            protected void doPost(HttpServletRequest request, HttpServletResponse response)throwsServletException, IOException {                    this.doGet(request, response);            }        }

    3.1.6、 编写brand.jsp页面    <%--有坑,要设置isELIgnored="false" 不然无奈解析brands,${brands}只会被当成字符输入--%>    <%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>    <!DOCTYPE html>    <html lang="en">    <head>        <meta charset="UTF-8">        <title>Title</title>    </head>    <body>    <input type="button" value="新增" id = "add"><br>    <hr>    <table border="1" cellspacing="0" width="80%">        <tr>            <th>序号</th>            <th>品牌名称</th>            <th>企业名称</th>            <th>排序</th>            <th>品牌介绍</th>            <th>状态</th>            <th>操作</th>        </tr>        <c:forEach items="${brands}" var="brand" varStatus="status ">            <tr align="center">                <td>${brand.id}</td>                <%--<td>${status.count}</td>--%>                <td>${brand.brandName}</td>                <td>${brand.companyName}</td>                <td>${brand.ordered}</td>                <td>${brand.description}</td>                <c:if test="${brand.status == 1}">                    <td>启用</td>                </c:if>                <c:if test="${brand.status != 1}">                    <td>禁用</td>                </c:if>                <td><a href="/brand_demo/selectByIdServlet?id=${brand.id}">批改</a> <a href="#">删除</a></td>            </tr>        </c:forEach>    </table>    <script>        document.getElementById("add").onclick = function (){            location.href = "/brand_demo/addBrand.jsp";        }    </script>    </body>    </html>