第一步:maven+springboot+mybatis+jersey整合

项目摘要:

  1. 本文是springToolSuit4构建项目,它本质上就是Eclipse,下面以Eclipse为名称引用。
  2. 项目摘要图

  • 项目具体实施:
  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 />

       </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);

           packages("com.yuji.resource");

        }

}

  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(Integer id);

     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 id = #{id}

       </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 getUserById(Integer id);

       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 getUserById(Integer id) {

              return userMapper.getUser(id);

       }

       @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.getUserById(1);

       }

       @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("/{id}")

       @Produces(MediaType.APPLICATION_JSON)

       public User getUser(@PathParam("id")Integer id) {

              return userService.getUserById(id);

       }

       @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整合:http://www.javashuo.com/article/p-vmyklfta-hv.html

本内容由安康学院“雨季”原创。