上一节:【分享】测试JFinal对接国产达梦数据库-安装达梦
本节我们主要来使用JFinal去完成达梦数据库的CRUD操作。
我们Java应用项目如果要使用数据库服务,需要使用JDBC标准去连接和使用。
Mysql Oracle等国外产品都有对应的JDBC驱动实现。
国产达梦数据库也有自己的JDBC实现,但是没有再maven仓库提交,安装后在安装目录下能找到各种语言的实现。
找到安装目录下的drivers目录

里面就有我们需要的JDBC的实现。

我们用的就是这个DmJdbcDriver18.jar

上面还有一个方言dialect的实现包。
里面看了一下都是Hibernate相关的方言,暂且不理会。
下面开始JFinal的集成。
我没有创建Java Web工程,创建的是一个普通java工程。


需要的依赖Jar就这么几个:

写一个DmTest.java去测试
package com.jfinalxueyuan.test;
import java.util.List;
import com.jfinal.kit.JsonKit;
import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
import com.jfinal.plugin.activerecord.CaseInsensitiveContainerFactory;
import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.Record;
import com.jfinal.plugin.activerecord.dialect.AnsiSqlDialect;
import com.jfinal.plugin.druid.DruidPlugin;
/**
 * JFinal对接达梦数据库初步测试CRUD
 * 使用Db+Record模式
 * 
 * @ClassName:  DmTest   
 * @author: JFinal学院-小木 QQ:909854136 
 * @date:   2020年9月13日   
 * 
 */
public class DmTest {
	String url = "jdbc:dm://localhost:5236";
	String username = "SYSDBA";
	String password = "xiaomu2020";
	DruidPlugin druidPlugin=null;
	ActiveRecordPlugin arp=null;
	
	public boolean start() {
		druidPlugin=new DruidPlugin(url, username, password);
		arp=new ActiveRecordPlugin(druidPlugin);
		arp.setDialect(new AnsiSqlDialect());
		arp.setShowSql(true);
		arp.setDevMode(true);
		arp.setContainerFactory(new CaseInsensitiveContainerFactory(true));
		boolean success=druidPlugin.start();
		if(success) {
			success=arp.start();
		}
		return success;
	}
	
	
	public static void main(String[] args) {
			DmTest test = new DmTest();
			//启动连接
			boolean success=test.start();
			if(success) {
				try {
					// 插入数据
					System.out.println("--- 插入 ---");
					test.insertTable();
					
					//查询
					System.out.println("--- 显示插入结果 ---");
					test.queryTable();
					
					//修改
					System.out.println("--- 修改 ---");
					test.updateTable();
					
					//查询
					System.out.println("--- 显示修改结果 ---");
					test.queryTable();
					 
					//删除
					System.out.println("--- 删除 ---");
					test.deleteTable();
					
					//在删除后查询
					System.out.println("--- 在删除后查询 ---");
					test.queryTable();
					
				} finally {
					test.stop();
				}
			}
			
	}
	
	/**
	 * 结束
	 */
	private void stop() {
		arp.stop();
		druidPlugin.stop();
		
	}
	/**
	 * 删除数据
	 */
	private void deleteTable() {
		System.out.println("=====DOING:执行数据删除=====");
		int count=Db.update("delete from DMHR.CITY where CITY_ID='DY'");
		if(count==1) {
			System.out.println("=====SUCCESS:数据删除成功=====");
		}else {
			System.out.println("=====ERROR:数据删除失败=====");
		}
	}
	/**
	 * 修改更新数据
	 */
	private void updateTable() {
		System.out.println("=====DOING:执行数据更新=====");
		int count=Db.update("update DMHR.CITY set CITY_NAME='东营_修改后' where CITY_ID='DY'");
		if(count==1) {
			System.out.println("=====SUCCESS:数据修改成功=====");
		}else {
			System.out.println("=====ERROR:数据修改失败=====");
		}
	}
	/**
	 * 查询数据
	 */
	private void queryTable() {
		System.out.println("=====DOING:执行数据查询=====");
		List<Record> records=Db.find("select * from DMHR.CITY");
		if(records!=null&&records.size()>0) {
			System.out.println("=====SUCCESS:数据查询成功=====");
			int index=0;
			for(Record record:records) {
				index++;
				System.out.println(index+":"+JsonKit.toJson(record));
			}
		}else {
			System.out.println("=====RESULT:暂无数据=====");
		}
	}
	/**
	 * 插入数据
	 */
	private void insertTable() {
		System.out.println("=====DOING:执行数据插入=====");
		Record record=new Record();
		record.set("CITY_ID", "DY");
		record.set("CITY_NAME", "东营");
		record.set("REGION_ID", 1);
		boolean success=Db.save("DMHR.CITY", record);
		if(success) {
			System.out.println("=====SUCCESS:数据插入成功=====");
			System.out.println(record.toJson());
		}else {
			System.out.println("=====ERROR:数据插入失败=====");
		}
	}
	
	
 
}使用JFinal去连接达梦数据库做了CRUD操作,其中配置的DruidPlugin和ActiveRecordPlugin目前来看和Mysql的数据库配置暂时没有特别差异,标准的JDBC实现。
那么,方言这里就单独设置了一下,大小写不敏感设置一下。

最后执行Main方法,测试一下CRUD:整个日志输出正常无误!!!
九月 13, 2020 1:47:59 下午 com.alibaba.druid.pool.DruidDataSource info
信息: {dataSource-1} inited
--- 插入 ---
=====DOING:执行数据插入=====
Sql: insert into DMHR.CITY(city_id, city_name, region_id) values(?, ?, ?)
=====SUCCESS:数据插入成功=====
{"city_id":"DY","city_name":"东营","id":15,"region_id":1}
--- 显示插入结果 ---
=====DOING:执行数据查询=====
Sql: select * from DMHR.CITY
=====SUCCESS:数据查询成功=====
1:{"city_id":"BJ ","city_name":"北京","region_id":1}
2:{"city_id":"SJZ","city_name":"石家庄","region_id":1}
3:{"city_id":"SH ","city_name":"上海","region_id":2}
4:{"city_id":"NJ ","city_name":"南京","region_id":2}
5:{"city_id":"GZ ","city_name":"广州","region_id":3}
6:{"city_id":"HK ","city_name":"海口","region_id":3}
7:{"city_id":"WH ","city_name":"武汉","region_id":4}
8:{"city_id":"CS ","city_name":"长沙","region_id":4}
9:{"city_id":"SY ","city_name":"沈阳","region_id":5}
10:{"city_id":"XA ","city_name":"西安","region_id":6}
11:{"city_id":"CD ","city_name":"成都","region_id":7}
12:{"city_id":"DY ","city_name":"东营","region_id":1}
--- 修改 ---
=====DOING:执行数据更新=====
Sql: update DMHR.CITY set CITY_NAME='东营_修改后' where CITY_ID='DY'
=====SUCCESS:数据修改成功=====
--- 显示修改结果 ---
=====DOING:执行数据查询=====
Sql: select * from DMHR.CITY
=====SUCCESS:数据查询成功=====
1:{"city_id":"BJ ","city_name":"北京","region_id":1}
2:{"city_id":"SJZ","city_name":"石家庄","region_id":1}
3:{"city_id":"SH ","city_name":"上海","region_id":2}
4:{"city_id":"NJ ","city_name":"南京","region_id":2}
5:{"city_id":"GZ ","city_name":"广州","region_id":3}
6:{"city_id":"HK ","city_name":"海口","region_id":3}
7:{"city_id":"WH ","city_name":"武汉","region_id":4}
8:{"city_id":"CS ","city_name":"长沙","region_id":4}
9:{"city_id":"SY ","city_name":"沈阳","region_id":5}
10:{"city_id":"XA ","city_name":"西安","region_id":6}
11:{"city_id":"CD ","city_name":"成都","region_id":7}
12:{"city_id":"DY ","city_name":"东营_修改后","region_id":1}
--- 删除 ---
=====DOING:执行数据删除=====
Sql: delete from DMHR.CITY where CITY_ID='DY'
=====SUCCESS:数据删除成功=====
--- 在删除后查询 ---
=====DOING:执行数据查询=====
Sql: select * from DMHR.CITY
=====SUCCESS:数据查询成功=====
1:{"city_id":"BJ ","city_name":"北京","region_id":1}
2:{"city_id":"SJZ","city_name":"石家庄","region_id":1}
3:{"city_id":"SH ","city_name":"上海","region_id":2}
4:{"city_id":"NJ ","city_name":"南京","region_id":2}
5:{"city_id":"GZ ","city_name":"广州","region_id":3}
6:{"city_id":"HK ","city_name":"海口","region_id":3}
7:{"city_id":"WH ","city_name":"武汉","region_id":4}
8:{"city_id":"CS ","city_name":"长沙","region_id":4}
9:{"city_id":"SY ","city_name":"沈阳","region_id":5}
10:{"city_id":"XA ","city_name":"西安","region_id":6}
11:{"city_id":"CD ","city_name":"成都","region_id":7}
九月 13, 2020 1:47:59 下午 com.alibaba.druid.pool.DruidDataSource info
信息: {dataSource-1} closing ...
九月 13, 2020 1:47:59 下午 com.alibaba.druid.pool.DruidDataSource info
信息: {dataSource-1} closedOK,JFinal也可以玩儿国产数据库了!!
有问题 加我微信:
mumengmeng
