springboot-curd基于mybatis項(xiàng)目搭建
項(xiàng)目結(jié)構(gòu):

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ū)動(dòng) --> ? ? ? ? <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> ? ? ? ? ? ? <!--當(dāng)前這個(gè)項(xiàng)目被繼承之后,這個(gè)不向下傳遞--> ? ? ? ? ? ? <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 ? ? ? # 解決項(xiàng)目自動(dòng)重新編譯后接口報(bào)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進(jìn)行刪除數(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;
?? ?}
//?? ?沒有檢測重復(fù)
?? ?@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;以上只是簡單的實(shí)現(xiàn)了增刪改查 如果發(fā)生了插入或者是刪除異常,我們就應(yīng)該會(huì)自定義全局異常去捕獲出現(xiàn)的問題

新增類 service 主要進(jìn)行的業(yè)務(wù)的處理
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) {
?? ??? ?//驗(yàn)證用戶名
?? ??? ?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ù)傳遞了兩個(gè)變量 一個(gè)是起始位置 一個(gè)是一頁有多行數(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;
?? ?}
}
新增類 用來校驗(yàn)數(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;
?? ?}
}
把數(shù)據(jù)狀態(tài)碼 狀態(tài)數(shù)據(jù)存在在Resultinfo所創(chuàng)建的對(duì)象中
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ù):

到此這篇關(guān)于springboot-curd基于mybatis項(xiàng)目搭建的文章就介紹到這了,更多相關(guān)springboot-curd基于mybatis項(xiàng)目 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring單元測試類ApplicationTests錯(cuò)誤的解決
這篇文章主要介紹了Spring單元測試類ApplicationTests錯(cuò)誤的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-01-01
Springboot整合Netty實(shí)現(xiàn)RPC服務(wù)器的示例代碼
這篇文章主要介紹了Springboot整合Netty實(shí)現(xiàn)RPC服務(wù)器的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01
Spring Boot詳細(xì)打印啟動(dòng)時(shí)異常堆棧信息詳析
這篇文章主要給大家介紹了關(guān)于Spring Boot詳細(xì)打印啟動(dòng)時(shí)異常堆棧信息的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Spring Boot具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10
Java創(chuàng)建可執(zhí)行的Jar文件的方法實(shí)踐
創(chuàng)建的可執(zhí)行Jar文件實(shí)際就是在原始Jar的清單文件中添加了Main-Class的配置,本文主要介紹了Java創(chuàng)建可執(zhí)行的Jar文件的方法實(shí)踐,感興趣的可以了解一下2023-12-12
Java實(shí)現(xiàn)字符串和輸入流的相互轉(zhuǎn)換
這篇文章主要介紹了Java實(shí)現(xiàn)字符串和輸入流的相互轉(zhuǎn)換方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08
Java漢字轉(zhuǎn)拼音工具類完整代碼實(shí)例
這篇文章主要介紹了java漢字轉(zhuǎn)拼音工具類完整代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03

