注意
本次操作开发工具为2017版IDEA
框架 springboot + dubbo + zookeeper
参考文章:https://blog.csdn.net/qq_36881106/article/details/82143232
- 引入pom
<!-- mybatis 所需jar包 start -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<build>
<finalName>${project.name}</finalName>
<plugins>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.2</version>
<configuration>
<!--配置文件的位置-->
<configurationFile>src/main/resources/generatorConfig.xml</configurationFile>
<verbose>true</verbose>
<overwrite>true</overwrite>
</configuration>
</plugin>
</plugins>
</build>
<!-- mybatis 所需jar包 end -->
- 创建示例表 User表
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) CHARACTER SET armscii8 COLLATE armscii8_general_ci NOT NULL,
`age` int(11) NOT NULL,
`address` varchar(255) NOT NULL,
`country` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
- 创建generatorConfig.xml文件
注意这里的generatorConfig.xml文件路径要和上面pom当中配置的路径要保持一致
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd" >
<generatorConfiguration>
<!--mysql 连接数据库jar 这里选择自己本地位置-->
<classPathEntry location="C:\Users\Administrator\.m2\repository\mysql\mysql-connector-java\5.1.47\mysql-connector-java-5.1.47.jar" />
<context id="testTables" targetRuntime="MyBatis3">
<commentGenerator>
<!-- 是否去除自动生成的注释 true:是 : false:否 -->
<property name="suppressAllComments" value="true" />
</commentGenerator>
<!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/skindow" userId="root"
password="密码">
</jdbcConnection>
<!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和
NUMERIC 类型解析为java.math.BigDecimal -->
<javaTypeResolver>
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
<!-- targetProject:生成PO类的位置 -->
<javaModelGenerator targetPackage="com.skindow.pojo"
targetProject="../skindow-api/src/main/java">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
<!-- 从数据库返回的值被清理前后的空格 -->
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!-- targetProject:mapper映射文件生成的位置
如果maven工程只是单独的一个工程,targetProject="src/main/java"
若果maven工程是分模块的工程,targetProject="所属模块的名称",例如:
targetProject="ecps-manager-mapper",下同-->
<sqlMapGenerator targetPackage="resources.mapper"
targetProject="src/main">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
</sqlMapGenerator>
<!-- targetPackage:mapper接口生成的位置 -->
<javaClientGenerator type="XMLMAPPER"
targetPackage="com.skindow.mapper"
targetProject="src/main/java">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
</javaClientGenerator>
<!-- 指定数据库表 -->
<table tableName="user" domainObjectName="User" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false"
enableSelectByExample="false" selectByExampleQueryId="false" >
</table>
</context>
</generatorConfiguration>
-
用maven运行generatorConfig
成功生成mapper配置文件和pojo以及接口
生成位置与预期是一样的
注意 这里生成的pojo需要实现Serializable接口 -
配置mybatis连接信息
yml配置信息如下
spring:
datasource:
username: root
password: 密码
url: jdbc:mysql://localhost:3306/skindow?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC
driver-class-name: com.mysql.jdbc.Driver
mybatis:
mapper-locations: classpath:mapper/*Mapper.xml
type-aliases-package: ../skindow-api/com.skindow.pojo
#showSql
logging:
level:
com:
example:
mapper : debug
启动入口添加mapper扫描路径
@MapperScan("com.skindow.mapper")
- API新增接口
package com.skindow.service;
import com.skindow.pojo.User;
/**
* Created by Administrator on 2019/8/20.
*/
public interface UserService {
public String setUser(User user);
public User getUser(String id);
}
- 新增Service层
package com.skindow.serviceImpl;
import com.alibaba.dubbo.config.annotation.Service;
import com.skindow.mapper.UserMapper;
import com.skindow.pojo.User;
import com.skindow.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
/**
* Created by Administrator on 2019/8/20.
*/
@Service
public class UserServiceImpl implements UserService{
@Autowired
private UserMapper userMapper;
@Override
public String setUser(User user) {
int insert = userMapper.insert(user);
if (insert == 0)
{
return "fail";
}
return "success";
}
@Override
public User getUser(String id) {
User user = userMapper.selectByPrimaryKey(new Integer(id));
return user;
}
}
provider-dubbo.xml
<bean id="userService" class="com.skindow.serviceImpl.UserServiceImpl"/>
<dubbo:service interface="com.skindow.service.UserService" ref="userService" version="1.0.0" timeout="10000" retries="0"/>
- 新增controller
package com.skindow.controller;
import com.alibaba.fastjson.JSON;
import com.skindow.pojo.User;
import com.skindow.service.UserService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
/**
* Created by Administrator on 2019/8/20.
*/
@Controller
@Slf4j
@RequestMapping("/api/user")
@Api("skindow-user")
public class UserController {
@Autowired
private UserService userService;
@RequestMapping(value = "/insertUser",method = RequestMethod.POST)
@ApiOperation(httpMethod = "POST", value = "添加用户", consumes = "application/json")
@ResponseBody
public String insertUser(@RequestBody User user)
{
if (null == user)
{
return "user is null!";
}
return userService.setUser(user);
}
@RequestMapping("/queryUserById")
@ApiOperation(httpMethod = "GET", value = "通过ID查询用户", consumes = "application/json")
@ResponseBody
public String queryUserById(@RequestParam(value = "id") String id)
{
return JSON.toJSONString(userService.getUser(id));
}
}
consumer-dubbo.xml
<dubbo:reference id="userService" check="false" interface="com.skindow.service.UserService" version="1.0.0" timeout="10000" retries="0"/>
- 启动服务
provider启动成功!
consumer启动成功
- 测试
这里我用wagger2测试
添加成功
查询成功
项目下载地址 对应tag springboot+mybatis整合