• Mybatis通过注解方式实现CRUD


    Mybatis通过注解方式实现CRUD

    完成了MySql的学习后,我们确定了库中有adminuser与document两个数据表,document包含所有的公文,但是通过userId属性对应adminuser中的项,adminuser只能读userid为自己id的项,这样我们在两个数据表的情况下,完成多个用户的公文存储。

    接下来就只要同后端人员沟通好要使用哪些属性来完成事件即可,也就是文件的增删查改等步骤。由于sql语句比较简单,我们使用注解的方式实现了CRUD,参考了how2j中mybatisJDBC的教程。

    以公文上传为例

    在前端请求上传公文时,post向api发送调用请求,请求内容是/document/addDocument.api会把请求定位addDocument方法里。其中Document d即为前端传来的json化的document对象。

    @PostMapping("/document/addDocument")
    public String addDocument(@RequestBody Document d){
    	documentServiceImpl.addDocument(d);
    	return "success";
    }
    

    之后会执行实现类DocumentUserServicelmpl的addDocument方法,会先按pojo中的属性一一赋值,建立后端中的document对象.

    public void addDocument(Document d){
    	documentMapper.addDocument(d);
    }
    

    之后实现类DocumentUserServicelmpl又会调用documentMapper的addDocument,通过Mysql语句实现对公文表项的添加.

    @Insert("insert into document(title,content,committee,wordsize,classfication,timelimit,date,security,notread,userid) values(#{title},#{content},#{authorities},#{fontSize},#{category},#{timeLimit},#{date},#{level},#{notRead},#{userId})")
    public void addDocument(Document d);
    

    以下是部分后端代码

    api

    AdminUserAPI

    @PostMapping("/adminUser/login/{userName}/{password}")
    public AdminUser login(@PathVariable String userName, @PathVariable String password){
    	return adminUserServiceImpl.login(userName, password);
    }
    
    @GetMapping("/logins/{userName}/{password}")
    public AdminUser logins(@PathVariable String userName, @PathVariable String password){
    	return adminUserServiceImpl.login(userName, password);
    }
    
    @PutMapping("/adminUser/resetPassword/{password}")
    public String resetPassword(@PathVariable String password){
    	adminUserServiceImpl.resetPassword(password);
    	return "success";
    }
    
    @PutMapping("/adminUser/stopUser/{userId}")
    public String stopUser(@PathVariable int userId){
    	adminUserServiceImpl.stopUser(userId);
    	return "sucess";
    }
    
    @GetMapping("/adminUser/listUser")
    public List<AdminUser> listUser(){
    	return adminUserServiceImpl.listUser();
    }
    

    DocumentAPI

    @GetMapping("/document/notRead/{userId}")
    public List<Document> notReadDocumentList(@PathVariable int userId){
    	return documentServiceImpl.notReadDocumentList(userId);
    }
    
    @GetMapping("/document/read/{userId}")
    public List<Document> readDocumentList(@PathVariable int userId){
    	return documentServiceImpl.readDocumentList(userId);
    }
    
    @GetMapping("/document/rubbish/{userId}")
    public List<Document> rubbishDocumentList(@PathVariable int userId){
    	return documentServiceImpl.isRubbishDocumentList(userId);
    }
    
    @GetMapping("/document/collect/{userId}")
    public List<Document> collectDocumentList(@PathVariable int userId){
    	return documentServiceImpl.isCollectDocumentList(userId);
    }
    
    @PostMapping("/document/addDocument")
    public String addDocument(@RequestBody Document d){
    	documentServiceImpl.addDocument(d);
    	return "success";
    }
    
    @PutMapping("/document/delete/{id}")
    public String delete(@PathVariable int id){
    	documentServiceImpl.delete(id);
    	return "success";
    }
    
    @PutMapping("/document/isRead/{id}")
    public String isRead(@PathVariable int id){
    	documentServiceImpl.read(id);
    	return "success";
    }
    
    @PutMapping("/document/isCollect/{id}")
    public String isCollect(@PathVariable int id){
    	documentServiceImpl.collect(id);
    	return "success";
    }
    

    pojo

    pojo部分会接收前端和数据库传过来的数值,把这些数值转化为java里的对象

    AdminUser

    @TableId("id")			//用户id(主键)
    private Integer id;
    @TableField("username")	//用户名
    private String userName;
    @TableField("password")	//密码
    private String password;
    @TableField("islogin")	//登录状态
    private boolean isLogin;
    @TableField("role")		//用户表
    private String role;
    @TableField("limit")	//权限级别
    private boolean limit;
    

    Document

    @TableId("id")		
    private Integer id;
    @TableField("title")		//标题
    private String title;
    @TableField("content")		//密文
    private String content;
    @TableField("committee")	//收发单位
    private String authorities;
    @TableField("wordsize")		//公文字号
    private Integer fontSize;
    @TableField("classfication")//公文类别
    private String category;
    @TableField("timelimit")	//紧急程度
    private String timeLimit;
    @TableField("date")			//时间
    private Date date;
    @TableField("security")		//密级
    private String level;
    @TableField("notread")		//未读符
    private boolean notRead;
    @TableField("userid")		//上传用户
    private Integer userId;
    @TableField("rubbish")		//回收符
    private boolean rubbish;
    @TableField("collect")		//收藏符
    private boolean collect;
    
    

    serviceimpl

    AdminUserServicelmpl

    public AdminUser login(String userName,String password){
    	return adminUserMapper.login(userName, password);		
    }
    
    public void resetPassword(String password){
    	adminUserMapper.resetPassword(password);
    }
    
    public void stopUser(int userId){
    	adminUserMapper.stopUser(userId);
    }
    
    public List<AdminUser> listUser(){
    	return adminUserMapper.listUser();
    }
    

    DocumentUserServicelmpl

    public List<Document> notReadDocumentList(int userId){
    	return documentMapper.notReadDocumentList(userId);
    }
    
    public List<Document> readDocumentList(int userId){
    	return documentMapper.readDocumentList(userId);
    }
    
    public List<Document> isRubbishDocumentList(int userId){
    	return documentMapper.isRubbishDocumentList(userId);
    }
    
    public List<Document> isCollectDocumentList(int userId){
    	return documentMapper.isCollectDocumentList(userId);
    }
    
    public void addDocument(Document d){
    	documentMapper.addDocument(d);
    }
    
    public void delete(int id){
    	documentMapper.delete(id);
    }
    
    public void read(int id){
    	documentMapper.read(id);
    }
    
    public void collect(int id){
    	documentMapper.collect(id);
    }
    

    mapper

    DocumentMapper

    • 返回未读列表

      @Select("select * from document where userid = #{userId} and notread > 0")
      public List<Document> notReadDocumentList(int userId);
      
    • 返回已读列表

      @Select("select * from document where userid = #{userId} and notread = 0")
      public List<Document> readDocumentList(int userId);
      
    • 返回收藏列表

      @Select("select * from document where userid = #{userId} and collect > 0")
      public List<Document> isCollectDocumentList(int userId);
      
    • 返回回收列表

      @Select("select * from document where userid = #{userId} and rubbish > 0 ")
      public List<Document> isRubbishDocumentList(int userId);
      
    • 添加文件项

      @Insert("insert into document(title,content,committee,wordsize,classfication,timelimit,date,security,notread,userid) values(#{title},#{content},#{authorities},#{fontSize},#{category},#{timeLimit},#{date},#{level},#{notRead},#{userId})")
      public void addDocument(Document d);
      
    • 删除文件项

      @Update("update document set rubbish = 1")
      public void delete(int id);
      
    • 更改已读属性

      @Update("update document set notread = 0 where id = #{id}")
      public void read(int id);
      
    • 更改收藏属性

      @Update("update document set collect = 1 where id = #{id}")
      public void collect(int id);
      

    AdminUserMapper

    • 返回用户名与密码

      @Select("select * from adminuser where username = #{userName} and password = #{password}")
      public AdminUser login(@Param("userName") String userName ,@Param("password") String password);
      
    • 重置密码

      @Update("update adminuser set `password` = #{password}")
      public void resetPassword(String password);
      
    • 修改权限

      @Update("update user set limit = 0 where id = #{userId}")
      public void stopUser(int userId);
      
    • 查看用户

      @Select("select * from user")
      public List<AdminUser> listUser();
      
  • 相关阅读:
    SIEBEL应用概述
    Picklist的配置
    MVG配置
    Siebel计划和实施
    Siebel学习笔记
    Siebel界面的搭建
    标签a点击以后,5秒内禁止点击,5秒后激活
    表单重复提交的常见应用场景
    h5做app和原生app有什么区别?
    Maven + Eclipse + Tomcat
  • 原文地址:https://www.cnblogs.com/Ziggy29/p/14057091.html
Copyright © 2020-2023  润新知