达梦数据库在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文件放在应用服务器system32syswow64目录下。

配置应用连接串

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

配置应用连接串

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

配置应用连接串

<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);

                     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列

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

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

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java使用MyBatis进行批量插入数据库,你可以按照以下步骤进行操作: 1. 首先,确保你已经正确配置了MyBatis数据库的依赖。 2. 创建一个Mapper接口,用于定义插入数据的方法。例如,你可以创建一个名为`UserMapper`的接口,并在其添加一个批量插入用户的方法。 ```java public interface UserMapper { void insertUsers(List<User> users); } ``` 3. 创建一个对应的Mapper XML文件,用于实现具体的SQL操作。在该文件,你可以使用MyBatis的foreach标签来实现批量插入。 ```xml <!-- UserMapper.xml --> <mapper namespace="com.example.mapper.UserMapper"> <insert id="insertUsers" parameterType="java.util.List"> INSERT INTO user (id, name, age) VALUES <foreach collection="list" item="user" separator=","> (#{user.id}, #{user.name}, #{user.age}) </foreach> </insert> </mapper> ``` 4. 在Java代码,通过MyBatis的SqlSession来调用Mapper接口定义的方法。 ```java SqlSessionFactory sqlSessionFactory = ...; // 初始化SqlSessionFactory SqlSession sqlSession = sqlSessionFactory.openSession(); UserMapper userMapper = sqlSession.getMapper(UserMapper.class); List<User> userList = new ArrayList<>(); // 添加要插入的用户数据到userList userMapper.insertUsers(userList); sqlSession.commit(); sqlSession.close(); ``` 这样,就可以使用MyBatis实现批量插入数据库了。得在配置文件正确配置数据库连接信息和Mapper接口的扫描路径。希望对你有所帮助!如有其他问题,请继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值