溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

springboot-curd基于mybatis項目搭建的示例分析

發(fā)布時間:2022-01-24 09:29:11 來源:億速云 閱讀:135 作者:kk 欄目:開發(fā)技術(shù)

springboot-curd基于mybatis項目搭建的示例分析,相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。

項目結(jié)構(gòu):

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 驅(qū)動 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.25</version>
        </dependency>
        <!-- c3p0 數(shù)據(jù)源 -->
        <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

## 數(shù)據(jù)源配置
spring:
  ## 熱部署配置
  devtools:
    restart:
      enabled: true
      # 設(shè)置重啟的目錄,添加目錄的文件需要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:
    ## 下劃線轉(zhuǎn)駝峰配置
    map-underscore-to-camel-case: true

## pageHelper
pagehelper:
  helper-dialect: mysql

## 顯示dao 執(zhí)行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);

//    根據(jù)id進行刪除數(shù)據(jù)
    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 + "<<<" );
        //根據(jù)ID查詢
        User user = usermapper.selectuserbyid(id);
        return user;
    }
//    沒有檢測重復
    @GetMapping("userOne/{name}")
    public User sayUserOne(@PathVariable String name) {
        System.out.println( name + "<<<" );
        //根據(jù)ID查詢
        User user = usermapper.selectUserByName( name );
        //user--json
        return user;
    }
    @PutMapping("add")
    public int sayAdd(User user) {
        System.out.println( user + "<<<" );
        //根據(jù)ID查詢
        return usermapper.insertUser( user );
    }
    @DeleteMapping("delete/{userId}")
    public int sayDel(@PathVariable Integer userId) {
        System.out.println( userId + "<<<" );
        //根據(jù)ID查詢
        return usermapper.deleteUserById( userId );
    }
    @GetMapping("query")
    public java.util.List<User> sayDel(UserQuery userQuery) {
        System.out.println( userQuery + "<<<" );
        //分頁的集合數(shù)據(jù)
        return usermapper.selectUserByItem( userQuery );
    }

}

query

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

以上只是簡單的實現(xiàn)了增刪改查 如果發(fā)生了插入或者是刪除異常,我們就應該會自定義全局異常去捕獲出現(xiàn)的問題

springboot-curd基于mybatis項目搭建的示例分析

新增類 service 主要進行的業(yè)務的處理

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,"用戶已經(jīng)存在");
        //用戶添加是否成功
        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 ),"待刪除數(shù)據(jù)不存在" );
        AssertUtil.isTrue( usermapper.deleteUserById( userId )<1,"刪除失敗" );
    }

    /**
     * 分頁參數(shù)傳遞了兩個變量 一個是起始位置 一個是一頁有多行數(shù)據(jù)
     *
     * @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;

    }
}

springboot-curd基于mybatis項目搭建的示例分析

新增類 用來校驗數(shù)據(jù)數(shù)據(jù)是否有誤

AssertUtil

public class AssertUtil {
    /**
     *
     * @param flag 參數(shù)
     * @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="參數(shù)異常";

    public ParamException() {
        super("參數(shù)異常");
    }

    public ParamException(Integer code) {
        super("參數(shù)異常");
        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項目搭建的示例分析

把數(shù)據(jù)狀態(tài)碼 狀態(tài)數(shù)據(jù)存在在Resultinfo所創(chuàng)建的對象中

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數(shù)據(jù):

springboot-curd基于mybatis項目搭建的示例分析

分頁查詢:

springboot-curd基于mybatis項目搭建的示例分析

springboot是什么

springboot一種全新的編程規(guī)范,其設(shè)計目的是用來簡化新Spring應用的初始搭建以及開發(fā)過程,SpringBoot也是一個服務于框架的框架,服務范圍是簡化配置文件。

看完上述內(nèi)容,你們掌握springboot-curd基于mybatis項目搭建的示例分析的方法了嗎?如果還想學到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI