Spring 为简化企业级开发而生,使用 Spring 开发可以将 Bean 对象,Dao 组件对象,Service 组件对象等交给 Spring 容器来管理,这样使得很多复杂的代码在 Spring 中开发却变得非常的优雅和简洁,有效的降低代码的耦合度,极大的方便项目的后期维护、升级和扩展。
Spring 通常与 Mybtais 等数据操作层框架结合使用,本示例是 Spring+Mybatis 框架整合使用。
开发环境搭建
| 软件 |
版本 |
| DM 数据库 |
DM 8.0 及以上版本 |
| JDK |
JDK 8 |
| Eclipse |
2018-12 (4.10.0) |
| Spring |
4.2 |
安装 DM 数据库
请参考 DM 数据库快速上手指南。
数据库安装过程中,请勾选创建 BOOKSHOP,DMHR 示例库,作为数据库模拟环境,如下图所示:

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

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

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

注意JDK 安装完成后还需配置环境变量,环境变量配置不正确会导致项目启动报错。
因环境变量配置错误导致的常见错误代码如下:
Unable to find a javac compiler; Perhaps JAVA_HOME does not point to the JDK;
|
安装集成开发环境 eclipse
正确配置 Java 环境变量后,eclipse 可正常打开。
开发示例
Spring 的引入
mybatis-plus 依托于 mybatis,两者相辅相成,MyBatis-Plus 增强工具的引入不会对 mybatis 框架造成影响。
- 准备所需的 jar 包
所需jar包
注意mybatis-plus 3.0 之后的版本才支持 DM 数据库,在选择使用 mybatisplus-jar 包版本时注意选择。
若选择错误的 mybatis-plus 会报错,如下图所示:

- 新建项目 Java_Mybatis_Plus,并导入项目所需 jar 包,如下图所示:
注意复制 jar 包到 lib 文件夹后,要选择所有 jar 包,鼠标右键,Build path–>Add to Build path。

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

- 书写 Spring 的核心配置文件:
spring-dao.xml,存放在 src 目录下。此处将原本 mybatis 的相关配置全部集中到 spring 配置文件中,可以省略 mybatis 配置文件。
spring-dao.xml.xml 文件如下所示:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation=" http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd">
<context:property-placeholder location="classpath:jdbc.properties" /> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="driverClass" value="${jdbc.driver}"/> <property name="jdbcUrl" value="${jdbc.url}"/> <property name="user" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> </bean> <bean id="sqlSessionFactory" class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="typeAliasesPackage" value="com.pojo"/> </bean> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.dao" /> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/> </bean> </beans>
|
- 添加 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>{
}
|
测试类
TestProduct.java 文件如下所示:
package com.test; import java.util.List; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import com.dao.ProductCategoryMapper; import com.pojo.ProductCategory;
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration({"classpath:spring-dao.xml"}) public class TestProduct { @Autowired ProductCategoryMapper productCategoryMapper = null; @Test public void testInstert(){ productCategoryMapper.insert((new ProductCategory(null, "语文"))); } @Test public void testUpdate(){ ProductCategory productCategory = productCategoryMapper.selectById(4); productCategory.setName("英语"); productCategoryMapper.updateById(productCategory); } @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); } }
|
运行后控制台截图如下所示:

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

大字段操作示例
- 创建需要操作的含大字段类型的数据表。
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) ;
|
- 在 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; private byte[] describe; private String txt; 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>{ }
|
测试类
TestBigDate.java 文件如下所示
package com.test; import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import java.util.List; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import com.dao.BigDataMapper; import com.pojo.BigData;
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration({"classpath:spring-dao.xml"}) public 「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」 【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
|