springboot-curd基于mybatis项目搭建

项目结构:

springboot-curd基于mybatis项目搭建_第1张图片

pom.xml文件: 

   
        org.springframework.boot
        spring-boot-starter-parent
        2.2.2.RELEASE
        
    
    com.liuyang
    springbootcurd
    0.0.1-SNAPSHOT
    springbootcurd
    Demo project for Spring Boot
    
        1.8
    
    
        
            org.springframework.boot
            spring-boot-starter-web
        
        
            org.mybatis.spring.boot
            mybatis-spring-boot-starter
            2.2.1
        
        
        
            junit
            junit
            4.13
            test
        
        
        
            com.github.pagehelper
            pagehelper-spring-boot-starter
            1.2.13
        
        
        
            mysql
            mysql-connector-java
            8.0.25
        
        
        
            com.mchange
            c3p0
            0.9.5.5
        
        
        
            org.apache.commons
            commons-lang3
        
        
            org.springframework.boot
            spring-boot-devtools
            
            true
        
        
            org.springframework.data
            spring-data-commons
            2.2.3.RELEASE
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    

yml

## 数据源配置
spring:
  ## 热部署配置
  devtools:
    restart:
      enabled: true
      # 设置重启的目录,添加目录的文件需要restart
      additional-paths: src/main/java
      # 解决项目自动重新编译后接口报404的问题
      poll-interval: 3000
      quiet-period: 1000
  datasource:
    type: com.mchange.v2.c3p0.ComboPooledDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/springboot_mybatis?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8
    username: root
    password: 123456
    ##视图的配置
    freemarker:
      template-loader-path: classpath*:/views/
      charset: UTF-8
      content-type: text/html
      cache: false
      suffix: .ftl

## mybatis 配置
mybatis:
  #映射文件的存放路径
  mapper-locations: classpath*:/mapper/*.xml
  type-aliases-package: com.liuyang.bean,com.liuyang.vo,com.liuyang.query
  configuration:
    ## 下划线转驼峰配置
    map-underscore-to-camel-case: true

## pageHelper
pagehelper:
  helper-dialect: mysql

## 显示dao 执行sql语句
logging:
  level:
    com:
      xxxx:
        mapper: debug

bean  

 private Integer userId;

    private String userName;

    private String userPwd;

mapper

public interface Usermapper {
    public User selectuserbyid(Integer id);


    public User selectUserByName(String userName);

//    注意返回的类型
    public int insertUser(User user);

//    根据id进行删除数据
    public int deleteUserById(int userId);

    //条件查询
    public List selectUserByItem(UserQuery userQuery);
}

mapping.xml




    

    
    
        insert into t_user(user_name,user_pwd) values(#{userName},#{userPwd});
    
    
    
        delete  from t_user where user_id=#{userId}
    
    
    

controller

@RestController
public class Usercontroller {
    @Resource
    private Usermapper usermapper;
    @GetMapping("one/{id}")
    public User sayUser(@PathVariable Integer id) {
        System.out.println( id + "<<<" );
        //根据ID查询
        User user = usermapper.selectuserbyid(id);
        return user;
    }
//    没有检测重复
    @GetMapping("userOne/{name}")
    public User sayUserOne(@PathVariable String name) {
        System.out.println( name + "<<<" );
        //根据ID查询
        User user = usermapper.selectUserByName( name );
        //user--json
        return user;
    }
    @PutMapping("add")
    public int sayAdd(User user) {
        System.out.println( user + "<<<" );
        //根据ID查询
        return usermapper.insertUser( user );
    }
    @DeleteMapping("delete/{userId}")
    public int sayDel(@PathVariable Integer userId) {
        System.out.println( userId + "<<<" );
        //根据ID查询
        return usermapper.deleteUserById( userId );
    }
    @GetMapping("query")
    public java.util.List sayDel(UserQuery userQuery) {
        System.out.println( userQuery + "<<<" );
        //分页的集合数据
        return usermapper.selectUserByItem( userQuery );
    }

}

query

public class UserQuery {
    private  Integer pageNum=1;
    private  Integer pageSize=1;
    private  String userName;

以上只是简单的实现了增删改查 如果发生了插入或者是删除异常,我们就应该会自定义全局异常去捕获出现的问题

springboot-curd基于mybatis项目搭建_第2张图片

新增类 service 主要进行的业务的处理

Userservice

public interface Userservice {
    public User queryUserById(Integer userId);
    public User queryUserByName(String userName);
    public void saveUser(User user);
    public void changeUser(User user);
    //删除一条
    public void removeUserById(Integer  userId);

    //查询用户信息
    public PageInfo queryUserByPage(UserQuery userQuery);

}

UserserviceImpl

@Service
public class UserserviceImpl implements Userservice {

    @Resource
    private Usermapper usermapper;
//    查询都是用的User返回类型
    @Override
    public User queryUserById(Integer userId) {
        return usermapper.selectuserbyid( userId );
    }

    @Override
    public User queryUserByName(String userName) {
        return usermapper.selectUserByName( userName );
    }
//增加操作
    /***
     *     需要用户名 AssertUtil
     *     用户密码
     *     用户是否存在
     *     添加用户是否成功
     * @param user
     */
    @Override
    public void saveUser(User user) {
        //验证用户名
        AssertUtil.isTrue( StringUtils.isBlank(user.getUserName()),"用户名不能为空");
        //用户密码
        AssertUtil.isTrue(StringUtils.isBlank(user.getUserPwd()),"用户密码不能为空");
        //用户是否存在
        User temp = usermapper.selectUserByName(user.getUserName());
        AssertUtil.isTrue(temp!=null,"用户已经存在");
        //用户添加是否成功
        AssertUtil.isTrue(usermapper.insertUser(user)<1,"添加失败了");
    }

//    修改操作

    /****
     * 用户名不为空
     * 用户密码不为空
     * 用户不存在
     * 用户修改操作失败
     *
     * @param user
     */

    @Override
    public void changeUser(User user) {
        AssertUtil.isTrue( StringUtils.isBlank( user.getUserName() ),"用户名不为空" );
        AssertUtil.isTrue( StringUtils.isBlank( user.getUserPwd() ),"密码不为空" );
        User temp = usermapper.selectuserbyid(user.getUserId());
        AssertUtil.isTrue( temp == null,"用户不存在");
        AssertUtil.isTrue( usermapper.updateUser(user)<1,"修改失败了");
    }

    /****
     * 删除是的id是否还存在
     * 删除失败
     * @param userId
     */
    @Override
    public void removeUserById(Integer userId) {

        AssertUtil.isTrue( userId==null|| null==usermapper.selectuserbyid( userId ),"待删除数据不存在" );
        AssertUtil.isTrue( usermapper.deleteUserById( userId )<1,"删除失败" );
    }

    /**
     * 分页参数传递了两个变量 一个是起始位置 一个是一页有多行数据
     *
     * @param userQuery
     * @return
     */
    @Override
    public PageInfo queryUserByPage(UserQuery userQuery) {
        PageHelper.startPage( userQuery.getPageNum(),userQuery.getPageSize());

        List ulist = usermapper.selectUserByItem( userQuery );
        PageInfo plist =new PageInfo(ulist);
        return plist;

    }
}

springboot-curd基于mybatis项目搭建_第3张图片

新增类 用来校验数据数据是否有误

AssertUtil

public class AssertUtil {
    /**
     *
     * @param flag 参数
     * @param msg 信息
     *            flag=true
     *              抛出异常,自定义
     */
    public static void isTrue(Boolean flag,String msg){
        if(flag){
            throw new ParamException(msg);
        }
    }
}

ParamException 自定义异常类

public class ParamException extends RuntimeException{
    private Integer code=300;
    private String msg="参数异常";

    public ParamException() {
        super("参数异常");
    }

    public ParamException(Integer code) {
        super("参数异常");
        this.code=code;
    }

    public ParamException(String msg) {
        super(msg);
        this.msg=msg;
    }

    public ParamException(Integer code,String msg) {
        super(msg);
        this.msg=msg;
        this.code=code;
    }


    public Integer getCode() {
        return code;
    }

    public void setCode(Integer code) {
        this.code = code;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }
}

springboot-curd基于mybatis项目搭建_第4张图片

把数据状态码 状态数据存在在Resultinfo所创建的对象中

ResultInfo

public class ResultInfo {

    private Integer code=200;
    private String msg="操作成功";
    private Object object;

    public ResultInfo() {
    }

    public Integer getCode() {
        return code;
    }

    public void setCode(Integer code) {
        this.code = code;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public Object getObject() {
        return object;
    }

    public void setObject(Object object) {
        this.object = object;
    }

    @Override
    public String toString() {
        return "ResultInfo{" +
                "code=" + code +
                ", msg='" + msg + '\'' +
                ", object=" + object +
                '}';
    }
}

更新传递的事json数据:

springboot-curd基于mybatis项目搭建_第5张图片

到此这篇关于springboot-curd基于mybatis项目搭建的文章就介绍到这了,更多相关springboot-curd基于mybatis项目 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

你可能感兴趣的:(springboot-curd基于mybatis项目搭建)