开篇

现在我们来实际用代码操作下,连接下数据库,看看它是否能和其他数据库一样

首先创建个springboot项目,怎么创建我们就不多加赘述;

由于是国产数据库,他有自己的驱动:com.oscar.Driver

那么这个驱动所依赖的包从哪来的?目前在maven库中我们搜索不到,只有在官网提供的安装目录下我们才能发现

神通数据库 python源码 神通数据库下载_数据库

引入

引入依赖包:
1.引入oscar jar包
我们将oscarJDBC16.jar包放在项目目录lib下,然后maven中依赖这个jar包

<dependency>
            <groupId>com.oscarjdbc</groupId>
            <artifactId>oscarJDBC16</artifactId>
            <version>1.0</version>
            <scope>system</scope>
            <systemPath>${basedir}/src/main/lib/oscarJDBC16.jar</systemPath>
        </dependency>

2.引入mybatis依赖包
由于我们创建数据库还是使用mybatis-genneration,快速创建,所以需要有以下依赖

<dependency>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-core</artifactId>
            <version>1.3.7</version>
        </dependency>

        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.2</version>
        </dependency>

快速创建代码

在resources目录下创建generatorConfig.xml

<?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>

    <!-- <classPathEntry location="F:/cache/mysql-connector-java-5.1.28-bin.jar" /> -->
    <context id="testTables"    targetRuntime="MyBatis3">

        <commentGenerator>
            <property name="suppressAllComments" value="true"/>
        </commentGenerator>

        <jdbcConnection driverClass="com.oscar.Driver" connectionURL="jdbc:oscar://192.168.1.xx:2003/OSRDB" userId="SYSDBA" password="szoscar55">

        </jdbcConnection>
        
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false"/>
        </javaTypeResolver>
        
        <javaModelGenerator targetPackage="com.study.modules.database.model" targetProject=".\src\main\resources\mybatis">
            <property name="enableSubPackages" value="false"/>
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>
        
        <sqlMapGenerator targetPackage="com.study.modules.database.mapper" targetProject=".\src\main\resources\mybatis">
            <property name="enableSubPackages" value="false"/>
        </sqlMapGenerator>
        
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.study.modules.database.dao" targetProject=".\src\main\resources\mybatis">
            <property name="enableSubPackages" value="false"/>
        </javaClientGenerator>



        <table tableName="AUTH_USER"
               enableCountByExample="false"
               enableUpdateByExample="false"
               enableDeleteByExample="false"
               enableSelectByExample="false"
               selectByExampleQueryId="false"
        >
            <property name="useActualColumnNames" value="true"/>
        </table>

        <table tableName="testdb"
               enableCountByExample="false"
               enableUpdateByExample="false"
               enableDeleteByExample="false"
               enableSelectByExample="false"
               selectByExampleQueryId="false"
        >
            <property name="useActualColumnNames" value="true"/>
        </table>


        
    </context>
</generatorConfiguration>

再创建个test类

package com.study;

import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.internal.DefaultShellCallback;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

public class mybatisTest {

    public static void generator() throws Exception{
        List<String> warnings = new ArrayList<String>();
        File configFile = new File("src/main/resources/generatorConfig.xml");
        ConfigurationParser cp = new ConfigurationParser(warnings);
        Configuration config = cp.parseConfiguration(configFile);
        DefaultShellCallback callback = new DefaultShellCallback(true);
        MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
        myBatisGenerator.generate(null);
    }

    public static void main(String[] args) {
        try {
            generator();
            System.out.println("generator 完成");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

这里要注意:xml文件中,记得要修改数据库连接地址

运行下来看看效果:

神通数据库 python源码 神通数据库下载_神通数据库 python源码_02


我们把生成的文件拷贝到项目下

神通数据库 python源码 神通数据库下载_spring boot_03


yml配置数据库连接

spring:
  datasource:
    url: jdbc:oscar://192.168.1.61:2003/OSRDB?serverTimezone=UTC&useSSL=FALSE
    username: SYSDBA
    password: szoscar55
    driver-class-name: com.oscar.Driver
    
#用于mybatis
mybatis:
  mapper-locations: classpath:com/study/modules/database/**/*.xml
  type-aliases-package: com.study.modules.database.model

启动项添加mapper注入

@MapperScan("com.study.modules.database.dao")

controller写一个请求方法
目的是为了测试两个不同目录下的表

@Controller
public class StudyController {

    @Resource
    AuthUserMapper authUserMapper;

    @Resource
    TestdbMapper testdbMapper;

    @RequestMapping(value = "/testST", produces = "application/json;charset=UTF-8", method = RequestMethod.GET)
    @ResponseBody
    public String expertAuth() {

        Testdb testdb = testdbMapper.selectByPrimaryKey(1);
        System.out.println(testdb.getNAME());

        AuthUser authUser = authUserMapper.selectByPrimaryKey(1);
        System.out.println(authUser.getEMAIL());

        AuthUser record = new AuthUser();
        record.setID(authUser.getID());
        record.setEMAIL("66666@qq.com");
        int i = authUserMapper.updateByPrimaryKeySelective(record);
        System.out.println("更新数:" + i);

        return "success";
    }
}

启动看看运行结果,然后访问:http://localhost:8080/testST

神通数据库 python源码 神通数据库下载_java_04


我们发现testdb能够正常访问数据,AUTH_USER不能访问,会提示【ERROR, Relation “AUTH_USER” does not exist】

是不是很奇怪?它能创建,但是识别不到;
我们来看下AUTH_USER的属性

神通数据库 python源码 神通数据库下载_xml_05


我们发现AUTH_USER所有者是SYSDBA,也就是说在创建的时候可以直接识别到;但是使用的时候,没办法识别到

举个例子:你是公司研发组的成员,别人要找到你,首先要通过研发组来找你,没办法直接找到你。如果你在最顶上的领导层,那么就没必要通过层级来找到你;

这就解释了为啥testdb能够直接运用,他是在最高级的目录下;AUTH_USER他是在高级目录下的另一级别目录下,使用它时,需要另外在表名前加上上级目录

找到AuthUserMapper.xml.把表明加上前缀

神通数据库 python源码 神通数据库下载_数据库_06

重启,再次进行测试

这是后发现正常运行了

神通数据库 python源码 神通数据库下载_spring boot_07

总结

1.ShenTong数据库的使用方式和其他类型数据库使用类似,都可以使用mybatis框架进行操作
2.ShenTong数据库在多级目录下进行操作时必须加上上级目录名称,否则无法找到相应的表
3.由于高级目录下能识别到所有的表,在创建表明时,尽量不要表名重复