成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

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

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

瀏覽:97日期: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://www.piao2010.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://www.piao2010.com/bcjs/@{/toEdit(id=${user.id})}' rel='external nofollow' >edit</a></td> <td><a th:href='http://www.piao2010.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://www.piao2010.com/toAdd' rel='external nofollow' rel='external nofollow' th:href='http://www.piao2010.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://www.piao2010.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://www.piao2010.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://www.piao2010.com/toAdd' rel='external nofollow' rel='external nofollow' th:href='http://www.piao2010.com/bcjs/@{/list}' rel='external nofollow' class='btn btn-info'>Back</a> </div> </div> </form></div></body></html>

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

標簽: Spring
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
99re这里只有精品视频首页| 国产精品乱码一区二三区小蝌蚪| 亚洲一区在线播放| 日韩毛片一二三区| 久久夜色精品| 国产精品国产三级国产aⅴ中文| 99视频在线精品| 亚洲成人av电影| 国产精品一级二级三级| 麻豆91在线观看| 久久久久九九视频| 性色一区二区| 972aa.com艺术欧美| 蜜臀99久久精品久久久久久软件| 国产三级一区二区| 午夜在线观看免费一区| 成人avav影音| 久久爱另类一区二区小说| 亚洲色图在线看| 日韩欧美一区在线观看| 亚洲专区欧美专区| 欧美aⅴ99久久黑人专区| 久草热8精品视频在线观看| 中文字幕佐山爱一区二区免费| 欧美一级免费大片| 色婷婷国产精品| 一区二区国产精品| 好看的亚洲午夜视频在线| 色综合咪咪久久| 99精品国产99久久久久久白柏| 国内一区二区在线| 免费xxxx性欧美18vr| 亚洲动漫第一页| 中文字幕综合网| 国产精品久久久久久久久免费丝袜| 欧美日韩一本到| 久久久久成人精品免费播放动漫| 亚洲精品日韩精品| 亚洲片区在线| 国产日韩一区二区| 亚洲美女一区| 中国成人亚色综合网站| 亚洲精品1234| 国产精品视频免费一区| 亚洲一区图片| 美女日韩在线中文字幕| 国产一区二区黄色| 国产精品一区在线播放| 亚洲在线成人| 蜜桃av久久久亚洲精品| 色视频欧美一区二区三区| 在线观看网站黄不卡| 欧美伦理视频网站| 日韩女优电影在线观看| www国产亚洲精品久久麻豆| 久久品道一品道久久精品| 欧美经典一区二区三区| 国产精品国产自产拍高清av王其| 欧美经典一区二区三区| 亚洲国产精品高清| 国产精品午夜免费| 亚洲青青青在线视频| 中文字幕综合网| 午夜精品久久久久久久99水蜜桃| 亚洲成人777| 精品一区二区三区香蕉蜜桃| 黄页视频在线91| 国产美女一区二区| 国产精品夜夜嗨| 北条麻妃国产九九精品视频| 欧美日韩在线精品| 99国内精品| 欧美日韩成人在线| 国产欧美视频一区二区三区| 亚洲激情在线激情| 极品少妇一区二区三区精品视频| 成人av免费在线播放| 欧美午夜欧美| 在线视频观看一区| 日韩精品一区二| 国产视频一区二区三区在线观看| 亚洲老司机在线| 久久99精品国产.久久久久久| 成人高清伦理免费影院在线观看| 黄色在线一区| 欧美撒尿777hd撒尿| 日本一区二区三区四区| 天堂成人国产精品一区| 国产91精品精华液一区二区三区| 欧美日本不卡高清| 久久国产精品亚洲77777| 欧美一区二区三区免费视频 | 久久xxxx| 久久久噜噜噜久久人人看| 亚洲国产一区二区a毛片| av电影在线观看完整版一区二区| 亚洲一区二区三区午夜| 久久在线观看免费| 热久久一区二区| 在线电影一区| 精品国产一区二区精华| 性欧美疯狂xxxxbbbb| 91在线国产福利| 欧美日韩国产综合一区二区| 中文字幕视频一区| 国产成人精品免费网站| 亚洲精品一品区二品区三品区| 欧美性视频一区二区三区| 国产精品久久久久影院色老大| 蜜芽一区二区三区| 黑丝一区二区| 91精品国产麻豆| 奇米精品一区二区三区在线观看一| 色综合天天做天天爱| 日韩一区二区不卡| 精品在线一区二区| 亚洲欧美清纯在线制服| 中文字幕欧美日韩一区| 9色porny自拍视频一区二区| 91精品视频网| 国产曰批免费观看久久久| 久久精彩视频| 亚洲自拍偷拍av| 亚洲大胆女人| 亚洲九九爱视频| 亚洲精品国产精品国自产观看| 国产视频一区在线观看 | 26uuu欧美| 国产成人日日夜夜| 欧美日韩成人一区二区| 精品一区二区在线看| 欧美日韩黄色一区二区| 久久机这里只有精品| 在线亚洲一区二区| 日韩avvvv在线播放| 久久久青草婷婷精品综合日韩| 亚洲免费观看高清完整版在线观看熊| 欧美不卡在线| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 国产精品第13页| 韩日视频一区| 亚洲日本成人在线观看| 亚洲高清毛片| 亚洲一卡二卡三卡四卡| 色婷婷激情一区二区三区| 精品一区二区在线看| 日韩欧美一级在线播放| av亚洲产国偷v产偷v自拍| 欧美一区二区三区视频| 成人av先锋影音| 久久久久国产精品麻豆ai换脸| 欧美va天堂在线| 亚洲一区二区三区国产| 亚洲一区二区三区四区中文| 午夜国产不卡在线观看视频| 欧美日韩亚洲综合一区| 国产不卡视频在线观看| 久久久久久久久久久久电影 | 91精品国产综合久久蜜臀| 国产成人超碰人人澡人人澡| 欧美精品123区| 成人午夜在线视频| 亚洲国产激情av| 在线不卡视频| 日韩黄色一级片| 欧美一二三区精品| 国产精品多人| 日日噜噜夜夜狠狠视频欧美人| 欧美特级限制片免费在线观看| 国产乱对白刺激视频不卡| 久久一区二区三区国产精品| 国内精品久久久久久久果冻传媒| 亚洲午夜精品一区二区三区他趣| 性感少妇一区| 成人午夜视频在线| 国产精品福利一区二区三区| 一本色道a无线码一区v| 国产成人午夜精品影院观看视频| 国产精品高潮呻吟久久| 在线精品视频一区二区三四| 91色porny| 日韩vs国产vs欧美| 久久日韩粉嫩一区二区三区| 亚洲在线视频| 波多野结衣在线一区| 亚洲成av人片一区二区梦乃 | 国产一区二区三区久久久| 国产精品动漫网站| 欧美男男青年gay1069videost| 欧美日韩三级电影在线| 热久久一区二区| 国产精品久久毛片| 欧美亚洲动漫制服丝袜| 欧美激情亚洲| 久久精品国产精品亚洲红杏| 国产精品欧美一区喷水| 欧美日韩性生活| 一区二区精品在线观看| av在线播放不卡| 开心九九激情九九欧美日韩精美视频电影 |