栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

OpenTCS 学习记录之三

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

OpenTCS 学习记录之三

OpenTCS学习记录之三

文章目录
  • OpenTCS学习记录之三
    • 一、目标
      • 1.1 背景
      • 1.2 环境准备
      • 1.3 代码实现
    • 二、实现效果
    • 三、MyBatis Gradle 实现

一、目标

目标:编写连接器,实现在 OpenTCS 中的 CRUD 系列操作

1.1 背景

1.习惯于 SpringBoot 的 Maven + MyBatis + Mapper 的集成环境,换了个 Gradle 的构建工具,需要从0开始构建数据库连接。最初 Java 项目连接数据库的方式,纯代码实现,只需引入 mysql 的驱动 jar 即可。
2.本篇计划采用两种方式:
①原生代码直接连接数据库,使用时 getConnection 获得连接;
②通过 mybatis 的方式结合 gradle 构建,使用时获取 SqlSessionFactory 。

1.2 环境准备

1.Gradle 引入mysql 驱动

  dependencies {
    implementation group: 'mysql', name: 'mysql-connector-java', version: '8.0.26'
  }
1.3 代码实现

1.创建连接数据库的工具类

package org.opentcs.kernel.database;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class ConnectionFactory {

  private ConnectionFactory() {
    throw new UnsupportedOperationException();
  }

  public static Connection getConnection() {
    Connection connection = null;

    String driver = "mysql";
    String dataBaseAddress = "127.0.0.1:3306";
    String dataBaseName = "test";
    String user = "root";
    String password = "password";
    StringBuilder sb = new StringBuilder("jdbc:")
        .append(driver).append("://")
        .append(dataBaseAddress).append("/")
        .append(dataBaseName);

    String connectionUrl = sb.toString();

    try {
      connection = DriverManager.getConnection(connectionUrl, user, password);
      System.out.println("connected success");
    } catch (SQLException e) {
      System.out.println("connected error");
      throw new RuntimeException();
    }
    return connection;
  }
}

2.测试连接

package org.opentcs.kernel.database;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class TestMain {
  public static void create() {
    try (Connection conn = ConnectionFactory.getConnection()) {
      String sql = "select * from sys_vehicle";
      PreparedStatement stmt = conn.prepareStatement(sql);
      ResultSet r = stmt.executeQuery();
      System.out.println("*********** 读库 ********************");
      if (r.next()) {
        String inner_id = r.getString("inner_id");
        String name = r.getString("name");
        System.out.println("inner_id:" + inner_id + ";name:" + name + "");
      }

    } catch (SQLException e) {
      System.out.println("failed");
      e.printStackTrace();
    }
  }

  public static void main(String[] args) {
    TestMain.create();
  }
}

二、实现效果

1.原生方式

2.mybatis 方式

三、MyBatis Gradle 实现

1.引入需要用到的依赖

// https://mvnrepository.com/artifact/org.apache.ibatis/ibatis-core
implementation group: 'org.apache.ibatis', name: 'ibatis-core', version: '3.0'
// https://mvnrepository.com/artifact/org.mybatis.generator/mybatis-generator-core
implementation group: 'org.mybatis.generator', name: 'mybatis-generator-core', version: '1.3.7'
// https://mvnrepository.com/artifact/mysql/mysql-connector-java
implementation group: 'mysql', name: 'mysql-connector-java', version: '8.0.11'
// https://mvnrepository.com/artifact/tk.mybatis/mapper
implementation group: 'tk.mybatis', name: 'mapper', version: '4.0.4'

注意:针对以上依赖需要修改如下

  mybatisGenerator 'org.mybatis.generator:mybatis-generator-core:1.3.7'
  mybatisGenerator 'mysql:mysql-connector-java:5.1.26'
  mybatisGenerator 'tk.mybatis:mapper:4.0.4'
  implementation group: 'org.apache.ibatis', name: 'ibatis-core', version: '3.0'

2.配置 RunKernel

    Paths.get(System.getProperty("opentcs.base", "."),
            "config",
            "config.properties")
            .toAbsolutePath()

3.创建配置文件
① config.properties

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test?characterEncoding=utf-8&serverTimezone=UTC
#?useUnicode=true&useSSL=false&characterEncoding=utf-8&serverTimezone=UTC
jdbc.username=root
jdbc.password=password
jdbc.driverClassName = com.mysql.jdbc.Driver
#mybatis-generator u53C2u6570

# u751Fu6210u5B9Eu4F53u7C7Bu6240u5728u7684u5305
package.model= org.opentcs.kernel.model
# u751Fu6210 mapper u7C7Bu6240u5728u7684u5305
package.mapper=org.opentcs.kernel.mapper
# u751Fu6210 mapper xml u6587u4EF6u6240u5728u7684u5305uFF0Cu9ED8u8BA4u5B58u50A8u5728 resources u76EEu5F55u4E0B
package.xml=mybatis

② generatorConfig.xml




  
    
      
      
      
    

    
    

    
      
    

    
      
      
    

    
      
    

    
      
    

    
    
    

特别说明,以上只是实现,通过运行generator 后生成代码(根据数据库配置)

如何才能通过读取配置文件,获取数据库连接对象,从而将openTCS 中的数据通过数据库连接器进行入库
1.目录结构
![在这里插入图片描述](https://img-blog.csdnimg.cn/559c5f0b42124e93b9b26fcbf1f6143a.png

2.创建 MyBatis 测试类

package org.opentcs.kernel.database;


import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.Reader;
import java.util.List;

public class MyBatisTest {
  private static SqlSessionFactory sqlSessionFactory = null;
  public static void main(String[] args) throws IOException {
      String resource = "mybatis-config.xml";
      Reader reader = null;
      try {
        reader = Resources.getResourceAsReader(resource);
      } catch (IOException e) {
        System.out.println(e.getMessage());
      }
      sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
      SqlSession Session = sqlSessionFactory.openSession();
      List getUserList = Session.selectList("getUserList");
    for (Vehicle vehicle : getUserList) {
      System.out.println("innerId:"+vehicle.getInner_id()+";name:"+vehicle.getName());
    }


  }

}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1003940.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号