Maven搭建Springboot+MyBatisPlus+人大金仓数据库

前言

最近做一个项目,因为国产化的需要,甲方要求使用人大金仓数据库。赶紧查了下MyBatisPlus可以适配,就打算搭建一套简单Springboot+MyBatisPlus+人大金仓数据库的环境,用来进行一些简单的验证。

环境

Eclipse Oxygen

JAVA1.8

Springboot2.6.2

MyBatis3.5.2

人大金仓数据库kingbase8.6.0

搭建环境

这里就直接略过下载、安装和配置,除了金仓数据库相对陌生,其他的几个java开发者应该都非常熟悉了。金仓数据库安装也不难,官网下载安装包,如果是个人开发者的话,下载开发版授权文件,安装时选择授权文件。个人开发版的限制还是比较多,限制最大连接数是10,我用数据库管理工具连接,再用数据库迁移工具连的时候就报连接数超了。

数据库准备工作

我们要在金仓数据库中创建database,并且创建表,插入测试数据。

首先直接创建数据库

然后创建表,执行sql语句创建users表。因为user关键字冲突,所以表名用users:

CREATE TABLE "public".users (
    id bigint AUTO_INCREMENT NOT NULL,
    name varchar(30) NOT NULL,
    age integer NOT NULL,
    email varchar(50) NOT NULL
);

ALTER TABLE "public".users SET
TABLESPACE "sys_default";

COMMENT ON
COLUMN "public".users.id IS '主键';

COMMENT ON
COLUMN "public".users.name IS '姓名';

COMMENT ON
COLUMN "public".users.age IS '年龄';

COMMENT ON
COLUMN "public".users.email IS '邮箱';

ALTER TABLE "public".users ADD CONSTRAINT con_public_users_constraint_1 PRIMARY KEY (id) ENABLE VALIDATE;

插入数据:

INSERT INTO users (id, name, age, email) VALUES
(1, 'Jone', 18, '[email protected]'),
(2, 'Jack', 20, '[email protected]'),
(3, 'Tom', 28, '[email protected]'),
(4, 'Sandy', 21, '[email protected]'),
(5, 'Billie', 24, '[email protected]');

新建maven项目

使用Eclipse新建maven项目。

pom文件配置如下:

    <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.sadoshi</groupId>
    <artifactId>kingbase</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.6.2</version>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.2</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.10</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.20</version>
        </dependency>
        <dependency>
            <groupId>com.kingbase8</groupId>
            <artifactId>kingbase8</artifactId>
            <version>8.6.0</version>
        </dependency>

    </dependencies>

    <!--插件 -->
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

上面这里会报个错,因为maven中央仓库是没有kingbase8的8.6.0版本,后面我们需要做一个到本地maven仓库里面。

在application.ym对项目进行一些配置,包括数据库连接等:

server:
  port: 9999

spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driverClassName: com.kingbase8.Driver
    url: jdbc:kingbase8://127.0.0.1:54321/mybatisplus_test
    username: system
    password: 12345678
    druid:
      stat-view-servlet:
        enabled: false

注意driverClassName替换成了金仓数据库的驱动。

安装kingbase8的jar到本地maven

在金仓数据库安装目录下找到kingbase8-8.6.0.jar。我们要把他安装到本地maven中,这样pom文件那里就不会报错

在命令行执行命令:

mvn install:install-file -DgroupId=com.kingbase8 -DartifactId=kingbase8 -Dversion=8.6.0 -Dpackaging=jar -Dfile=(kingbase的jar包路径)\kingbase8-8.6.0.jar

PS:有时候会报“The goal you specified requires a project to execute but there is no POM in this directory”的错误。试着把所有参数都加上双引号:

mvn install:install-file "-DgroupId=com.kingbase8" "-DartifactId=kingbase8" "-Dversion=8.6.0" "-Dpackaging=jar" "-Dfile=(kingbase的jar包路径)\kingbase8-8.6.0.jar"

编写代码

前面准备工作都做好了,接下来要写业务代码。

创建主类App,加上@MapperScan注解扫描指定目录下的mapper:

package kingdb;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan("kingdb.mapper")
public class App {

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

创建一个测试用控制类HelloController,一会测试的时候访问“/getStudent”这个路径,看控制台能否打印出学生列表:

package kingdb.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import kingdb.entity.User;
import kingdb.mapper.UserMapper;

@RestController
public class HelloController {

    @Autowired
    private UserMapper userMapper;
    
    @RequestMapping("/test")
    public String test() {
        return "test";
    }
    
    @RequestMapping("/getStudent")
    public String getStudent() {
        List<User> userList = userMapper.selectList(null);
        userList.forEach(System.out::println);
        return "getStudent";
    }
}

创建实体类User,这里使用@TableName注解指定实体类对应的数据库表名:

package kingdb.entity;

import com.baomidou.mybatisplus.annotation.TableName;

import lombok.Data;

@Data
@TableName("users")
public class User {
    private Long id;
    private String name;
    private Integer age;
    private String email;
}

创建Mapper类:

package kingdb.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;

import kingdb.entity.User;

public interface UserMapper extends BaseMapper<User>{

}

测试

启动App类,浏览器访问http://localhost:9999/getStudent。因为我前面application.yml设置Server端口是9999,所以访问端口是这个。

然后查看控制台:

成功打印学生信息。证明MyBatisPlus对接金仓数据库验证完成。

小结

金仓数据库有些语法与mysql不同,比如说这个users的建表语句,我是通过数据库工具建表后生成的ddl,和MyBatisPlus官网例子mysql的建表语句还是有些差别。如果想使用一些成熟的框架作为底座,又被要求使用金仓数据库,可以先用mysql建好数据库,再通过金仓数据库的数据库迁移工具迁过去。比如我使用jeecg这个框架,就是先在mysql建好表,然后通过工具迁移过去。直接改建表sql太麻烦了,而且和mysql语法出入又多。

猜你喜欢

转载自blog.csdn.net/sadoshi/article/details/129731360