1.maven+springboot+mybatis+jersey整合

項目摘要:

  1. 【2020-06-13】第一次更新:爲了更好的整合springcloud,將getUser(Integer id)更新爲getUser(String username),修改了部分代碼。
  2. 本文是springToolSuit4構建項目,它本質上就是Eclipse,下面以Eclipse爲名稱引用。
  3. 項目摘要圖

  • 項目具體實施:
  1. 新建maven項目爲根項目,名稱爲user-system,修改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.2.7.RELEASE</version>

              <relativePath/> <!-- lookup parent from repository -->

       </parent>

       <groupId>com.yuji</groupId>

       <artifactId>user-system</artifactId>

       <version>0.0.1-SNAPSHOT</version>

       <name>user-system</name>

       <packaging>pom</packaging>

       <description>Demo project for Spring Boot</description>

 

       <properties>

           <project.buid.sourceEncoding>UTF-8</project.buid.sourceEncoding>

              <projec.reporting.outputEncoding>UTF-8</projec.reporting.outputEncoding>

              <java.version>1.8</java.version>

       </properties>

 

       <dependencies>

              <dependency>

                     <groupId>org.springframework.boot</groupId>

                     <artifactId>spring-boot-starter</artifactId>

              </dependency>

 

              <dependency>

                     <groupId>org.springframework.boot</groupId>

                     <artifactId>spring-boot-starter-test</artifactId>

                     <scope>test</scope>

                     <exclusions>

                            <exclusion>

                                   <groupId>org.junit.vintage</groupId>

                                   <artifactId>junit-vintage-engine</artifactId>

                            </exclusion>

                     </exclusions>

              </dependency>

       </dependencies>

       <build>

              <plugins>

                     <plugin>

                            <groupId>org.springframework.boot</groupId>

                            <artifactId>spring-boot-maven-plugin</artifactId>

                     </plugin>

              </plugins>

       </build>

</project>

  1. 創建user-service項目,並修改pom如下內容:

<?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">

       <parent>

       <groupId>com.yuji</groupId>

       <artifactId>user-system</artifactId>

       <version>0.0.1-SNAPSHOT</version>

       <relativePath>../user-system/pom.xml</relativePath>

       </parent>

       <modelVersion>4.0.0</modelVersion>

       <artifactId>user-service</artifactId>

       <name>user-service</name>

       <description>Demo project for Spring Boot</description>

       <dependencies>

       </dependencies>

</project>

  1. 在父項目引入該模塊:

<?xml version="1.0" encoding="UTF-8"?>

    ....

    <build>....

       </build>

       <modules>

              <module>../user-service</module>

       </modules>

</project>

  1. springboot【2.2.7.RELEASE】與Jersey整合。
  1. 在pom導入依賴

<dependency>

                <groupId>org.springframework.boot</groupId>

                <artifactId>spring-boot-starter-jersey</artifactId>

           </dependency>

           <dependency>

                <groupId>org.mybatis.spring.boot</groupId>

                <artifactId>mybatis-spring-boot-starter</artifactId>

                <version>1.3.2</version>

           </dependency>

           <dependency>

                <groupId>mysql</groupId>

                <artifactId>mysql-connector-java</artifactId>

           </dependency>在com.yuji中加入Jersey配置,新建JerseyConfig.java:

package com.yuji;

import org.glassfish.jersey.server.ResourceConfig;

import org.glassfish.jersey.server.spring.scope.RequestContextFilter;

import org.springframework.stereotype.Component;

@Component

public class JerseyConfig extends ResourceConfig{

      public JerseyConfig() {         

      register(RequestContextFilter.class);

      register(UserResource.class);

        }

}

  1. 新建包com.yuji.entity創建User類:

package com.yuji.entity;

import java.io.Serializable;

public class User implements Serializable{

     private static final long serialVersionUID = 1L;

     private int id;

     private String username;

private String password;

     private int age;

     private String job;

   //  省略get/set    

     }

}

  1. 新建包com.yuji.resource創建UserResource類進行測試整合:

package com.yuji.resource;

import javax.ws.rs.GET;

import javax.ws.rs.Path;

import javax.ws.rs.Produces;

import javax.ws.rs.core.MediaType;

import com.yuji.entity.User;

@Path("user")

public class UserResource {

     @GET

     @Produces(MediaType.APPLICATION_JSON)

     public User getUser () {

           User user = new User();

           user.setId(1);

           user.setUsername("jack");

           user.setAge(12);

           user.setJob("java工程師");

           return user;

     }

}

  1. 瀏覽器輸入:localhost:8080/user如果正常輸出,則整合成功。
  1. springboot與mybatis整合
  1. 在mysql新建一個數據庫user_system,並執行如下語句

CREATE TABLE `user` (

 `id` int(11) NOT NULL AUTO_INCREMENT,

 `username` varchar (255) DEFAULT NULL,

`password` varchar (255) DEFAULT NULL,

`age` int(11) DEFAULT NULL,

 `job` varchar(255) DEFAULT NULL,

 PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

INSERT INTO user VALUES (1, 'jack', '123456', 12, 'java工程師');

  1. 在pom.xml中導入相關jar包:

<dependency>

                <groupId>org.mybatis.spring.boot</groupId>

                <artifactId>mybatis-spring-boot-starter</artifactId>

                <version>1.3.2</version>

           </dependency>

           <dependency>

                <groupId>mysql</groupId>

                <artifactId>mysql-connector-java</artifactId>

</dependency>

  1. 在resource下面創建application-dev.yml加入如下代碼:

server:

  port: 8081

 

spring:

  datasource:

    username: root

    password:

    url: jdbc:mysql://localhost:3306/user_system?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC

    driver-class-name: com.mysql.cj.jdbc.Driver

mybatis:

  mapper-locations: classpath:mapper/*Mapper.xml

  type-aliases-package: com.yuji.entity

在application.yml加入如下代碼:

spring:

  profiles:

  active: dev

#showSql

logging:

  level:

    com:

      yuji:

        mapper : debug

  1. 在UserServiceApplication類加入如下類註解:

@MapperScan("com.yuji.mapper")

  1. 創建mapper包,創建接口UserMapper類,完整代碼如下:

 package com.yuji.mapper;

/*----import----*/

@Repository

public interface UserMapper {

    public User getUser(String username);

     public List<User> getUsers();

     public void deleteUser(Integer id);

     public void saveUser(User user);

     public void updateUser(User user);

}

  1. 在resource中創建文件夾mapper並創建userMapper.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.yuji.mapper.UserMapper">

       <resultMap id="BaseResultMap" type="com.yuji.entity.User">

              <result column="id" jdbcType="INTEGER" property="id" />

              <result column="username" jdbcType="VARCHAR" property="username" />

              <result column="password" jdbcType="VARCHAR" property="password" />

              <result column="age" jdbcType="VARCHAR" property="age" />

              <result column="job" jdbcType="VARCHAR" property="job" />

       </resultMap>

       <select id="getUsers" resultType="com.yuji.entity.User">

              select * from user

       </select>

       <select id="getUser" resultType="com.yuji.entity.User">

              select * from user where username = #{username}

       </select>

 

       <delete id="deleteUser" parameterType="integer">

              delete  from user where id = #{id}

       </delete>

       <!-- useGeneratedKeys="true" keyProperty="id" -->

       <insert id="saveUser" parameterType="com.yuji.entity.User">

              insert into user values (#{id},#{username},#{password},#{age},#{job});

       </insert>

       <update id="updateUser" parameterType="com.yuji.entity.User">

              update user set username=#{username},password=#{password},age=#{age},job=#{job} where id=#{id}

       </update>

</mapper>

  1. 新建service包,新建接口UserService類,完整代碼如下:

package com.yuji.service;

import java.util.List;

import com.yuji.entity.User;

public interface UserService {

      public User getUserByUserName(String username);

       public List<User> getUsers();

       public void deleteUser(Integer id);

       public void saveUser(User user);

       public void update(User user);

}

  1. 新建service.impl包,新建UserServiceImpl實現類,並實現接口UserService,完整代碼如下:

package com.yuji.service.impl;

/*-----import-----*/

@Service

public class UserServiceImpl implements UserService{

       @Autowired

       UserMapper userMapper;

      

       @Override

       public User getUserByUserName(String username) {

            return userMapper.getUser(username);

      }

       @Override

       public List<User> getUsers() {

              return userMapper.getUsers();

       }

       @Override

       public void deleteUser(Integer id) {

               userMapper.deleteUser(id);

       }

       @Override

       public void saveUser(User user) {

               userMapper.saveUser(user);

       }

       @Override

       public void update(User user) {

               userMapper.updateUser(user);

       }

}

  1. 編寫測試類測試是否整合成功:

在測試包創建user.service.test包,並創建UserServiceTest類,完整代碼如下:

package com.yuji.user.service.test;

import org.junit.jupiter.api.Test;

import org.springframework.boot.test.context.SpringBootTest;

/*----other import-----*/

@SpringBootTest

class UserServiceTest {

       @Autowired

       UserService userService;

       @Test

       public void getUserTest() {

               userService.getUserByUsername("jack");

       }

       @Test

       public void getUsersTest() {

                userService.getUsers();

       }

       @Test

       public void saveUserTest() {

              User user=new User();

              user.setId(2);

              user.setUsername("張三");

              user.setPassword("123456");

              user.setAge(12);

              user.setJob("Java工程師");

              userService.saveUser(user);

       }

       @Test

       public void updateUserTest() {

              User user=new User();

              user.setId(2);

              user.setUsername("李四");

              user.setPassword("13579");

              user.setAge(14);

              user.setJob("Java工程師");

              userService.updateUser(user);

       }

       @Test

       public void deleteUserTest() {

              userService.deleteUser(2);

       }

}

  1. 修改resource包下的UserResource類並在postman工具測試連通性,完整代碼如下:

package com.yuji.resource;

 

 

import java.util.List;

/*------import------*/

@Path("user")

public class UserResource {

       @Autowired

       UserService userService;

      

       @GET

       @Path("{username}")

       @Produces(MediaType.APPLICATION_JSON)

         public User getUser(@PathParam("username")String username) {

              return userService.getUserByUserName(username);

        }

       @GET

       @Produces(MediaType.APPLICATION_JSON)

       public List<User> getAllUser(){

              return userService.getUsers();

       }

       @DELETE

       @Path("{id}")

       public Boolean deleteUser(@PathParam("id") Integer id) {

               userService.deleteUser(id);

               return true;

       }

       @PUT

       @Consumes(MediaType.APPLICATION_JSON)

       @Produces(MediaType.APPLICATION_JSON)

       public Boolean saveUser(User user) {

               userService.saveUser(user);

               return true;

       }

       @POST

       @Consumes(MediaType.APPLICATION_JSON)

       @Produces(MediaType.APPLICATION_JSON)

       public Boolean updateUser(User user) {

               userService.updateUser(user);

               return true;

       }

}

至此,初步的整合基本完成。

  1. 將該項目推送到git.
  1. 先在git創建一個空項目。在Eclipse,選擇根項目右鍵,選擇share project,取消頂部勾選。選擇根項目的上一個目錄爲git地址。如下圖:
  2. 本地commit一次代碼,然後從master分支pull代碼,之後本地新建一個develop分支後pull分支到git。查看git如圖所示則提交完成:
     
      到這裏,整個搭建基本完成。

        資料下載地址(包含一份源碼和一個文檔,該文爲最新內容,無需下載文檔,源碼和本文檔會有稍稍微不同,但是都是測試通過的):https://download.csdn.net/download/qq_25337221/12410989

  • 參考鏈接:

1.springboot與mybatis整合:https://blog.csdn.net/iku5200/article/details/82856621

本內容由安康學院“雨季”原創。

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