栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

springboot+jpa+thymeleaf (分页+模糊+CRUD)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

springboot+jpa+thymeleaf (分页+模糊+CRUD)

依赖:



    4.0.0
    com.example
    jpa_sample
    0.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-jpa
        
        
            org.springframework.boot
            spring-boot-starter-thymeleaf
        
        
            org.springframework.boot
            spring-boot-starter-validation
        
        
            org.springframework.boot
            spring-boot-starter-web
        

        
            org.springframework.boot
            spring-boot-devtools
            runtime
            true
        
        
            mysql
            mysql-connector-java
            runtime
        
        
            org.projectlombok
            lombok
            true
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
            
                
                    org.junit.vintage
                    junit-vintage-engine
                
            
        
    

    
        
            
                org.springframework.boot
                spring-boot-dependencies
                ${spring-boot.version}
                pom
                import
            
        
    

    
        
            
                org.apache.maven.plugins
                maven-compiler-plugin
                3.8.1
                
                    1.8
                    1.8
                    UTF-8
                
            
            
                org.springframework.boot
                spring-boot-maven-plugin
                2.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



         
              
账号:
密码:
性别:
生日:yyyy-MM-dd
头像:

修改:update.html




    
    
    Title



         
              
账号:
密码:
性别:
生日:yyyy-MM-dd
头像:

登录:login.html




    
    Title
    




      
           
           
账号:
密码:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/821910.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号