暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

DM8达梦数据库MyBatis-Plus 框架

原创 达梦 2021-01-31
5841

MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

开发环境搭建

软件 版本
DM 数据库 DM 8.0 及以上版本
JDK JDK 8
Eclipse 2018-12 (4.10.0)
mybatis-plus 3.1

安装 DM 数据库

请参考 DM 数据库快速上手指南

数据库安装过程中,请勾选创建 BOOKSHOPDMHR 示例库,作为数据库模拟环境,如下图所示:

DMHR 示例库

安装 Java 开发工具包–JDK

双击安装包进行安装,安装步骤简单,点击【下一步】安装即可。以安装目录 D:\java\jdk1.8.0_111 为例,安装完成如下图所示:

安装成功

安装成功后需要配置 JDK 环境变量,即将 JDK 安装路径的 bin 路径复制到环境变量 path 里,如下图所示:

环境变量配置

环境变量配置成功后,可使用 win+R 打开命令提示符,输入 java -version 命令,可以正常出现 JDK 版本号,即环境变量配置成功,如下图所示:

JDK 版本号

注意

JDK 安装完成后还需配置环境变量,环境变量配置不正确会导致项目启动报错。

因环境变量配置错误导致的常见错误代码如下:

Unable to find a javac compiler;
Perhaps JAVA_HOME does not point to the JDK;

安装集成开发环境 eclipse

正确配置 Java 环境变量后,eclipse 可正常打开。

开发示例

MyBatis-Plus增强工具的引入

mybatis-plus 依托于 mybatis,两者相辅相成,MyBatis-Plus 增强工具的引入不会对 mybatis 框架造成影响。

  1. 准备所需的 jar 包

所需jar包

注意

mybatis-plus 3.0 之后的版本才支持 DM 数据库,在选择使用 mybatisplus-jar 包版本时请注意版本号。

若选择的 mybatis-plus 版本不支持 DM 数据库则会报错,如下图所示:

运行后控制台截图

  1. 新建项目 Java_Mybatis_Plus,并导入项目所需 jar 包,如下图所示:
注意

复制 jar 包到 lib 文件夹后,要选择所有 jar 包,鼠标右键,Build path–>Add to Build path。

导入 jar 包到项目里

  1. 在 src 源码目录下创建如下包名,完整项目目录结构如下图所示:

项目完整目录包结构

  1. 书写 Mybatis 的主配置文件:mybatis-config.xml,存放在 src 目录下。mybatis-config.xml 文件如下所示:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!--&lt;!&ndash; 引入 db.properties 文件 &ndash;&gt;-->
<properties resource="jdbc.properties"></properties>
<!--配置接口-->
<typeAliases>
<package name="com.dao"/>
</typeAliases>
<!-- 配置 mybatis 运行环境-->
<environments default="development">
<environment id="development">
<!-- 配置事务管理,采用 JDBC 的事务管理-->
<transactionManager type="JDBC" />
<!-- POOLED:mybatis 自带的数据源,JNDI:基于 Tomcat 的数据源 -->
<!--使用 DB.properties-->
<dataSource type="POOLED" >
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<!-- 将mapper 文件加入到配置文件中 mapper 文件是写 SQL 语句的文件 -->
<mappers>
<!-- 这里如果是配置文件用/ -->
<mapper resource="com/dao/ProductCategoryMapper.xml" />
<mapper resource="com/dao/BigDateMapper.xml" />
</mappers>
</configuration>

  1. 添加 jdbc.properties 配置文件,(主要配置 driver、url、username、password 等)。

修改数据库连接信息,只修改 jdbc.properties 里的字段即可。jdbc.properties 文件如下所示:

jdbc.driver=dm.jdbc.driver.DmDriver
jdbc.url=jdbc:dm://localhost:5236
jdbc.username=SYSDBA
jdbc.password=SYSDBA

基本绑定变量操作示例

基本操作使用的数据表为示例库中 Product 的 PRODUCT_CATEGORY 表,对应于数据库表添加实体类 PRODUCT_CATEGORY,其位置放于 com.pojo 下。

操作数据库对应的实体类

PRODUCT_CATEGORY.java 文件如下所示:

package com.pojo;
public class PRODUCT_CATEGORY {
private int PRODUCT_CATEGORYID;
private String NAME;
public int getPRODUCT_CATEGORYID() {
return PRODUCT_CATEGORYID;
}
public void setPRODUCT_CATEGORYID(int pRODUCT_CATEGORYID) {
PRODUCT_CATEGORYID = pRODUCT_CATEGORYID;
}
public String getNAME() {
return NAME;
}
public void setNAME(String nAME) {
NAME = nAME;
}
public PRODUCT_CATEGORY(int pRODUCT_CATEGORYID, String nAME) {
super();
PRODUCT_CATEGORYID = pRODUCT_CATEGORYID;
NAME = nAME;
}
public PRODUCT_CATEGORY() {
super();
}
}

数据访问层接口

此处使用 mybatisplus 工具,接口继承 BaseMapper 规定泛型为 ProductCategory,无需自己手动添加增删改查接口。

ProductCategoryMapper.java 文件如下所示:

package com.dao;

import org.apache.ibatis.annotations.Mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.pojo.ProductCategory;

@Mapper
public interface ProductCategoryMapper extends BaseMapper<ProductCategory>{

}

数据访问层接口对应配置文件

由于此处使用 mybatisplus 工具,该工具自动映射与之前相应的 mapper 接口,无需再写基础增删改查方法的 xml。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--命名空间会映射到接口-->
<mapper namespace="com.dao.ProductCategoryMapper">
</mapper>

测试类

TestProduct.java 文件如下所示:

package com.test;
import java.io.InputStream;
import java.util.List;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.junit.Test;
import com.baomidou.mybatisplus.core.MybatisSqlSessionFactoryBuilder;
import com.dao.ProductCategoryMapper;
import com.pojo.ProductCategory;
public class TestProduct {
SqlSession sqlSession = null;
ProductCategoryMapper productCategoryMapper = null;
public void init() {
try {
//1. 生成 sqlsession factory biulder 对象
MybatisSqlSessionFactoryBuilder builder = new MybatisSqlSessionFactoryBuilder();
//2. 加载配置文件作为一个输入流
InputStream resourceAsStream =
Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory factory = builder.build(resourceAsStream);
//这里 Resources 使用的包是 ibatis 包
//3. 通过会话工厂构造器对象和配置文件流构建一个会话构造工厂
//4. 通过 SQL 会话工厂 //true 设置 mybatis 事务自动提交
sqlSession = factory.openSession(true);
productCategoryMapper = sqlSession.getMapper(ProductCategoryMapper.class);
}catch (Exception e){
e.printStackTrace();
}
}
//测试插入信息
@Test
public void testInstert(){
productCategoryMapper.insert((new ProductCategory(null, "语文")));
}
//测试修改信息
@Test
public void testUpdate(){
ProductCategory productCategory = productCategoryMapper.selectById(4);
productCategory.setName("英语");
productCategoryMapper.updateById(productCategory);
}
//测试根据 ID 查询指定人信息
@Test
public void testSelectPersonById(){
ProductCategory productCategory = productCategoryMapper.selectById(1);
System.out.println(productCategory);
}
//测试全查
@Test
public void testSelectAll(){
List<ProductCategory> selectList = productCategoryMapper.selectList(null);
for(ProductCategory p: selectList){
System.out.println(p);
}
}
//测试删除
@Test
public void testDelete(){
productCategoryMapper.deleteById(5);
}
//测试增删改查
public static void main(String[] args) {
TestProduct test = new TestProduct();
test.init();
test.testInstert();
test.testSelectPersonById();
test.testUpdate();
test.testSelectAll();
test.testDelete();
}
}

运行后控制台截图如下所示:

运行后控制台截图

运行后数据库表截图如下所示:

运行后数据库表截

大字段操作示例

  1. 创建需要操作的含大字段类型的数据表。
CREATE TABLE "PRODUCTION"."BIG_DATE"
(
"ID" INT IDENTITY(1, 1) NOT NULL,
"PHOTO" IMAGE,
"DESCRIBE" BLOB,
"TXT" CLOB,
NOT CLUSTER PRIMARY KEY("ID")) STORAGE(ON "BOOKSHOP", CLUSTERBTR) ;
  1. 在 D 盘根目录下,创建 DM8 特点.jpg达梦产品简介.txt 两个文件,作为大字段存储,如下图所示:

准备大字段存储文件

操作数据库对应的实体类

BigDate.java 文件如下所示:

package com.pojo;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
@TableName(value="PRODUCTION.TEST_BIG_DATE")
public class BigDate {
@TableId(value = "id",type = IdType.AUTO)
private Long id;
private byte[] photo; //mybatis 将 Image 和 Blob 映射成 byte[]
private byte[] describe;
private String txt; //mybatis 将 Clob 映射成 String
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public byte[] getPhoto() {
return photo;
}
public void setPhoto(byte[] photo) {
this.photo = photo;
}
public byte[] getDescribe() {
return describe;
}
public void setDescribe(byte[] describe) {
this.describe = describe;
}
public String getTxt() {
return txt;
}
public void setTxt(String txt) {
this.txt = txt;
}
@Override
public String toString() {
return "TestBigDate [id=" + id + ", txt=" + txt + "]";
}
public BigDate(Long id, byte[] photo, byte[] describe, String txt) {
super();
this.id = id;
this.photo = photo;
this.describe = describe;
this.txt = txt;
}
public BigDate() {
super();
}
}

数据访问层接口

TestBigDateMapper.java 文件如下所示:

package com.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.pojo.BigDate;
public interface BigDateMapper extends BaseMapper<BigDate>{
}

数据访问层接口对应配置文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论