达梦数据库在JAVA开源框架mybatis 中的使用

一、JAVA

  1. 环境搭建
    1. JDK安装
    2. IDEA安装
    3. MAVEN安装
    4. 达梦8数据库安装
  2. demo文件

2.1 达梦8 JDBC驱动版本说明

2.1.1. DmJdbcDriver16 对应 Jdk1.6 及以上环境

2.1.2. DmJdbcDriver17 对应 Jdk1.7 及以上环境

2.1.3. DmJdbcDriver18 对应 Jdk1.8 及以上环境

2.2 解压示例工程

解压mybaits.zip到相应目录

达梦数据库在JAVA开源框架mybatis 中的使用_第1张图片

2.3 pom.xml文件

在工程中,打开根目录的pom.xml文件  

达梦数据库在JAVA开源框架mybatis 中的使用_第2张图片

2.4 settings.xml文件

第一次 maven会自动下载所需jar包,会花一点时间

   settings.xml中使用了阿里镜像

 达梦数据库在JAVA开源框架mybatis 中的使用_第3张图片

2.5 创建示例表和数据

打开init_db.sql,在达梦数据库中创建用户、创建表、插入示例数据等

2.6 配置达梦8数据库连接文件

2.6.1配置resources/jdbc.properties,相应修改用户名密码

 达梦数据库在JAVA开源框架mybatis 中的使用_第4张图片

JDBC连接池参数:

    jdbc.initialSize=0       //初始化连接

    jdbc.maxActive=30     //连接池的最大数据库连接数,设为0表示无限制

    jdbc.maxIdle=20        //没有人用连接的时候,最大闲置的连接个数,设置为0时,表示没有限制。

    jdbc.maxWait=1000    //超时等待时间以毫秒为单位

    jdbc.removeAbandoned=true //是否自动回收超时连接

    jdbc.removeAbandonedTimeout=60 //设置被遗弃的连接的超时的时间(以秒数为单位),即当一个连接被遗弃的时间超过设置的时间,则它会自动转换成可利用的连接。默认的超时时间是300秒。

    jdbc.logAbandoned = true //是否在自动回收超时连接的时候打印连接的超时错误

    jdbc.validationQuery=select 1 from dual //给出一条简单的sql语句进行验证

    jdbc.testOnBorrow=true //在取出连接时进行有效验证

2.6.2 DM 扩展连接属性的使用

2.6.2.1. host、port 不作为连接属性,此时只需输入值即可:

格式:

jdbc:dm [: //host][:port][?propName1=propValue1][& propName2=propValue2]….

注:

1) 若 host 不设置,则默认为‘localhost’

  2) 若 port 不设置,则默认为‘5236’

3) 若 host 不设置,则 port 一定不能设

4) 若 user、password 没有单独作为参数传入,则必须在连接属性中传入

5) 若 host 为 ipv6 地址,则应包含在[]中

例: jdbc:dm://192.168.0.96:5236?LobMode=1

2.6.2.2. host、port 作为连接属性,此时必须按照表中说明进行设置,且属性名称大小写敏感

格式:

jdbc:dm:// [?propName1=propValue1] [ & propName2=propValue2] [&…]…

注:  1) host、port 设置与否,以及在属性串中的位置没有限制

2) 若 user、password 没有单独作为参数传入,则必须在连接属性中传入

例: jdbc:dm:// ?host=192.168.0.96&port=5236

2.7 执行main方法

找到mybaits工程中的CrudApp.java,测试达梦8数据库增删改查

找到mybaits工程中的BasicApp.java,测试达梦8数据库插入大字段

2.8 dm_svc.conf文件使用

2.8.1 主备

配置内容

DW1=(172.16.1.1:5236,172.16.1.2:5236)

TIME_ZONE=(480)

LANGUAGE=(cn)

LOGIN_ENCRYPT=(0)

LOGIN_MODE=(1)

应用连接,文件存放

Linux:将dm_svc.conf文件放在应用服务器/etc目录下。

Windows32位:将dm_svc.conf文件放在应用服务器32目录下。

Windows64位:将dm_svc.conf文件放在应用服务器system32syswow64目录下。

配置应用连接串

dm.jdbc.driver.DmDriver

jdbc:dm://DW1?

2.8.2 读写分离

配置内容

RWC1=(172.16.1.1:5236,172.16.1.2:5236)

TIME_ZONE=(480)

LANGUAGE=(cn)

LOGIN_ENCRYPT=(0)

RW_SEPARATE=(1)

RW_PERCENT=(0)

SWITCH_TIME=(3)

SWITCH_INTERVAL=(200)

应用连接,文件存放

Linux:将dm_svc.conf文件放在应用服务器/etc目录下。

Windows32位:将dm_svc.conf文件放在应用服务器system32目录下。

Windows64位:将dm_svc.conf文件放在应用服务器system32syswow64目录下。

配置应用连接串

dm.jdbc.driver.DmDriver

jdbc:dm://RWC1?rwSeparate=1&rwPercent=0

xml文件中&是特殊字符,需要实体化&字符使用:jdbc:dm://RWC1?rwSeparate=1&rwPercent=0

rwSeparate:是否使用读写分离系统

rwpercent:分发多少读的事务到主库上执行,值越大,主库压力越大(0-100)。

2.8.3 mpp集群

配置内容

MPP1=(172.16.1.1:5236,172.16.1.2:5236,172.16.1.2:5237,172.16.1.1:5237)

TIME_ZONE=(480)

LANGUAGE=(cn)

LOGIN_ENCRYPT=(0)

LOGIN_MODE=(1)

应用连接,文件存放

Linux:将dm_svc.conf文件放在应用服务器/etc目录下。

Windows32位:将dm_svc.conf文件放在应用服务器system32目录下。

Windows64位:将dm_svc.conf文件放在应用服务器system32syswow64目录下。

配置应用连接串

dm.jdbc.driver.DmDriver

jdbc:dm://MPP1?

3.使用方法

3.1 BS三层架构

达梦数据库在JAVA开源框架mybatis 中的使用_第5张图片

3.2 运行环境

Java         D:\tools\Java\jdk1.8.0_131

数据库    dm8

Maven    D:\tools\apache-maven-3.8.4

开发工具  D:\tools\idea\IntelliJ IDEA 2021.3.2

Mybatis框架 

3.3 工程目录结构

pom.xml

src/main/java/

src/main/resources/

                     /jdbc.properties

Init_db.sql

3.4 数据库连接池

Druid:Druid不仅是一个数据库连接池,还包含一个ProxyDriver、一系列内置的JDBC组件库、一个SQL Parser。

    com.alibaba

    druid

    1.1.20

java6+

3.5 jdbc连接基础参数

访问数据库的java框架都需要它

jdbc.driver=dm.jdbc.driver.DmDriver

jdbc.url=jdbc:dm://192.168.124.145:5236

jdbc.username=test

jdbc.password=dmsysdba2022

3.6 典型配置

Spring  +  Druid

"dataSource" class="com.alibaba.druid.pool.DruidDataSource"

init-method="init" destroy-method="close">

"driverClassName" value="${jdbc.driver}" />

"url" value="${jdbc.url}" />

"username" value="${jdbc.username}" />

"password" value="${jdbc.password}" />

     

       "filters" value="stat,log4j" />

 

3.7 Jdbc操作

采用jdbc实现dao方法配置不同的连接池

public interface UserDao {

int insert(User user);

User retrieve(int id);

int update(User user);

int delete(int id);

List listAll();

int getMaxIdByFunc();

String addUserByProc(int id, String name, String phone,String email);

}

3.9 Mybatis-config文件

       "jdbc.properties" />

      

              "org.dmstudy.mybatis.domain.User" alias="User" />

      

      

              "org/dmstudy/mybatis/crud/dao/UserMapper.xml" />

      

3.10 XML映射文件

"org.dmstudy.mybatis.crud.dao.UserMapper">

       "insert" parameterType="User">

              insert into t_user

              (id,name,phone,email)

              values

              (#{id},#{name}, #{phone}, #{email})

      

      

"update" parameterType="User">

              update t_user

              set

              name=#{name},phone=#{phone},email=#{email}

              where id=#{id}

      

       "delete" parameterType="int">

              delete from t_user

              where id = #{id}

      

      

3.11 使用mybatis操作数据库

从SqlSession中直接获取dao接口执行,无需编写dao实现类

SqlSession sqlSession = sqlSessionFactory.openSession();

              try {

                     // 获取mapper对象

                     UserMapper mapper = sqlSession.getMapper(UserMapper.class);

                     // 将user插入数据库

                     int cnt = mapper.insert(user);

                     sqlSession.commit();

                     System.out.println("成功插入 " + cnt + "条记录! ");

              } catch (Exception e) {

                     System.err.println("insert执行失败 ,原因:" + e.getMessage());

                     e.printStackTrace();

                     sqlSession.rollback();

              } finally {

                     sqlSession.close();

              }

3.12 Mybatis中生成ID的几种方法

一、读取序列值,写入id列

"insert" parameterType="User">

insert into t_user_seq

(id,name,phone,email)

values

(#{id},#{name},#{phone},#{email})

二、直接在sql中插入序列表达式

"insertSeqExpr" parameterType="User" >

insert into t_user_seq

(id,name,phone,email)

values

(seq_user_id.nextval,#{name},#{phone},#{email})

三、使用返回序列

"insertSequence" parameterType="User">

    "int" keyProperty="id" order="BEFORE">

       select seq_user_id.nextval from dual

   

insert into t_user_seq

(id,name,phone,email)

values

(#{id},#{name},#{phone},#{email})

四、使用返回自增列

"insertIdentity" parameterType="User">

    "int" keyProperty="id" order="AFTER">

       select @@identity

   

insert into t_user_ident

(name,phone,email)

values

(#{name},#{phone},#{email})

五、使用返回自增列

"insertUseGeneratedKeys" parameterType="User"  useGeneratedKeys="true" keyProperty="id">

insert into t_user_ident

(name,phone,email)

values

(#{name},#{phone},#{email})

社区地址:https://eco.dameng.com

你可能感兴趣的:(java,java,spring,intellij-idea,数据库开发,dba)