依赖:
4.0.0 com.example jpa_sample0.0.1-SNAPSHOT jpa_sample Demo project for Spring Boot 1.8 UTF-8 UTF-8 2.3.7.RELEASE org.springframework.boot spring-boot-starter-data-jpaorg.springframework.boot spring-boot-starter-thymeleaforg.springframework.boot spring-boot-starter-validationorg.springframework.boot spring-boot-starter-weborg.springframework.boot spring-boot-devtoolsruntime true mysql mysql-connector-javaruntime org.projectlombok lomboktrue org.springframework.boot spring-boot-starter-testtest org.junit.vintage junit-vintage-engineorg.springframework.boot spring-boot-dependencies${spring-boot.version} pom import org.apache.maven.plugins maven-compiler-plugin3.8.1 1.8 1.8 UTF-8 org.springframework.boot spring-boot-maven-plugin2.3.7.RELEASE com.example.jpa_sample.JpaSampleApplication repackage repackage
实体类:
@Entity
@Data
@Accessors(chain = true)
public class User {
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Column(unique = true,length =20,nullable =true)
@NotBlank(message ="账号不能为空")
@Pattern(regexp = "[a-z|A-Z]\w{2,9}",message ="账号必须字母开头,且3-10")
private String username;
@Column(nullable =true,length = 20)
@NotBlank(message ="密码不能为空!")
private String password;
private Integer sex;
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date birthday;
@Column(length =100)
private String pic;
}
dao:
import com.example.jpa_sample.pojo.User; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.repository.query.Param; public interface UserDao extends JpaRepository{ User findOneByUsernameAndPassword(@Param("username")String username,@Param("password")String password); Page findUsersByUsernameContaining(@Param("username")String username, Pageable pageable); }
service:
@Service
public class UserService {
@Resource
private UserDao userDao;
public Page findPage(String username, Pageable pageable){
return this.userDao.findUsersByUsernameContaining(username,pageable);
}
public boolean saveUser(User user){
//返回刚刚添加的对象在数据库的id
return this.userDao.saveAndFlush(user).getId()>=1;
}
public User findUserById(int id){
return this.userDao.getOne(id);
//return this.userDao.findById(id).get();
}
public void deleteUser(int id){
// User user=this.findUserById(id);
// if(user!=null) {
// this.userDao.delete(user);
// }
this.userDao.deleteById(id);
}
public List findAllUsers(){
return this.userDao.findAll();
}
public User login(User user){
return this.userDao.findOneByUsernameAndPassword(user.getUsername(),user.getPassword());
}
}
控制器:
@Controller
public class UserController {
@Resource
private UserService userService;
@GetMapping("/")
public String index(){
return "redirect:login";
}
@GetMapping("/logout")
public String logout(HttpSession session){
if(session.getAttribute("logUser")!=null){
session.removeAttribute("logUser");
}
return "redirect:login";
}
@GetMapping("/update")
public String toupdate(Model model,int id){
model.addAttribute(this.userService.findUserById(id));
return "update";
}
@PostMapping("/update")
public String update(@Valid User user, BindingResult br, MultipartFile photo){
if(br.hasErrors()){
br.getAllErrors().forEach(error -> {
System.out.println(error.getDefaultMessage());
});
return "update";
}
String path=System.getProperty("user.dir")+"\src\main\resources\static\upload";
System.out.println(path);
String new_name= UUID.randomUUID().toString().substring(0 ,7)+photo.getOriginalFilename();
File file=new File(path+File.separator+new_name);
if(!photo.getOriginalFilename().isEmpty()) {
user.setPic(new_name);//重新修改头像
try {
photo.transferTo(file);
} catch (IOException e) {
e.printStackTrace();
}
}
if(this.userService.saveUser(user)){
return "redirect:list";
}
return "update";
}
@GetMapping("/add")
public String toadd(@ModelAttribute("user")User user){
return "add";
}
@PostMapping("/add")
public String add(@Valid User user, BindingResult br, MultipartFile photo){
if(br.hasErrors()){
br.getAllErrors().forEach(error -> {
System.out.println(error.getDefaultMessage());
});
return "add";
}
String path=System.getProperty("user.dir")+"\src\main\resources\static\upload";
System.out.println(path);
String new_name= UUID.randomUUID().toString().substring(0 ,7)+photo.getOriginalFilename();
File file=new File(path+File.separator+new_name);
user.setPic(new_name);
try {
photo.transferTo(file);
} catch (IOException e) {
e.printStackTrace();
}
if(this.userService.saveUser(user)){
return "redirect:list";
}
return "add";
}
@GetMapping("/list")
public String list(Model model,
@RequestParam(name="mohu",defaultValue="",required=false) String mohu,
@RequestParam(name = "offset",defaultValue ="0")Integer offset,
@RequestParam(name="pagesize",defaultValue ="2")Integer pagesize){
Page pager=this.userService.findPage(mohu, PageRequest.of(offset, pagesize));
// pager.getTotalPages();//总页数
// pager.isLast();
// pager.isFirst();
// pager.getNumber();
// pager.getTotalElements();//
// pager.getContent();
model.addAttribute("pager",pager);
model.addAttribute("mohu",mohu);
return "list";
}
@GetMapping("/delete/{id}")
@ResponseBody
public boolean delete(@PathVariable("id")int id){
try {
this.userService.deleteUser(id);
return true;
}catch (Exception e){
e.printStackTrace();
}
return false;
}
@GetMapping("/login")
public String tologin(@ModelAttribute("user") User user){
return "login";
}
@PostMapping("/login")
public String login(@Valid User user, BindingResult br, HttpSession session,Model model){
User logUser= this.userService.login(user);
if(logUser!=null){
session.setAttribute("logUser",logUser);
return "redirect:list";
}else{
model.addAttribute("mess","登录失败,错误的账号或密码!");
return "login";
}
}
}
页面:
静态资源:include.html
Title
列表:list.html
Title
欢迎登录。
注销
| 序号 | 编号 | 账号 | 密码 | 性别 | 生日 | 头像 | 添加 | ||
| 共页,当前第页, 共条数据。 首页 上页 下页 末页 | |||||||||
添加:
Title
修改:update.html
Title
登录:login.html
Title



