最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring Boot實現(xiàn)簡單的增刪改查

 更新時間:2020年09月01日 08:19:55   作者:Jackson  
這篇文章主要介紹了Spring Boot如何實現(xiàn)簡單的增刪改查,幫助大家更好的理解和學習spring boot框架,感興趣的朋友可以了解下

在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>

配置文件配置數(shù)據(jù)庫等

#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)
  #不用重啟服務器,網(wǎng)頁就能刷新
  spring.thymeleaf.cache=false 
  spring.thymeleaf.prefix=classpath:/templates/pages/
  spring.thymeleaf.suffix=.html

數(shù)據(jù)層添加相應注解實現(xiàn)sql語句(或者通過xml配置來實現(xiàn))

數(shù)據(jù)層封裝了商品信息,并提供get和set方法,為Goods類

1.查詢所有數(shù)據(jù)

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

2.按照id刪除數(shù)據(jù)

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

3.修改數(shù)據(jù)

(1)修改數(shù)據(jù)首先要新建一個界面,按照id查找內(nèi)容,并將查找到的內(nèi)容顯示到文本框內(nèi)

@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.新增數(shù)據(jù)

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

業(yè)務層提供對應接口方法和實現(xiàn)類

1.業(yè)務層接口

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

2.業(yè)務層實現(xiàn)類

@Service
public 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);
  }

控制層寫具體實現(xiàn)

1.跳轉(zhuǎn)到首頁并且查找所有商品

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

2.業(yè)務層實現(xiàn)類

@Service
public 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);
  }

控制層寫具體實現(xiàn)

1.跳轉(zhuǎn)到首頁并且查找所有商品

@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拿到的是從網(wǎng)頁上同樣叫id的數(shù)據(jù)
  public String dodeletebyId(@PathVariable Integer id){
    int delete = goodsDao.deleteById(id);
    //doGoodsUI前面沒有加/的話,跳轉(zhuǎn)的網(wǎng)址是替代了最后一個/后面的內(nèi)容
    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)實現(xiàn)修改

@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表示遍歷拿到的數(shù)組,goods是從控制層拿到的model的名字

3.id,name和remark與數(shù)據(jù)庫對應,date要格式化拿到數(shù)據(jù),該語法是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="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" th:href="@{/goods/doDeleteById(id=${g.id})}" rel="external nofollow" ><button>刪除</button></a></td>-->
    <td><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" th:href="@{/goods/doDeleteById/{doDeleteById}(doDeleteById=${g.id})}" rel="external nofollow" ><button>刪除</button></a></td>
    <td><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" th:href="@{/goods/doFindById/{id}(id=${g.id})}" rel="external nofollow" ><button>修改</button></a></td>
</tr>

4.新增商品界面

(1)標簽里的name屬性要和sql語句一致

(2)這里由于數(shù)據(jù)庫中的id列設置了自增長,所以不需要id屬性,createdTime列使用了now()獲取當前時間,所以也不需要傳值,所以在控制層的doUpdateGoods方法里可以使用封裝好的Goods來接收從html拿到的參數(shù)

<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這一列,但傳參數(shù)有需要一起傳送過去,所以添加了一個輸入框,默認設置為隱藏,將其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>

以上就是Spring Boot實現(xiàn)簡單的增刪改查的詳細內(nèi)容,更多關于Spring Boot增刪改查的資料請關注腳本之家其它相關文章!

相關文章

  • 關于@Query注解的用法(Spring Data JPA)

    關于@Query注解的用法(Spring Data JPA)

    這篇文章主要介紹了關于@Query注解的用法(Spring Data JPA),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • SSM框架通過mybatis-generator自動生成代碼(推薦)

    SSM框架通過mybatis-generator自動生成代碼(推薦)

    這篇文章主要介紹了SSM框架通過mybatis-generator自動生成代碼,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2017-11-11
  • 淺談使用setBounds()方法需要注意的地方

    淺談使用setBounds()方法需要注意的地方

    下面小編就為大家?guī)硪黄獪\談使用setBounds()方法需要注意的地方。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • springboot集成開發(fā)實現(xiàn)商場秒殺功能

    springboot集成開發(fā)實現(xiàn)商場秒殺功能

    這篇文章主要介紹了springboot集成實現(xiàn)商品秒殺功能,秒殺系統(tǒng)業(yè)務流程,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-12-12
  • Java分布式學習之Kafka消息隊列

    Java分布式學習之Kafka消息隊列

    Kafka是由Apache軟件基金會開發(fā)的一個開源流處理平臺,由Scala和Java編寫。Kafka是一種高吞吐量的分布式發(fā)布訂閱消息系統(tǒng),它可以處理消費者在網(wǎng)站中的所有動作流數(shù)據(jù)
    2022-07-07
  • Gradle build 報錯:Received status code 400 from server

    Gradle build 報錯:Received status code 400 from server

    這篇文章主要介紹了Gradle build 報錯:Received status code 400 from server,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-07-07
  • java抓取網(wǎng)頁或文件中的郵箱號碼

    java抓取網(wǎng)頁或文件中的郵箱號碼

    這篇文章主要為大家詳細介紹了java如何抓取網(wǎng)頁或文件中的郵箱號碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • java單例五種實現(xiàn)模式解析

    java單例五種實現(xiàn)模式解析

    這篇文章主要介紹了java單例五種實現(xiàn)模式解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-09-09
  • Java數(shù)組擴容實例代碼

    Java數(shù)組擴容實例代碼

    這篇文章主要介紹了Java數(shù)組擴容實例代碼,具有一定借鑒價值,需要的朋友可以參考下
    2017-11-11
  • Spring Boot 之HelloWorld開發(fā)案例

    Spring Boot 之HelloWorld開發(fā)案例

    這篇文章主要介紹了Spring Boot 之HelloWorld開發(fā)案例,需要的朋友可以參考下
    2017-04-04

最新評論

偏关县| 扎囊县| 蒙阴县| 千阳县| 乌恰县| 滨州市| 古丈县| 科技| 团风县| 伊金霍洛旗| 玉龙| 北碚区| 阜康市| 禄丰县| 大埔县| 鹿邑县| 宜章县| 建平县| 遂昌县| 莎车县| 郧西县| 呼伦贝尔市| 建昌县| 曲松县| 枞阳县| 乌苏市| 长岛县| 体育| 商城县| 城步| 蒙阴县| 裕民县| 江阴市| 沙坪坝区| 通化县| 固阳县| 西华县| 清水县| 洱源县| 高阳县| 苍南县|