springboot-curd基于mybatis项目搭建

 更新时间:2022年01月25日 17:35:58   作者:捕風捉影    
这篇文章主要介绍了springboot-curd基于mybatis项目搭建,围绕相关资料展开详细内容,希望对正在学习的你有所帮助,需要的小伙伴也可以参考一下

项目结构:

pom.xml文件: 

   <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.2.RELEASE</version>
        <relativePath/>
    </parent>
    <groupId>com.liuyang</groupId>
    <artifactId>springbootcurd</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springbootcurd</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.2.1</version>
        </dependency>
        <!--    测试依赖-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13</version>
            <scope>test</scope>
        </dependency>
        <!-- springboot 分页插件 -->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.2.13</version>
        </dependency>
        <!-- mysql 驱动 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.25</version>
        </dependency>
        <!-- c3p0 数据源 -->
        <dependency>
            <groupId>com.mchange</groupId>
            <artifactId>c3p0</artifactId>
            <version>0.9.5.5</version>
        </dependency>
        <!--StringUtils-->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <!--当前这个项目被继承之后,这个不向下传递-->
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-commons</artifactId>
            <version>2.2.3.RELEASE</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

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<User> selectUserByItem(UserQuery userQuery);
}

mapping.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.liuyang.mapper.Usermapper">
    <select id="selectuserbyid" parameterType="int" resultType="com.liuyang.bean.User">
       select * from t_user where user_id=#{userId}
    </select>

    <select id="selectUserByName" parameterType="String" resultType="com.liuyang.bean.User">
       select * from t_user where user_name=#{userName}

       select * from t_user where user_name=
    </select>
    <insert id="insertUser">
        insert into t_user(user_name,user_pwd) values(#{userName},#{userPwd});
    </insert>
    <!--删除一条-->
    <delete id="deleteUserById" parameterType="int">
        delete  from t_user where user_id=#{userId}
    </delete>
    <!--条件查询-->
    <select id="selectUserByItem" resultType="com.liuyang.bean.User">
        select * from t_user
        <where>
            <if test="userName!=null">
                user_name like "%${userName}%"
            </if>
        </where>
    </select>

</mapper>

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<User> 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;

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

新增类 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<User> 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<User> queryUserByPage(UserQuery userQuery) {
        PageHelper.startPage( userQuery.getPageNum(),userQuery.getPageSize());

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

    }
}

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

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;
    }
}

把数据状态码 状态数据存在在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项目搭建的文章就介绍到这了,更多相关springboot-curd基于mybatis项目 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 2020.2 IntelliJ IDEA激活与IDEA2020.2破解详细教程

    2020.2 IntelliJ IDEA激活与IDEA2020.2破解详细教程

    这篇文章主要介绍了2020.2 IntelliJ IDEA激活与IDEA2020.2破解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • 解决idea找不到或无法加载主类的错误处理

    解决idea找不到或无法加载主类的错误处理

    这篇文章主要介绍了解决idea找不到或无法加载主类的错误处理,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • Spring与Spring boot的区别介绍

    Spring与Spring boot的区别介绍

    Spring Boot框架的核心就是自动配置,只要存在相应的jar包,Spring就帮我们自动配置。接下来通过本文给大家介绍Spring与Spring boot的区别介绍,非常不错,需要的朋友参考下吧
    2017-04-04
  • JVM中的守护线程示例详解

    JVM中的守护线程示例详解

    这篇文章主要给大家介绍了关于JVM中守护线程的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-01-01
  • springboot 运行 jar 包读取外部配置文件的问题

    springboot 运行 jar 包读取外部配置文件的问题

    这篇文章主要介绍了springboot 运行 jar 包读取外部配置文件,本文主要描述linux系统执行jar包读取jar包同级目录的外部配置文件,主要分为两种方法,每种方法通过实例代码介绍的非常详细,需要的朋友可以参考下
    2021-07-07
  • Java服务cpu100%的解决过程分享

    Java服务cpu100%的解决过程分享

    最近一个任务是优化一个导出的功能,但是点击功能时发现,程序长时间无反应,过一段时间又有反应,通过查看服务的监控发现,服务存在cpu持续100%的情况,下面分享一下我的处理方案和过程,需要的朋友可以参考下
    2024-05-05
  • 利用java开发简易版扫雷游戏

    利用java开发简易版扫雷游戏

    这篇文章主要介绍了利用java开发一个丐版扫雷游戏,喜欢玩扫雷的小伙伴们一定要试试哦,对正在学习java开发的小伙伴们也有一定帮助,需要的朋友可以参考下
    2021-04-04
  • springmvc接收参数为日期类型详解

    springmvc接收参数为日期类型详解

    这篇文章主要介绍了springmvc接收参数为日期类型,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • Java中LinkedHashSet的底层机制详解

    Java中LinkedHashSet的底层机制详解

    这篇文章主要介绍了Java中LinkedHashSet的底层机制解读,   LinkedHashSet是具有可预知迭代顺序的Set接口的哈希表和链接列表实现,此实现与HashSet的不同之处在于,后者维护着一个运行于所有条目的双重链接列表,需要的朋友可以参考下
    2023-09-09
  • Java由浅入深讲解继承上

    Java由浅入深讲解继承上

    继承就是可以直接使用前辈的属性和方法。自然界如果没有继承,那一切都是处于混沌状态。多态是同一个行为具有多个不同表现形式或形态的能力。多态就是同一个接口,使用不同的实例而执行不同操作
    2022-04-04

最新评论