文档下载建议反馈入口

  • 前提条件
  • 配置连接
  • 配置示例

MyBatis-Plus 连接 KaiwuDB 数据库

MyBatis-Plusopen in new window 基于 MyBatis 进行扩展,支持更多便捷功能。例如,条件构造器、分页插件、代码生成器等,有助于提高开发效率。

本文档介绍如何基于 SpringBoot+Maven 项目使用 MyBatis-Plus 连接 KaiwuDB。用户在完成配置后,可以基于 MyBatis-Plus 框架的应用程序开发流程,编写应用程序对 KaiwuDB 数据库进行操作。

前提条件

  • 安装 Javaopen in new window(1.8 及以上版本)。
  • 安装 Mavenopen in new window(3.6 及以上版本)。
  • 安装 KaiwuDB 数据库、配置数据库认证方式、创建数据库、创建具有表级别及以上操作权限的用户。
  • 获取 KaiwuDB JDBC 驱动包。
  • 获取 MyBatis-Plus 驱动包。

配置连接

  1. 运行以下命令,将 KaiwuDB JDBC 安装到本地 Maven 仓库中。

    mvn install:install-file"-Dfile=../kaiwudb-jdbc.2.0.4.jar" "-DgroupId=com.kaiwudb" "-DartifactId=kaiwudb-jdbc" "-Dversion=2.0.4" "-Dpackaging=jar"
    
  2. pom.xml 中添加依赖,将 KaiwuDB JDBC、MyBatis-Plus、Lombok 等依赖引入到应用程序中。

    <dependencies>
        <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter</artifactId>
        </dependency>
    
        <!-- web -->
        <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    
        <!-- kaiwudb-jdbc -->
        <dependency>
          <groupId>com.kaiwudb</groupId>
          <artifactId>kaiwudb-jdbc</artifactId>
          <version>2.0.4</version>
        </dependency>
    
        <!-- mybatis plus -->
        <dependency>
          <groupId>com.baomidou</groupId>
          <artifactId>mybatis-plus-boot-starter</artifactId>
          <version>3.5.5</version>
        </dependency>
    
        <!-- swagger -->
        <dependency>
          <groupId>com.github.xiaoymin</groupId>
          <artifactId>knife4j-spring-boot-starter</artifactId>
          <version>2.0.4</version>
        </dependency>
    
        <!-- lombok -->
        <dependency>
          <groupId>org.projectlombok</groupId>
          <artifactId>lombok</artifactId>
          <version>1.18.28</version>
          <scope>provided</scope>
        </dependency>
      </dependencies>
    
  3. 配置数据源。

    application.yml 文件配置数据源信息。

    说明

    以下示例展示如何连接单个数据库。如需要连接多个数据库,参见 MyBatis 配置示例

    spring: 
      # 配置数据源信息
      datasource:
        # 配置连接数据库信息
        driver-class-name: com.kaiwudb.Driver
        url: jdbc:kaiwudb://127.0.0.1:26257/lyvs
        username: <user_name>
        password: <password>
    
    # Swagger-UI 配置
    knife4j:
      enable: true
      basic:
        enable: false
        username: root
        password: <password>
    
    # 服务启动端⼝配置
    server:
      port: 8989 
    
  4. (可选) 如需实现分页查询,创建配置类,例如 MybatisPlusConfig,并添加分页配置。

    @Configuration
    public class MybatisPlusConfig {
      @Bean
      public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.POSTGRE_SQL));
        return interceptor;
      }
    }
    

配置示例

以下示例假设已经在数据库中创建了名为危化品车辆的表,批量插入了部分数据,并提供外部接口来接受外部请求。

  1. 编写实体类 whp.java

    @Data
    public class Whp {
      private Timestamp gtime = new Timestamp(System.currentTimeMillis());
      private String transporttaskno = "transporttaskno";
      private String hipperId = "hipperId";
      private String hipperName = "hipperName";
      private String hipperPhone = "hipperPhone";
      private String transportId = "transportId";
      private String transportName = "transportName";
      private String transportPhone = "transportPhone";
      private String transportZi = "1";
      private String transportNo = "transportNo";
      private String jjlxdh = "jjlxdh";
      private String cmvecid = "cmvecid";
      private String branum = "branum";
      private String vectype = "1";
      private String bracolor = "2";
      private String supercargoid = "supercargoid";
      private String supercargoname = "supercargoname";
      private String supercargonum = "supercargonum";
      private String supercargophone = "supercargophone";
      private String driverid = "driverid";
      private String drivernum = "drivernum";
      private String drivername = "drivername";
      private String driverphone = "driverphone";
    }
    
  2. 创建 Mapper 接口类映射的 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.inspur.kwdb.mapper.WhpMapper">
    
      <insert id="insertList"
      parameterType="java.util.List">
        insert into dcjg_whp_wxhwdlysdzqd  (gtime,transporttaskno,hipper_id,hipper_name,hipper_phone,transport_id,transport_name,transport_phone,transport_zi,transport_no,jjlxdh,cmvecid,branum,vectype,bracolor,supercargoid,supercargoname,supercargonum,supercargophone,driverid,drivernum,drivername,driverphone)
        values
        <foreach
      collection="list" item="item" separator=",">
          ('${item.gtime}',
          '${item.transporttaskno}',
          '${item.hipperId}',
          '${item.hipperName}',
          '${item.hipperPhone}',
          '${item.transportId}',
          '${item.transportName}',
          '${item.transportPhone}',
          '${item.transportZi}',
          '${item.transportNo}',
          '${item.jjlxdh}',
          '${item.cmvecid}',
          '${item.branum}',
          '${item.vectype}',
          '${item.bracolor}',
          '${item.supercargoid}',
          '${item.supercargoname}',
          '${item.supercargonum}',
          '${item.supercargophone}',
          '${item.driverid}',
          '${item.drivernum}',
          '${item.drivername}',
          '${item.driverphone}')
        </foreach>
      </insert>
    </mapper>
    
  3. 创建 Service 接口 WhpService.java

    public interface WhpService {
      void createTable();
      int insertList();
      List<Whp> findList();
    }
    
  4. 创建 Service 接口实现类。

    @Service
    class WhpServiceImpl implements WhpService {
      @Autowired
      private WhpMapper mapper;
    
      @Override
      public void createTable() {
        mapper.createTable();
      }
    
      @Override
      public int insertList() {
        List<Whp> list = new ArrayList<>();
        list.add(new Whp());
        list.add(new Whp());
        list.add(new Whp());
        return mapper.insertList(list);
      }
    
      @Override
      public List<Whp> findList() {
        Timestamp startTime = Timestamp.valueOf("2023-11-01 00:00:00");
        Timestamp endTime = Timestamp.valueOf("2023-11-30 23:59:59");
        return mapper.findList(startTime,endTime);
      }
    }
    
  5. 创建外部接口,访问 Controller 层。

    @RestController
      @RequestMapping("whp")
      @Api(tags = "1 危化品车辆接口")
      @ApiSort(value = 1)
      public class WhpController {
        private final static Logger LOGGER = LoggerFactory.getLogger(WhpController.class);
    
        @Autowired
        private WhpService service;
    
        @ApiOperation(value = "1.1 创建危化品车辆表")
        @ApiOperationSupport(order = 10)
        @GetMapping("create")
        public String create() {
          try {
            service.createTable();
            return "创建危化品车辆表成功";
          } catch (Exception e) {
            LOGGER.info(e.getMessage());
            return "创建危化品车辆表失败: " + e.getMessage();
          }
        }
    
        @ApiOperation(value = "1.2 批量插入危化品车辆数据")
        @ApiOperationSupport(order = 20)
        @GetMapping("add")
        public int add() {
          try {
            return service.insertList();
          } catch (Exception e) {
            LOGGER.info(e.getMessage());
          }
          return 0;
        }
    
        @ApiOperation(value = "1.3 查询危化品车辆数据列表")
        @ApiOperationSupport(order = 30)
        @GetMapping("list")
        public List<Whp> findList() {
          try {
            return service.findList();
          } catch (Exception e) {
            LOGGER.info(e.getMessage());
          }
          return null;
        }  
    }
    
  6. 创建配置类 WhpConfig

    @Configuration
    public class MybatisPlusConfig {
      @Bean
      public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.POSTGRE_SQL));
        return interceptor;
      }
    }