一、JAVA
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目录下。
配置应用连接串
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目录下。
配置应用连接串
xml文件中&是特殊字符,需要实体化&字符使用:
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目录下。
配置应用连接串
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。
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
init-method="init" destroy-method="close">
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
int getMaxIdByFunc();
String addUserByProc(int id, String name, String phone,String email);
}
3.9 Mybatis-config文件
3.10 XML映射文件
insert into t_user
(id,name,phone,email)
values
(#{id},#{name}, #{phone}, #{email})
select
id,name,phone,email
from t_user
where id = #{id}
update t_user
set
name=#{name},phone=#{phone},email=#{email}
where id=#{id}
delete from t_user
where id = #{id}
select
id,name,phone,email
from t_user
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 seq_user_id.nextval from dual
insert into t_user_seq
(id,name,phone,email)
values
(#{id},#{name},#{phone},#{email})
二、直接在sql中插入序列表达式
insert into t_user_seq
(id,name,phone,email)
values
(seq_user_id.nextval,#{name},#{phone},#{email})
三、使用
select seq_user_id.nextval from dual
insert into t_user_seq
(id,name,phone,email)
values
(#{id},#{name},#{phone},#{email})
四、使用
select @@identity
insert into t_user_ident
(name,phone,email)
values
(#{name},#{phone},#{email})
五、使用
insert into t_user_ident
(name,phone,email)
values
(#{name},#{phone},#{email})
社区地址:https://eco.dameng.com