SpringBoot實戰系列1:Spring Boot+Mybatis+MySql實現增刪改查

前言

Spring boot項目目前是Java Web開發領域最受市場歡迎的Spring框架之一,也是構建分佈式項目、微服務項目重要基礎之一,Spring Boot免去了配置繁雜的依賴和配置,使得開發人員把更多的精力放在項目本身上,就Spring框架而言,Spring Boot可謂是集大成者,擔負着敏捷開發,前後臺分離、模塊低耦合的神聖使命;麻將哥也是一個忠實的SpringBoot fans,這篇教程零基礎的帶大家從新建項目開始,完成一個流程的CRUD。本教程採用Spring Boot+Mybatis+Mysql實現,麻將哥MySql的版本是5.7,建議大家的Mysql是5.7或者5.7+。需要完整源碼的小夥伴可以關注麻將哥的微信公衆號“碼匠心”自行獲取,謝謝大家!

 

準備工作

編輯器:InteIIiJ IDEA

MySql數據庫表設計:

IDEA新建Spring Boot 項目這篇文章就不再累贅,需要的小夥伴可以查看麻將哥的上一篇的博客。

構建項目

  1. 使用IDEA新建項目後,目錄結構如下:

     

    2.在curddemo目錄新建5個package,分別爲bean,config,controller,mapper,service,bean主要用來放置實體類文件,config要來放置放置Swagger接口文檔的配置類文件,controller用來放置程序控制器(API)類文件,service用來放置處理業務邏輯的類文件,mapper用來放置於數據庫映射相關的類文件。建成項目目錄如下:

2.在pom.xml文件下添加以下依賴:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.9.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.yisio</groupId>
    <artifactId>curddemo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>curddemo</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>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-undertow</artifactId>
        </dependency>

        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.2</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-websocket</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>3.17</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-websocket</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-cache</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>


        <!-- swagger -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.9.2</version>
        </dependency>
        <!-- swagger-ui -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.9.2</version>
        </dependency>
        <!-- druid數據庫連接池-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.10</version>
        </dependency>
       <!--mysql驅動-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
            </resource>
        </resources>
    </build>

</project>

 3.在resources目錄的application.properties文件裏配置mysql連接信息:

#Created by 碼匠心 on 2019/10/05.
#MySQL配置
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.url=jdbc:mysql://localhost:3306/springbootdemo?serverTimezone=UTC&characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=root
#MyBatis日誌配置
mybatis.config-location=classpath:/mybatis-config.xml
#端口配置
server.port=8080
4.在resources目錄下新建mybatis日誌文件mybatis-config.xml
<!--Created by 碼匠心 on 2019/10/05.-->
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <settings>
        <setting name="logImpl" value="STDOUT_LOGGING" />
    </settings>
</configuration>

5.在bean目錄下新建實體類User.java

package com.yisio.curddemo.bean;
/**
 * Created by 碼匠心 on 2019/10/05.
 */
public class User {
    public Integer UserId;
    public String UserName;
    public boolean Sex;
    public boolean Wedlock;
    public String Place;
    public  void setUserId(Integer UserId){this.UserId=UserId;}
    public  void  setUserName(String UserName){this.UserName=UserName;}
    public  void  setSex(boolean Sex){this.Sex=Sex;}
    public  void  setWedlock(boolean Wedlock){this.Wedlock=Wedlock;}
    public  void  setPlace(String Place){this.Place=Place;}
}

6.在config目錄下新建Swagger在線接口文檔的配置文件SwaggerConfig.java

@Configuration
@EnableSwagger2
public class SwaggerConfig {
        @Bean
        public Docket api(){
            return  new Docket(DocumentationType.SWAGGER_2)
                    .apiInfo(apiInfo())
                    .select()
                    .apis(RequestHandlerSelectors.any())
                    .paths(PathSelectors.any())
                    .build();
        }
        private ApiInfo apiInfo() {
            return new ApiInfoBuilder()
                    //文檔標題
                    .title(" Spring Boot RESTful API")
                    // 版本號
                    .version("1.0")
                    // 標題描述
                    .description("swagger在線文檔")
                    .build();
        }
    }

7.在mapper目錄下新建UserMapper接口文件,新建增刪改查的四個方法

package com.yisio.curddemo.mapper;

import com.yisio.curddemo.bean.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
 * Created by 碼匠心 on 2019/10/05.
 */
import java.util.List;
@Mapper
public interface UserMapper {
     List<User> getAllUser();
     int AddUser(User users);
     int updateUser(@Param("users") User users);
     int deleteUserByUserId(@Param("ids") String[] ids);
}

8.在mapper目錄下新建UserMapper.xml文件,使用mybtis操作數據庫

<!--Created by 碼匠心 on 2019/10/05.-->
<?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.yisio.curddemo.mapper.UserMapper">
    <resultMap id="BaseResultMap" type="com.yisio.curddemo.bean.User">
        <result column="UserId" property="UserId"/>
        <result column="UserName" property="UserName"/>
        <result column="Sex" property="Sex"/>
        <result column="Wedlock" property="Wedlock"/>
        <result column="Place" property="Place"/>
    </resultMap>
     <select id="getAllUser" resultMap="BaseResultMap">
         select * from sysuser;
     </select>
    <insert id="AddUser"  parameterType="com.yisio.curddemo.bean.User">
        insert into sysuser(UserName,Sex,Wedlock,Place)
        values(#{UserName,jdbcType=VARCHAR},
              #{Sex,jdbcType=BOOLEAN},
              #{Wedlock,jdbcType=BOOLEAN},
              #{Place,jdbcType=VARCHAR})
    </insert>
    <update id="updateUser">
        update sysuser
        <set>
            UserName=#{users.UserName,jdbcType=VARCHAR},
            Sex=#{users.Sex,jdbcType=BOOLEAN},
            Wedlock=#{users.Wedlock,jdbcType=BOOLEAN},
            Place=#{users.Place,jdbcType=VARCHAR}
        </set>
        where UserId=#{users.UserId,jdbcType=INTEGER}
    </update>
    <delete id="deleteUserByUserId">
         DELETE  from sysuser where UserId in
        <foreach collection="ids" separator="," open="(" close=")" item="id">
            #{id}
        </foreach>
    </delete>

</mapper>

9.在service目錄下新建業務邏輯類UserService.java

package com.yisio.curddemo.service;

import com.yisio.curddemo.bean.User;
import com.yisio.curddemo.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;
/**
 * Created by 碼匠心 on 2019/10/05.
 */
@Service
@Transactional
public class UserService {
    @Autowired
    UserMapper userMapper;
    public List<User> getAllUser(){
        return userMapper.getAllUser();
    }
    private  void UserDo(User users)
    {
        users.setUserId(users.UserId);
        users.setUserName(users.UserName);
        users.setPlace(users.Place);
        users.setSex(users.Sex);
        users.setWedlock(users.Wedlock);
    }
    public int AddUser(User users)  {
        UserDo(users);
        return userMapper.AddUser(users);
    }
    public  int updateUser(User users){
        UserDo(users);
        return userMapper.updateUser(users);
    }
    public  boolean deleteUserByUserId(String ids){
      String[] split = ids.split(",");
      return userMapper.deleteUserByUserId(split) == split.length;
    }
}

10.在controller目錄下新建業務接口類UserController.java

package com.yisio.curddemo.controller;

import com.yisio.curddemo.bean.User;
import com.yisio.curddemo.service.UserService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.Map;
/**
 * Created by 碼匠心 on 2019/10/05.
 */
@RestController
@RequestMapping("/User/UserData")
@Api(value = "UserController",description = "用戶管理")
public class UserController {
    @Autowired
    UserService userService;

    @ApiOperation(value = "用戶查詢")
    @RequestMapping(value = "/UserData",method = RequestMethod.GET)
    public Map<String,Object> getAllUser(){
          Map<String,Object> map=new HashMap<>();
          map.put("User",userService.getAllUser());
          return map;
    }
    @ApiOperation(value = "新增用戶")
    @RequestMapping(value = "/UserData/AddUser",method = RequestMethod.POST)
    public String AddUser(User users) { 
        if (userService.AddUser(users)==1)
            return "新增成功!";
        return  "新增失敗!";
    }
    @ApiOperation(value = "修改用戶")
    @RequestMapping(value = "/UserData/updateUser",method = RequestMethod.PUT)
    public String updateUser(User users){
        if (userService.updateUser(users)==1)
            return "修改成功!";
        return "修改失敗!";
    }
    @ApiOperation(value = "刪除用戶")
    @RequestMapping(value = "/UserData/deleteUser/{ids}",method = RequestMethod.DELETE)
    public String deleteUserByUserId(@PathVariable String ids){
        if(userService.deleteUserByUserId(ids))
          return "刪除成功!";
        return "刪除失敗!";
    }
}

10.最後的項目結構如下:

11.點擊右上角項目啓動按鈕,運行項目,啓動窗口看到如下信息則說明項目啓動成功

12.在瀏覽器裏輸入URL:http://localhost:8080/swagger-ui.html#/,Swagger界面如下:

到這裏我們的項目就啓動成功了,執行Swagger接口文檔裏面的各個接口就能執行相應的增刪改查操作!

如果需要完整的源碼的小夥伴可關注麻將哥的微信公衆號“碼匠心”,自行獲取,謝謝大家!

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章