c语言sscanf函数的用法是什么
332
2023-04-27
Spring boot2+jpa+thymeleaf实现增删改查
一、pom.xml引入相关模块web、jpa、thymeleaf、oracle:
二、application.properties配置
server.port = 9001
spring.datasource.driver-class-name = oracle.jdbc.driver.OracleDriver
spring.datasource.url = jdbc:oracle:thin:@127.0.0.1:1521:testdb
spring.datasource.username = dev
spring.datasource.password = dev
spring.jpa.hibernate.ddl-auto = update
spring.jpa.show-sql = true
spring.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.springYYzLlcSCframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
@SpringBootApplication
public class DemoApplication extends SpringBootServletInitializer {
@OverYYzLlcSCride
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 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
public List
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;
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserRepository userRepository;
@Override
public Page
return userRepository.findAll(pageable);
}
@Override
public List
return userRepository.findAll();
}
@Override
public User findUserById(long id) {
return userRepository.findById(id) ;
}
@Override
public void save(User user) {
userRepository.savYYzLlcSCe(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;
@Controller
public class UserController {
@Resource
UserService userService;
@RequestMapping("/")
public String index() {
return "redirect:/list";
}
@RequestMapping("/list")
public String list(Model model) {
List
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
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
# User Name Password Age Edit Delete
2、新增页 userAdd.html
3、修改页 userEdit.html
placeholder="userName"/>
placeholder="Password"/>
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~