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

编程入门 行业动态 更新时间:2024-10-08 10:52:20

达梦数据库在JAVA<a href=https://www.elefans.com/category/jswz/34/1770131.html style=开源框架mybatis 中的使用"/>

达梦数据库在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到相应目录

2.3 pom.xml文件

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

2.4 settings.xml文件

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

   settings.xml中使用了阿里镜像

 

2.5 创建示例表和数据

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

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

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

 

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文件放在应用服务器system32和syswow64目录下。

配置应用连接串

<DRIVER>dm.jdbc.driver.DmDriver</DRIVER>

<URL>jdbc:dm://DW1?</URL>

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文件放在应用服务器system32和syswow64目录下。

配置应用连接串

<DRIVER>dm.jdbc.driver.DmDriver</DRIVER>

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

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

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文件放在应用服务器system32和syswow64目录下。

配置应用连接串

<DRIVER>dm.jdbc.driver.DmDriver</DRIVER>

<URL>jdbc:dm://MPP1?</URL>

3.使用方法

3.1 BS三层架构

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。

<dependency>

    <groupId>com.alibaba</groupId>

    <artifactId>druid</artifactId>

    <version>1.1.20</version>

</dependency>

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

<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"

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

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

<property name="url" value="${jdbc.url}" />

<property name="username" value="${jdbc.username}" />

<property name="password" value="${jdbc.password}" />

     

       <property name="filters" value="stat,log4j" />

 </bean>

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<User> listAll();

int getMaxIdByFunc();

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

}

3.9 Mybatis-config文件

<!-- 读取加载配置文件信息 -->

       <properties resource="jdbc.properties" />

<!-- 别名 -->

       <typeAliases>

              <typeAlias type="org.dmstudy.mybatis.domain.User" alias="User" />

       </typeAliases>

<!-- 配置映射文件 -->

       <mappers>

              <mapper resource="org/dmstudy/mybatis/crud/dao/UserMapper.xml" />

       </mappers>

3.10 XML映射文件

<mapper namespace="org.dmstudy.mybatis.crud.dao.UserMapper">

       <insert id="insert" parameterType="User">

              insert into t_user

              (id,name,phone,email)

              values

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

       </insert>

       <select id="retrieve" parameterType="int" resultType="User">

              select

              id,name,phone,email

              from t_user

              where id = #{id}

       </select>

<update id="update" parameterType="User">

              update t_user

              set

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

              where id=#{id}

       </update>

       <delete id="delete" parameterType="int">

              delete from t_user

              where id = #{id}

       </delete>

       <select id="listAll"  resultType="User">

              select

              id,name,phone,email

              from t_user

       </select>

</mapper>

3.11 使用mybatis操作数据库

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

SqlSession sqlSession = sqlSessionFactory.openSession();

              try {

                     // 获取mapper对象

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

                     // 将user插入数据库

                     int cnt = mapper.insert(user);

                     sqlSessionmit();

                     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列

<select id="getNextUserId" resultType="int">

       select seq_user_id.nextval from dual

</select>

<insert id="insert" parameterType="User">

insert into t_user_seq

(id,name,phone,email)

values

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

</insert>

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

<insert id="insertSeqExpr" parameterType="User" >

insert into t_user_seq

(id,name,phone,email)

values

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

</insert>

三、使用<SelectKey>返回序列

<insert id="insertSequence" parameterType="User">

    <selectKey resultType="int" keyProperty="id" order="BEFORE">

       select seq_user_id.nextval from dual

    </selectKey>

insert into t_user_seq

(id,name,phone,email)

values

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

</insert>

四、使用<SelectKey>返回自增列

<insert id="insertIdentity" parameterType="User">

    <selectKey resultType="int" keyProperty="id" order="AFTER">

       select @@identity

    </selectKey>

insert into t_user_ident

(name,phone,email)

values

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

</insert>

五、使用<GeneratedKeys>返回自增列

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

insert into t_user_ident

(name,phone,email)

values

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

</insert>

社区地址:

更多推荐

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

本文发布于:2024-02-07 10:24:01,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1756255.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:开源   框架   数据库   mybatis   JAVA

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!