spring boot dubbo多模块项目搭建(二)

上一篇《spring boot dubbo多模块项目搭建(一)》创建多模块的项目。本文将在此基础上配置数据库连接,并进行单元测试,web访问。

1、引入依赖包,配置pom.xml文件。

springBootParent的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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>

   <groupId>com.example</groupId>
   <artifactId>springBootParent</artifactId>
   <version>0.0.1-SNAPSHOT</version>
   <packaging>pom</packaging>

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

   <parent>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-parent</artifactId>
      <version>2.0.2.RELEASE</version>
      <relativePath/> <!-- lookup parent from repository -->
   </parent>
   <modules>
      <module>springBootApi</module>
      <module>springBootClient</module>
      <module>springBootServer</module>
   </modules>
   <properties>
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
      <java.version>1.8</java.version>
      <druid.version>1.0.18</druid.version>
      <mysql.version>5.1.38</mysql.version>
      <mybatis.version>1.2.0</mybatis.version>
   </properties>
   <dependencyManagement>
      <dependencies>
         <!-- 数据库依赖 -->
         <!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
         <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>${druid.version}</version>
         </dependency>
         <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
         <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>${mysql.version}</version>
         </dependency>
         <!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter -->
         <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>${mybatis.version}</version>
         </dependency>
      </dependencies>
   </dependencyManagement>

</project>

项目通过springBootServer连接数据库,springBootServer的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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.example</groupId>
   <artifactId>springBootServer</artifactId>
   <version>0.0.1-SNAPSHOT</version>
   <packaging>jar</packaging>
   <name>springBootServer</name>
   <description>Demo project for Spring Boot</description>
   <parent>
      <groupId>com.example</groupId>
      <artifactId>springBootParent</artifactId>
      <version>0.0.1-SNAPSHOT</version>
      <relativePath>../pom.xml</relativePath>
   </parent>
   <dependencies>
      <dependency>
         <groupId>com.example</groupId>
         <artifactId>springBootApi</artifactId>
         <version>0.0.1-SNAPSHOT</version>
      </dependency>
      <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>
      </dependency>
      <!-- 数据库依赖 -->
      <dependency>
         <groupId>com.alibaba</groupId>
         <artifactId>druid</artifactId>
      </dependency>
      <dependency>
         <groupId>mysql</groupId>
         <artifactId>mysql-connector-java</artifactId>
      </dependency>
      <dependency>
         <groupId>org.mybatis.spring.boot</groupId>
         <artifactId>mybatis-spring-boot-starter</artifactId>
      </dependency>
   </dependencies>
   <build>
      <plugins>
         <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
         </plugin>
      </plugins>
   </build>
</project>

在springBootApi中创建LoginUser实体,service接口,mapper接口,mapper下xml文件,目录结构如下:

spring boot dubbo多模块项目搭建(二)spring boot dubbo多模块项目搭建(二)

具体涉及到的文件如下:

ILoginUser:

public interface ILoginUser {
    void insertLoginUser(LoginUser loginUser);
    LoginUser selectLoginUser();
}
@Mapper
public interface LoginUserDao {

   void insert(LoginUser loginUser);
   LoginUser select();
}
public class LoginUser {
    private int id;
    private String userName;
    private String pwd;
    private String phone;
    private String address;
    private int age;
    private Date createTime;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getPwd() {
        return pwd;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    @Override
    public String toString() {
        return "LoginUser{" +
                "id=" + id +
                ", userName='" + userName + '\'' +
                ", pwd='" + pwd + '\'' +
                ", phone='" + phone + '\'' +
                ", address='" + address + '\'' +
                ", age=" + age +
                ", createTime=" + createTime +
                '}';
    }
}
<?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.example.springBootApi.mapper.login.LoginUserDao">
  <resultMap id="BaseResultMap" type="com.example.springBootApi.model.login.LoginUser">
    <id column="id" jdbcType="INTEGER" property="id" />
    <result column="user_name" jdbcType="VARCHAR" property="userName" />
    <result column="pwd" jdbcType="VARCHAR" property="pwd" />
    <result column="phone" jdbcType="VARCHAR" property="phone"/>
    <result column="address" jdbcType="VARCHAR" property="address" />
    <result column="age" jdbcType="INTEGER" property="age"/>
    <result column="create_time" jdbcType="TIMESTAMP" property="createTime"/>
  </resultMap>
  <insert id="insert" parameterType="com.example.springBootApi.model.login.LoginUser">
    insert into loginUser(user_name,pwd,phone,address,age,create_time)values(#{userName},#{pwd},#{phone},#{address},#{age},#{createTime});
  </insert>
  <select id="select" resultMap="BaseResultMap">
    select * from loginUser limit 0,1;
  </select>
</mapper>

springBootServer目录结构如下:

spring boot dubbo多模块项目搭建(二)

添加文件如下:

@Service
@ComponentScan(basePackages = {"com.example.springBootApi"})
public class LoginUserImpl implements ILoginUser {
    @Autowired
    private LoginUserDao loginUserDao;
    @Override
    public void insertLoginUser(LoginUser loginUser) {
        loginUserDao.insert(loginUser);
    }

    @Override
    public LoginUser selectLoginUser() {
        return loginUserDao.select();
    }
}

测试文件如下:

@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringBootServerApplicationTests {
   @Autowired
   private LoginUserImpl loginUserImpl;

   @Test
   public void contextLoads() {
   }

   @Test
   public void insert(){
      LoginUser loginUser = new LoginUser();
      loginUser.setPhone("15201327333");
      loginUser.setAddress("3");
      loginUser.setAge(13);
      loginUser.setCreateTime(new Date());
      loginUser.setUserName("55");
      loginUser.setPwd("123456");
      loginUserImpl.insertLoginUser(loginUser);

   }
   @Test
   public void select(){
      LoginUser loginUser = loginUserImpl.selectLoginUser();
      System.out.println("impl "+loginUser);
   }

}

直接运行insert方法,select方法,通过控制台可以看到运行结果。

配置springBootClient进行web端访问。项目目录结构如下:

spring boot dubbo多模块项目搭建(二)

修改的文件如下:

pom中添加web依赖项

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-web</artifactId>
</dependency>
@RestController
@RequestMapping("/login")
public class LoginUserControl {

    private final static Logger logger = LoggerFactory.getLogger(LoginUserControl.class);
    @Autowired
    ILoginUser loginUserImpl;

    @RequestMapping("/findOne")
    @ResponseBody
    public LoginUser findOneById(){
        logger.info("findOneById-------- ");
        LoginUser user = loginUserImpl.selectLoginUser();
        logger.info(user.toString());
        return user;
    }
}

属性配置文件

spring.datasource.username=root
spring.datasource.password=root123456
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.url=jdbc:mysql://127.0.0.1:3308/devicetest?useUnicode=true&characterEncoding=UTF8&useSSL=true

mybatis.mapper-locations=classpath:mapper/*.xml

启动类添加包扫描

@SpringBootApplication
@ComponentScan("com.example")
public class SpringBootClientApplication {

   public static void main(String[] args) {
      SpringApplication.run(SpringBootClientApplication.class, args);
   }
}

直接运行main,可以启动内置web容器,默认端口8080。

可以直接通过http://127.0.0.1:8080/login/findOne 访问查看。