日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Spring Boot實現簡單的增刪改查

瀏覽:28日期:2022-08-25 17:28:25

在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.業務層實現類

@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='http://m.b3g6.com/bcjs/6118.html#' rel='external nofollow' rel='external nofollow' rel='external nofollow' th:href='http://m.b3g6.com/bcjs/@{/goods/doDeleteById(id=${g.id})}' rel='external nofollow' ><button>刪除</button></a></td>--> <td><a href='http://m.b3g6.com/bcjs/6118.html#' rel='external nofollow' rel='external nofollow' rel='external nofollow' th:href='http://m.b3g6.com/bcjs/@{/goods/doDeleteById/{doDeleteById}(doDeleteById=${g.id})}' rel='external nofollow' ><button>刪除</button></a></td> <td><a href='http://m.b3g6.com/bcjs/6118.html#' rel='external nofollow' rel='external nofollow' rel='external nofollow' th:href='http://m.b3g6.com/bcjs/@{/goods/doFindById/{id}(id=${g.id})}' rel='external nofollow' ><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>

以上就是Spring Boot實現簡單的增刪改查的詳細內容,更多關于Spring Boot增刪改查的資料請關注好吧啦網其它相關文章!

標簽: Spring
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
麻豆一区二区三| 久久三级视频| 欧美日韩国产一区精品一区| 日韩欧美不卡| 中文一区一区三区高中清不卡免费| 国产精品白丝一区二区三区| 国产精品香蕉| 久久精品日韩欧美| 国产高潮在线| 亚洲黄色免费av| 久久久人人人| 1024精品一区二区三区| 亚洲一级少妇| 久久婷婷av| 激情综合激情| 野花国产精品入口| 亚洲精品乱码日韩| 91伊人久久| 欧美激情精品| 日韩电影免费网址| 国产一区亚洲| 久久亚洲二区| 91久久精品无嫩草影院| 国产精品.xx视频.xxtv| 国产成人久久精品麻豆二区| 精品三级久久| 99国产一区| 亚洲一区二区免费在线观看| 日本中文字幕一区二区视频 | 日本а中文在线天堂| 久久91导航| 亚洲一区观看| 奇米777国产一区国产二区| 国产精品极品国产中出| 伊伊综合在线| 热久久免费视频| 国产精品一级| 日韩三区免费| 亚洲最新av| 免费一级欧美片在线观看网站| 欧美好骚综合网| 欧美美女一区| 日本va欧美va欧美va精品| 丁香婷婷久久| 99在线|亚洲一区二区| 日韩国产在线不卡视频| 成人一区不卡| 日韩网站在线| 国产精品地址| 久久国产电影| 欧美精品三级在线| 日韩国产一区二区三区| 免费人成在线不卡| 激情中国色综合| 先锋亚洲精品| 国产精品综合色区在线观看| 中文在线中文资源| 亚洲人成亚洲精品| 中文字幕成在线观看| 丝袜美腿高跟呻吟高潮一区| 九九九精品视频| 久久国产精品毛片| 精品国产黄a∨片高清在线| 亚洲一区不卡| 久久久久免费| 91伊人久久| 影音国产精品| 国产成人久久| 日韩激情视频网站| 国产99久久| 欧美日韩91| 欧美色图国产精品| 国产乱人伦精品一区| 国产综合亚洲精品一区二| 国产精品欧美在线观看| 国产亚洲精品v| 国产一区二区三区四区| 亚洲精品女人| 一本一道久久a久久精品蜜桃| 美女视频黄免费的久久| 中文字幕成人| 欧美精品一区二区三区精品| 精品久久影院| 日韩一区二区三区免费视频| 亚洲视频综合| 卡一精品卡二卡三网站乱码| 日韩精品一卡二卡三卡四卡无卡| 三级在线看中文字幕完整版| 国产欧美日韩在线观看视频| 日韩午夜电影| 91精品亚洲| 精品国产91| 国产亚洲欧美日韩精品一区二区三区 | 亚洲一区日本| 免费高潮视频95在线观看网站| 日韩av中文字幕一区| 999国产精品999久久久久久| 久久免费视频66| 日本免费新一区视频| 亚洲一区黄色| 午夜日韩在线| 香蕉成人av| 国产一区二区三区免费在线| 国产欧美日韩精品一区二区免费| 亚洲一区二区三区四区电影 | 亚洲综合不卡| 婷婷综合社区| 日韩伦理在线一区| 久久精品国产99| 国产欧美自拍| 欧美日韩一区二区三区不卡视频 | 欧美日韩水蜜桃| 亚洲免费福利| 国产精品蜜芽在线观看| 老色鬼精品视频在线观看播放| 日本不卡视频一二三区| 伊人精品久久| 玖玖玖国产精品| 国产毛片久久| 丝袜美腿亚洲色图| 男人操女人的视频在线观看欧美| 国产免费成人| 久久高清免费观看| 一区二区精品| 天堂精品久久久久| 日韩中文字幕无砖| 日本aⅴ亚洲精品中文乱码| 日韩一区二区三区高清在线观看| 日韩一区二区三区免费视频| 97精品资源在线观看| 国产精品最新| 国产成人精品免费视| 成人国产精品一区二区免费麻豆| 韩国女主播一区二区三区| 亚洲黄色免费看| 欧美性感美女一区二区| 女人天堂亚洲aⅴ在线观看| 久久激情婷婷| 亚洲精品午夜av福利久久蜜桃| 亚洲深夜av| 亚洲三级在线| 国产日韩一区二区三区在线播放| 国产美女撒尿一区二区| 国产精品一区毛片| 国产精品videossex久久发布| 欧美黑人做爰爽爽爽| 精品视频亚洲| 日韩精品dvd| 亚洲黑丝一区二区| 免费国产自线拍一欧美视频| 午夜电影一区| 久久99久久久精品欧美| 日韩精品2区| 尹人成人综合网| 日韩免费精品| 久久亚洲人体| 久久天堂av| 午夜在线一区| 国产精品色婷婷在线观看| 欧美国产偷国产精品三区| 精品欧美久久| 午夜精品成人av| 亚洲性色av| 免费日韩一区二区| 亚州av日韩av| 日韩av中文在线观看| 色婷婷狠狠五月综合天色拍| 国产日韩高清一区二区三区在线 | 国产精品视频一区视频二区| 久久国产中文字幕| 在线看片不卡| 亚洲一区二区免费看| 狠狠干综合网| 午夜在线视频观看日韩17c| 视频一区二区不卡| 亚洲毛片视频| 国产精品中文字幕亚洲欧美| 日韩精品一区二区三区av| 91成人精品在线| 久久婷婷丁香| 日韩有吗在线观看| 97人人精品| 亚洲啊v在线免费视频| 精品国产网站| 另类激情亚洲| 久久精品国产999大香线蕉| 日韩在线欧美| 日韩不卡在线观看日韩不卡视频| 捆绑调教日本一区二区三区| 老色鬼久久亚洲一区二区| 久久中文字幕一区二区三区| 午夜电影亚洲| 麻豆精品新av中文字幕| 好吊视频一区二区三区四区| 国产精品日韩精品中文字幕| 亚洲一区二区三区高清不卡| 美女精品久久| 在线国产精品一区| av高清一区| 国产精品任我爽爆在线播放|