在pom.xml增加相应的依赖

<dependencies>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter</artifactId>        </dependency>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-jdbc</artifactId>        </dependency>        <dependency>            <groupId>mysql</groupId>            <artifactId>mysql-connector-java</artifactId>            <scope>runtime</scope>        </dependency>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-test</artifactId>            <scope>test</scope>            <exclusions>                <exclusion>                    <groupId>org.junit.vintage</groupId>                    <artifactId>junit-vintage-engine</artifactId>                </exclusion>            </exclusions>        </dependency>        <dependency>            <groupId>org.mybatis.spring.boot</groupId>            <artifactId>mybatis-spring-boot-starter</artifactId>            <version>2.1.3</version>        </dependency>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-web</artifactId>        </dependency>        <!-- 前端应用thymeleaf来代替jsp -->        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-thymeleaf</artifactId>        </dependency>    </dependencies>

配置文件配置数据库等

#server    server.port=80    #我的项目名:server.servlet.context-path    #spring dataSource    spring.datasource.url=jdbc:mysql:///dbgoods?serverTimezone=GMT%2B8&characterEncoding=utf8    spring.datasource.username=root    spring.datasource.password=root    mybatis.mapper-locations=classpath:/mapper/*/*.xml    #spring log    logging.level.com.cy=debug    #spring thymeleaf(如果没有配置也会默认配置,在默认配置中prefix默认值为classpath:/templates/,后缀默认为.html)    #不必重启服务器,网页就能刷新    spring.thymeleaf.cache=false     spring.thymeleaf.prefix=classpath:/templates/pages/    spring.thymeleaf.suffix=.html

数据层增加相应注解实现sql语句(或者通过xml配置来实现)

数据层封装了商品信息,并提供get和set办法,为Goods类

1.查问所有数据

    @Select("select * from tb_goods")    List<Goods> findAll();

2.依照id删除数据

    @Delete("delete from tb_goods where id=#{id}")    int deleteById(Integer id);

3.批改数据
(1)批改数据首先要新建一个界面,依照id查找内容,并将查找到的内容显示到文本框内

    @Select("select * from tb_goods where id=#{id}")    Goods findById(Integer id);

(2)再增加查找的办法

    @Update("update tb_goods set name=#{name},remark=#  {remark},createdTime=now() where id=#{id}")    int update(Goods goods);

4.新增数据

    @Insert("insert into tb_goods(name,remark,createdTime) values (#{name},#{remark},now())")    int add(Goods goods);

业务层提供对应接口办法和实现类

1.业务层接口

public interface GoodsService {    List<Goods> findObject();    int add(Goods goods);    int update(Goods goods);    Goods findById(Integer id);}

2.业务层实现类

@Servicepublic class GoodsServiceImpl implements GoodsService {    @Autowired    private GoodsDao goodsDao;    @Override    public List<Goods> findObject() {        long start=System.currentTimeMillis();        List<Goods> list = goodsDao.findObjects();        long end=System.currentTimeMillis();        System.out.println("query time:"+(end-start));        return list;    }    @Override    public int add(Goods goods) {        return goodsDao.add(goods);    }    @Override    public int update(Goods goods) {        return goodsDao.update(goods);    }    @Override    public Goods findById(Integer id) {        return goodsDao.findById(id);    }

管制层写具体实现

1.跳转到首页并且查找所有商品

@RequestMapping("doGoodsUI")    public String doGoodsUI(Model model) {        List<Goods> list = goodsService.findObject();        model.addAttribute("goods",list);        return "goods";        }

2.删除商品

@RequestMapping("doDeleteById/{id}")//    (@PathVariable Integer id)通知服务器,id拿到的是从网页上同样叫id的数据    public String dodeletebyId(@PathVariable Integer id){        int delete = goodsDao.deleteById(id);        //doGoodsUI后面没有加/的话,跳转的网址是代替了最初一个/前面的内容        return "redirect:/goods/doGoodsUI";    }

3.批改商品
(1)先将查找进去的商品显示在文本框中

@RequestMapping("doFindById/{id}")    public String doFindByID(@PathVariable Integer id,Model model){        Goods goods = goodsService.findById(id);        model.addAttribute("goods",goods);        return "goods-update";    }

(2)实现批改

@RequestMapping("doUpdateGoods")    public String doUpdateGoods(Goods goods){         goodsService.update(goods);        return "redirect:/goods/doGoodsUI";    }

4.新增商品

@RequestMapping("doSaveGoods")    public String doSaveGoods(Goods goods){        goodsService.add(goods);        return "redirect:/goods/doGoodsUI";    }

前端采纳html+thymeleaf模板代替jsp

1.thymeleaf的语法参考:https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html#link-urls
2.each示意遍历拿到的数组,goods是从管制层拿到的model的名字
3.id,name和remark与数据库对应,date要格式化拿到数据,该语法是thymeleaf固定写法

<tr th:each="g:${goods}">        <td th:text="${g.id}">1</td>        <td th:text="${g.name}">AAAAAAA</td>        <td th:text="${g.remark}">aa</td>        <td th:text="${#dates.format(g.createdTime,'yyyy-MM-dd HH:mm')}">aa</td><!--        <td><a href="#" th:href="@{/goods/doDeleteById(id=${g.id})}"><button>删除</button></a></td>-->        <td><a href="#" th:href="@{/goods/doDeleteById/{doDeleteById}(doDeleteById=${g.id})}"><button>删除</button></a></td>        <td><a href="#" th:href="@{/goods/doFindById/{id}(id=${g.id})}"><button>批改</button></a></td></tr>

4.新增商品界面
(1)标签里的name属性要和sql语句统一
(2)这里因为数据库中的id列设置了自增长,所以不须要id属性,createdTime列应用了now()获取以后工夫,所以也不须要传值,所以在管制层的doUpdateGoods办法里能够应用封装好的Goods来接管从html拿到的参数

<form th:action="@{/goods/doSaveGoods}" method="post">    <ul>        <li>name:<input type="text" name="name"></li>        <li>remark:<textarea rows="3" cols="20" name="remark"></textarea></li>        <li><input type="submit" value="Save Goods"></li>    </ul></form>

5.批改商品界面
(1)因为id列自增长,所以批改商品信息不须要id这一列,但传参数有须要一起传送过来,所以增加了一个输入框,默认设置为暗藏,将其value设置为id的值

<form th:action="@{/goods/doUpdateGoods}" method="post">    <input type="hidden" name="id" th:value="${goods.id}">    <ul>        <li>name:<input type="text" name="name" th:value="${goods.name}"></li>        <li>remark:<textarea rows="3" cols="20" name="remark" th:text="${goods.remark}"></textarea></li>        <li><input type="submit" value="Update Goods"></li>    </ul></form>