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

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

Spring boot2+jpa+thymeleaf實現增刪改查

瀏覽:178日期:2023-09-09 10:12:53

一、pom.xml引入相關模塊web、jpa、thymeleaf、oracle:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc8</artifactId> <version>12.2.0.1</version> </dependency>

二、application.properties配置

server.port = 9001spring.datasource.driver-class-name = oracle.jdbc.driver.OracleDriverspring.datasource.url = jdbc:oracle:thin:@127.0.0.1:1521:testdbspring.datasource.username = devspring.datasource.password = devspring.jpa.hibernate.ddl-auto = updatespring.jpa.show-sql = truespring.thymeleaf.cache = false

說明:

1、由于本機的8080已經被使用,修改一下端口號為9001。

2、hibernate.hbm2ddl.auto參數有四個值:

create: 每次加載hibernate時都會刪除上一次的生成的表,然后根據你的model類再重新來生成新表,哪怕兩次沒有任何改變也要這樣執行,這就是導致數據庫表數據丟失的一個重要原因。

create-drop :每次加載hibernate時根據model類生成表,但是sessionFactory一關閉,表就自動刪除。

update:最常用的屬性,第一次加載hibernate時根據model類會自動建立起表的結構(前提是先建立好數據庫),以后加載hibernate時根據 model類自動更新表結構,即使表結構改變了但表中的行仍然存在不會刪除以前的行。要注意的是當部署到服務器后,表結構是不會被馬上建立起來的,是要等 應用第一次運行起來后才會。validate :每次加載hibernate時,驗證創建數據庫表結構,只會和數據庫中的表進行比較,不會創建新表,但是會插入新值。

3、show-sql 是否打印出自動生產的SQL,方便調試的時候查看

4、propertiesspring.thymeleaf.cache=false是關閉thymeleaf的緩存,不然在開發過程中修改頁面不會立刻生效需要重啟,生產可配置為true。

三、啟動類需要添加Servlet的支持

package com.example.demo;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.boot.builder.SpringApplicationBuilder;import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;@SpringBootApplicationpublic class DemoApplication extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(DemoApplication.class); } public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); }}

四、數據庫層代碼

1、實體類映射數據庫表

package com.example.demo.entity;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.Table;import javax.validation.constraints.NotEmpty;import org.hibernate.validator.constraints.Length;@Entity@Table(name = 'userinfo')public class User { @Id @GeneratedValue private long id; @Column(nullable = false, unique = true) @NotEmpty(message='用戶名不能為空') private String userName; @Column(nullable = false) @NotEmpty(message='密碼不能為空') @Length(min=6, message='密碼長度不能少于6位') private String password; @Column(nullable = false) private int age; //必須有構造 public User() { } public long getId() { return id; } public User setId(long id) { this.id = id; return this; } public String getUserName() { return userName; } public User setUserName(String userName) { this.userName = userName; return this; } public String getPassword() { return password; } public User setPassword(String password) { this.password = password; return this; } public int getAge() { return age; } public User setAge(int age) { this.age = age; return this; }}

2、繼承JpaRepository類會自動實現很多內置的方法

package com.example.demo.repository;import org.springframework.data.jpa.repository.JpaRepository;import com.example.demo.entity.User;public interface UserRepository extends JpaRepository<User, Long> { User findById(long id); void deleteById(Long id);}

五、業務層

service調用jpa實現相關的增刪改查,實際項目中service層處理具體的業務代碼。

1、UserService.java

package com.example.demo.service;import java.util.List;import org.springframework.data.domain.Page;import org.springframework.data.domain.Pageable;import com.example.demo.entity.User;public interface UserService { public Page<User> getUserPage(Pageable pageable); public List<User> getUserList(); public User findUserById(long id); public void save(User user); public void edit(User user); public void delete(long id);}

2、UserServiceImpl.java

package com.example.demo.service.impl;import java.util.List;import java.util.Optional;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.domain.Page;import org.springframework.data.domain.Pageable;import org.springframework.stereotype.Service;import com.example.demo.entity.User;import com.example.demo.repository.UserRepository;import com.example.demo.service.UserService;@Servicepublic class UserServiceImpl implements UserService { @Autowired private UserRepository userRepository; @Override public Page<User> getUserPage(Pageable pageable) { return userRepository.findAll(pageable); } @Override public List<User> getUserList() { return userRepository.findAll(); } @Override public User findUserById(long id) { return userRepository.findById(id) ; } @Override public void save(User user) { userRepository.save(user); } @Override public void edit(User user) { userRepository.save(user); } @Override public void delete(long id) { userRepository.deleteById(id); }}

六、控制層

package com.example.demo.web.controller;import java.util.List;import javax.annotation.Resource;import javax.validation.Valid;import org.springframework.data.domain.Page;import org.springframework.data.domain.PageRequest;import org.springframework.data.domain.Pageable;import org.springframework.data.domain.Sort;import org.springframework.data.domain.Sort.Direction;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.validation.BindingResult;import org.springframework.validation.ObjectError;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.ResponseBody;import com.example.demo.entity.User;import com.example.demo.service.UserService;@Controllerpublic class UserController { @Resource UserService userService; @RequestMapping('/') public String index() { return 'redirect:/list'; } @RequestMapping('/list') public String list(Model model) { List<User> users=userService.getUserList(); model.addAttribute('users', users);/*int page=1,size=2; Sort sort = new Sort(Direction.DESC, 'id'); Pageable pageable = PageRequest.of(page, size, sort); model.addAttribute('users', pageable);*/return 'user/list'; } @RequestMapping('/toAdd') public String toAdd() { return 'user/userAdd'; } @RequestMapping('/add') public @ResponseBody User add(@Valid User user, BindingResult result) { if (result.hasErrors()) { List<ObjectError> list = result.getAllErrors(); for (ObjectError error : list) {System.out.println(error.getDefaultMessage()); } return null; } userService.save(user); return user; } @RequestMapping('/toEdit') public String toEdit(Model model,Long id) { User user=userService.findUserById(id); model.addAttribute('user', user); return 'user/userEdit'; } @RequestMapping('/edit') public String edit(User user) { userService.edit(user); return 'redirect:/list'; } @RequestMapping('/delete') public String delete(Long id) { userService.delete(id); return 'redirect:/list'; }}

七、頁面

1、列表頁 list.hmtl

<!DOCTYPE html><html lang='en' xmlns:th='http://www.thymeleaf.org'><head> <meta charset='UTF-8'/> <title>userList</title> <link rel='stylesheet' th:href='http://m.b3g6.com/bcjs/@{/css/bootstrap.css}' rel='external nofollow' rel='external nofollow' rel='external nofollow' ></link></head><body class='container'><br/><h1>用戶列表</h1><br/><br/><div class='with:80%'> <table class='table table-hover'> <thead> <tr> <th>#</th> <th>User Name</th> <th>Password</th> <th>Age</th> <th>Edit</th> <th>Delete</th> </tr> </thead> <tbody> <tr th:each='user : ${users}'> <th scope='row' th:text='${user.id}'>1</th> <td th:text='${user.userName}'>neo</td> <td th:text='${user.password}'>Otto</td> <td th:text='${user.age}'>6</td> <td><a th:href='http://m.b3g6.com/bcjs/@{/toEdit(id=${user.id})}' rel='external nofollow' >edit</a></td> <td><a th:href='http://m.b3g6.com/bcjs/@{/delete(id=${user.id})}' rel='external nofollow' >delete</a></td> </tr> </tbody> </table></div><div class='form-group'> <div class='col-sm-2 control-label'> <a href='http://m.b3g6.com/toAdd' rel='external nofollow' rel='external nofollow' th:href='http://m.b3g6.com/bcjs/@{/toAdd}' rel='external nofollow' class='btn btn-info'>add</a> </div></div></body></html>

Spring boot2+jpa+thymeleaf實現增刪改查

2、新增頁 userAdd.html

<!DOCTYPE html><html lang='en' xmlns:th='http://www.thymeleaf.org'><head> <meta charset='UTF-8'/> <title>user</title> <link rel='stylesheet' th:href='http://m.b3g6.com/bcjs/@{/css/bootstrap.css}' rel='external nofollow' rel='external nofollow' rel='external nofollow' ></link></head><body class='container'><br/><h1>添加用戶</h1><br/><br/><div class='with:80%'> <form th:action='@{/add}' method='post'> <div class='form-group'> <label for='userName' class='col-sm-2 control-label'>userName</label> <div class='col-sm-10'><input type='text' name='userName' placeholder='userName'/> </div> </div> <div class='form-group'> <label for='password' >Password</label> <div class='col-sm-10'><input type='password' name='password' placeholder='Password'/> </div> </div> <div class='form-group'> <label for='age' class='col-sm-2 control-label'>age</label> <div class='col-sm-10'><input type='text' name='age' placeholder='age'/> </div> </div> <div class='form-group'> <div class='col-sm-offset-2 col-sm-10'><input type='submit' value='Submit' />&nbsp; &nbsp; &nbsp;<input type='reset' value='Reset' /> </div> </div> </form></div></body></html>

Spring boot2+jpa+thymeleaf實現增刪改查

3、修改頁 userEdit.html

<!DOCTYPE html><html lang='en' xmlns:th='http://www.thymeleaf.org'><head> <meta charset='UTF-8'/> <title>user</title> <link rel='stylesheet' th:href='http://m.b3g6.com/bcjs/@{/css/bootstrap.css}' rel='external nofollow' rel='external nofollow' rel='external nofollow' ></link></head><body class='container'><br/><h1>修改用戶</h1><br/><br/><div class='with:80%'> <form th:action='@{/edit}' th:object='${user}' method='post'> <input type='hidden' name='id' th:value='*{id}' /> <div class='form-group'> <label for='userName' class='col-sm-2 control-label'>userName</label> <div class='col-sm-10'><input type='text' name='userName' th:value='*{userName}' placeholder='userName'/> </div> </div> <div class='form-group'> <label for='password' >Password</label> <div class='col-sm-10'><input type='password' name='password' th:value='*{password}' placeholder='Password'/> </div> </div> <div class='form-group'> <label for='age' class='col-sm-2 control-label'>age</label> <div class='col-sm-10'><input type='text' name='age' th:value='*{age}' placeholder='age'/> </div> </div> <div class='form-group'> <div class='col-sm-offset-2 col-sm-10'><input type='submit' value='Submit' />&nbsp; &nbsp; &nbsp;<a href='http://m.b3g6.com/toAdd' rel='external nofollow' rel='external nofollow' th:href='http://m.b3g6.com/bcjs/@{/list}' rel='external nofollow' class='btn btn-info'>Back</a> </div> </div> </form></div></body></html>

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Spring
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产精品久久久久久久久免费高清| 色网在线免费观看| 中文字幕在线视频久| 美女视频黄 久久| 久久一区亚洲| 国产不卡精品| 久久久久国产精品一区二区| 涩涩av在线| 9999国产精品| 欧美日韩国产观看视频| 丝袜美腿诱惑一区二区三区| 欧美日韩精品免费观看视欧美高清免费大片| 国产精品成久久久久| 黄在线观看免费网站ktv| 在线看片国产福利你懂的| 日韩国产激情| 亚洲女同中文字幕| 爽爽淫人综合网网站| 亚洲毛片网站| 国产亚洲精品美女久久| 精品在线网站观看| 亚洲性色av| 狠狠爱成人网| 亚洲一区导航| 国产私拍福利精品视频二区| 精品亚洲成人| 久久中文字幕av一区二区不卡| 亚洲国产不卡| 日本精品一区二区三区在线观看视频| 国产精品tv| 欧美日韩在线二区| 亚洲精品自拍| 日韩成人精品一区| 在线亚洲成人| 国产美女精品视频免费播放软件| 久久精品国产精品亚洲毛片| 欧美成人基地| 亚洲开心激情| 久久99高清| 不卡一区综合视频| 日本午夜精品| 日韩另类视频| 亚洲欧美在线综合| 精品国产aⅴ| 欧美特黄一级| 日韩avvvv在线播放| 精品三级久久| 日韩精品a在线观看91| 国产一区二区三区不卡视频网站 | 日韩三级精品| 美女av在线免费看| 丝袜美腿一区二区三区| 久久av导航| 999在线观看精品免费不卡网站| 91精品日本| 欧美日韩在线二区| 国产伦精品一区二区三区视频| 久久久久网站| 欧美日韩一区二区国产| 日韩欧美一区二区三区免费观看| 国产一区成人| 精品国产一区二| 亚洲一区二区三区四区电影| 电影91久久久| 蜜臀av在线播放一区二区三区| 老色鬼精品视频在线观看播放| 亚洲人成在线网站| 亚洲精品激情| 一区二区精品伦理...| 婷婷综合国产| 私拍精品福利视频在线一区| 久久精品99国产国产精| 欧美日韩水蜜桃| 国产精品jk白丝蜜臀av小说| 天堂网在线观看国产精品| 国产极品久久久久久久久波多结野| 亚洲男女av一区二区| 日本久久黄色| 国产精品一区二区三区www| 欧美网站在线| 日韩中文视频| 成人日韩av| 欧美日本一区| 在线一区二区三区视频| 欧美1级日本1级| 国产精品精品| 国产精品一区二区99| 免播放器亚洲一区| 久久www成人_看片免费不卡| 精品美女久久| 97成人超碰| 中文不卡在线| 水蜜桃久久夜色精品一区的特点 | 免费美女久久99| 欧美精品羞羞答答| 视频二区不卡| 水蜜桃精品av一区二区| 国产精品一级| 久久国产精品免费一区二区三区| 综合干狼人综合首页| 亚洲深夜影院| 91精品福利| 日韩在线综合| 四虎8848精品成人免费网站| 你懂的亚洲视频| 久久国产精品色av免费看| 亚州精品视频| 蜜桃91丨九色丨蝌蚪91桃色| 亚洲精品网址| 亚洲女同中文字幕| 好吊日精品视频| re久久精品视频| 1024精品一区二区三区| 日韩影院二区| 成人免费电影网址| 日韩欧美一区二区三区在线观看 | 久久久久伊人| 久久这里只有| 精品黄色一级片| 国产一区二区三区亚洲综合| 老牛国内精品亚洲成av人片 | 午夜日韩在线| 国产99亚洲| 偷拍欧美精品| 亚洲美洲欧洲综合国产一区| 视频一区中文| 欧美午夜不卡| 老牛国产精品一区的观看方式| 99视频在线精品国自产拍免费观看| 国产在线日韩| 夜久久久久久| 美国三级日本三级久久99 | 久久久水蜜桃av免费网站| 日韩在线中文| 精品一区在线| 亚洲图片久久| 深夜福利亚洲| 国产日韩欧美在线播放不卡| 欧美一区自拍| 精品资源在线| 成人看片网站| 国产亚洲一级| 日韩二区三区四区| 免费在线观看一区| 成人在线视频中文字幕| 久久精品欧美一区| 在线视频亚洲| 欧美视频精品全部免费观看| 久久天堂影院| 99久久婷婷这里只有精品| 99视频在线精品国自产拍免费观看| 亚洲在线观看| 国产伊人精品| 亚洲a成人v| 精品一区二区三区免费看| 成人精品天堂一区二区三区| 免费日韩av| 国产美女亚洲精品7777| 欧美二三四区| 视频在线在亚洲| 国产精品亚洲四区在线观看| 97精品一区| 视频一区在线播放| 免费一级欧美片在线观看网站 | 国产一区二区三区国产精品| 国产超碰精品| 中文字幕免费精品| 欧美a级一区二区| 亚洲精品极品少妇16p| 欧美日韩一区二区三区不卡视频| 高清一区二区三区av| 最新亚洲激情| 国产精品jk白丝蜜臀av小说| 久久高清免费| 日韩av电影一区| 超碰超碰人人人人精品| 蜜芽一区二区三区| 精品久久99| 美女黄网久久| 国产精品白浆| 激情婷婷亚洲| 国产精品密蕾丝视频下载| 99久久精品网站| 国产欧美欧美| 日韩一级网站| 久久精品国产一区二区| 亚洲一区二区三区免费在线观看| 久久不卡国产精品一区二区| 欧美日韩国产高清| 国产精品777777在线播放 | 91久久国产| 精品五月天堂| 亚洲专区视频| 欧美日韩在线播放视频| 日韩精品免费观看视频| 999久久久国产精品| 日韩不卡一区二区| 免费av一区二区三区四区| 国产精品三级| 亚洲欧美日韩专区|