达梦数据库应用开发_MyBatis-Plus框架介绍
1 MyBatis-Plus框架是什么?
MyBatis-Plus(简称 MP )是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
MyBatis-Plus封装了大量的基础 SQL 操作,无需编写大量的 XML 映射文件和 SQL 语句,简化了数据层操作;
2 MyBatis-Plus框架基本使用
2.1 依赖包导入
下载链接
JAVA_Mybatis_Plus_lib.zip
2.2 开发示例_基础绑定参数示例
2.2.1 初始化数据库表
CREATE TABLE "JAVA_MYBATISPLUS_TABLE"
(
"ID" INT,
"NAME" VARCHAR(50) NOT NULL);
2.2.2 构建相关包结构
2.2.3 主配置文件
书写 MyBatis-plus 的主配置文件:mybatis-config.xml,存放 src 目录下
<?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>
<!-- <!– 引入 db.properties 文件 –> -->
<properties resource="jdbc.properties"></properties>
<!--配置接口-->
<typeAliases>
<package name="dm_04.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="dm_04/dao/Java_MyBatisPlus_Mapper.xml" />
</mappers>
</configuration>
src 目录下添加 jdbc.properties 配置文件
jdbc.driver=dm.jdbc.driver.DmDriver
jdbc.url=jdbc:dm://localhost:5236
jdbc.username=SYSDBA
jdbc.password=*****
2.2.5 实体类POJO
创建跟数据库表对应的实体类
package dm_04.pojo;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
@TableName("JAVA_MYBATISPLUS_TABLE")
public class Java_MyBatisPlus {
@TableField("ID")
private Integer ID;
@TableField("NAME")
private String NAME;
public int getID() {
return ID;
}
public void setID(Integer ID) {
this.ID = ID;
}
public String getNAME() {
return NAME;
}
public void setNAME(String NAME) {
this.NAME = NAME;
}
public Java_MyBatisPlus(Integer ID, String NAME) {
super();
this.ID = ID;
this.NAME = NAME;
}
public Java_MyBatisPlus() {
super();
}
@Override
public String toString() {
return "Java_MyBatisPlus [ID=" + ID + ", NAME=" + NAME + "]";
}
}
注
@TableName(“JAVA_MYBATISPLUS_TABLE”),表示实体类对应的是数据库JAVA_MYBATISPLUS_TABLE表
@TableField(“ID”),表示对应的是数据库列名
2.2.6 数据访问层
接口
dm_04/Java_MyBatisPlus_Mapper.java
package dm_04.dao;
import org.apache.ibatis.annotations.Mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import dm_04.pojo.Java_MyBatisPlus;
@Mapper
public interface Java_MyBatisPlus_Mapper extends BaseMapper<Java_MyBatisPlus>{
}
接口中不用写任何方法
对应配置文件
<?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="dm_04.dao.Java_MyBatisPlus_Mapper">
</mapper>
配置文件也不用写任何sql语句
2.2.7 创建测试类,开始测试
package dm_04.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 dm_04.dao.Java_MyBatisPlus_Mapper;
import dm_04.pojo.Java_MyBatisPlus;
public class Test_MyBatisPlus {
SqlSession sqlSession = null;
Java_MyBatisPlus_Mapper java_MyBatisPlus_Mapper = 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);
java_MyBatisPlus_Mapper = sqlSession.getMapper(Java_MyBatisPlus_Mapper.class);
}catch (Exception e){
e.printStackTrace();
}
}
//测试插入信息
@Test
public void testInstert(){
java_MyBatisPlus_Mapper.insert((new Java_MyBatisPlus(1,"yxy01")));
}
//测试修改信息
@Test
public void testUpdate(){
Java_MyBatisPlus java_MyBatisPlus = java_MyBatisPlus_Mapper.selectById(1);
java_MyBatisPlus.setNAME("yxy02");
java_MyBatisPlus_Mapper.updateById(java_MyBatisPlus);
}
//测试根据 ID 查询指定人信息
@Test
public void testSelectById(){
Java_MyBatisPlus java_MyBatisPlus = java_MyBatisPlus_Mapper.selectById(1);
System.out.println(java_MyBatisPlus);
}
//测试全查
@Test
public void testSelectAll(){
List<Java_MyBatisPlus> selectList = java_MyBatisPlus_Mapper.selectList(null);
for(Java_MyBatisPlus p: selectList){
System.out.println(p);
}
}
//测试删除
@Test
public void testDelete(){
java_MyBatisPlus_Mapper.deleteById(1);
}
//测试增删改查
public static void main(String[] args) {
Test_MyBatisPlus test = new Test_MyBatisPlus();
test.init();
test.testInstert();
test.testSelectById();
test.testUpdate();
test.testSelectAll();
test.testDelete();
}
}
2.2.8 打印出结果为
Java_MyBatisPlus [ID=1, NAME=yxy01]
Java_MyBatisPlus [ID=1, NAME=yxy02]
2.3 开发示例_大字段操作示例
2.3.1 创建大字段类型的表
CREATE TABLE JAVA_MYBATISPLUS_BIGDATA_TABLE
(
"ID" INT IDENTITY(1, 1) NOT NULL,
"PHOTO" IMAGE,
"DESCRIBE" BLOB,
"TXT" CLOB,
NOT CLUSTER PRIMARY KEY("ID")) ;
2.3.2 准备测试文件
本地准备两个大文件进行测试
2.3.3 主配置文件
修改 MyBatis 的主配置文件:mybatis-config.xml
加入大字段操作的配置文件
2.3.4 大字段对应实体类POJO
Java_MyBatisPlus_BigData.java
package dm_04.pojo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
@TableName("JAVA_MYBATISPLUS_BIGDATA_TABLE")
public class Java_MyBatisPlus_BigData {
@TableId(value = "id",type = IdType.AUTO)
private Integer id;
@TableField("PHOTO")
private byte[] photo; //mybatis将 Image 和Blob 映射成byte[]
@TableField("DESCRIBE")
private byte[] describe;
@TableField("TXT")
private String txt; //mybatis 将 Clob 映射成 String
public Integer getId() {
return id;
}
public void setId(Integer 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 "Java_MyBatisPlus_BigData [id=" + id + ", txt=" + txt + "]";
}
public Java_MyBatisPlus_BigData(Integer id, byte[] photo, byte[] describe, String txt) {
super();
this.id = id;
this.photo = photo;
this.describe = describe;
this.txt = txt;
}
public Java_MyBatisPlus_BigData() {
super();
}
}
2.3.5 数据访问层
接口
Java_MyBatisPlus_BigData_Mapper.java
package dm_04.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import dm_04.pojo.Java_MyBatisPlus_BigData;
public interface Java_MyBatisPlus_BigData_Mapper extends BaseMapper<Java_MyBatisPlus_BigData>{
}
对应配置文件
Java_MyBatisPlus_BigData_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="dm_04.dao.Java_MyBatisPlus_BigData_Mapper">
</mapper>
2.3.6 大字段数据测试类
Test_MyBatisPlus_BigData.java
package dm_04.test;
import java.io.*;
import java.util.List;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.*;
import com.baomidou.mybatisplus.core.MybatisSqlSessionFactoryBuilder;
import dm_04.dao.Java_MyBatisPlus_BigData_Mapper;
import dm_04.pojo.Java_MyBatisPlus_BigData;
public class Test_MyBatisPlus_BigData {
SqlSession sqlSession = null;
Java_MyBatisPlus_BigData_Mapper bigDataMapper = null;
public void init() {
try {
//1. 生成 sqlsession factory biulder 对象
MybatisSqlSessionFactoryBuilder sfb = new MybatisSqlSessionFactoryBuilder();
//2. 加载配置文件作为一个输入流
//这里 Resources 使用的包是 ibatis 包
InputStream resourceAsStream;
resourceAsStream = Resources.getResourceAsStream("mybatis-config.xml");
//3. 通过会话工厂构造器对象和配置文件流构建一个会话构造工厂
SqlSessionFactory factory = sfb.build(resourceAsStream);
//4. 通过 SQL 会话工厂 //true 设置 mybatis 事务自动提交
sqlSession = factory.openSession(true);
bigDataMapper = sqlSession.getMapper(Java_MyBatisPlus_BigData_Mapper.class);
resourceAsStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
//测试插入大字段表
private void testInsert() {
try {
String filePath = "D:\\DM\\test\\java20250225\\photo_test.jpg";
File file = new File(filePath);
String filePath2 = "D:\\DM\\test\\java20250225\\clob_test.txt";
File file2 = new File(filePath2);
InputStream in;
in = new BufferedInputStream(new FileInputStream(file));
byte[] bytes1 = new byte[102400];
byte[] bytes2 = new byte[102400];
in.read(bytes1);
InputStream in2 = new BufferedInputStream(new FileInputStream(file));
in2.read(bytes2);
BufferedReader reader = new BufferedReader(new InputStreamReader
(new FileInputStream(file2),"UTF-8"));
StringBuffer stringBuffer = new StringBuffer("");
String str = null;
while((str = reader.readLine())!=null) {
stringBuffer.append(str);
stringBuffer.append("\n");
}
Java_MyBatisPlus_BigData java_MyBatisPlus_BigData = new Java_MyBatisPlus_BigData(null,bytes1,bytes2,stringBuffer.toString());
bigDataMapper.insert(java_MyBatisPlus_BigData);
in.close();
in2.close();
reader.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
//测试查询大字段表
private void testSelect() {
List<Java_MyBatisPlus_BigData> list = bigDataMapper.selectList(null);
try {
for(Java_MyBatisPlus_BigData big:list) {
//打印出id
System.out.println("id = "+big.getId());
//将 photo 列信息输出到指定路径
FileOutputStream fos = new FileOutputStream("D:\\DM\\test\\java20250225\\"+big.getId()+"_photo_test.jpg");
fos.write(big.getPhoto());
//将 describe 列信息输出到指定路径
FileOutputStream fos2 = new FileOutputStream("D:\\DM\\test\\java20250225\\"+big.getId()+"_Blob_photo_test.jpg");
fos2.write(big.getDescribe());
//将 photo 列信息输出到控制台
System.out.println("txt="+big.getTxt());
fos.close();
fos2.close();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
Test_MyBatisPlus_BigData test = new Test_MyBatisPlus_BigData();
test.init();
test.testInsert();
test.testSelect();
}
}
2.3.7 打印结果
id = 1
txt=clob_test.txt文本
//1.插入大字段信息:
package java_jdbc;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class jdbc_operate_bigData{
// 定义 DM JDBC 驱动串
static String jdbcString = "dm.jdbc.driver.DmDriver";
// 定义 DM URL 连接串
............
输出文件为
下一篇
达梦数据库应用开发_Spring框架_yxy
更多其他数据库相关专栏:
1.数据库优化
数据库优化基本思路、索引详解、执行计划、统计信息、CBO原理、单表优化、多表优化、分布式优化、子查询、优化案例等
数据库优化(sql优化)专栏连接
2.达梦分布式数据库:
部署详细步骤(DEM)、备份还原实战、核心特性理解、使用心得、表分区方式详细介绍、表分区最佳实践、DPC架构详解等
达梦分布式DPC专栏连接
3.应用开发类
jdbc、hibernate、ibatis、mybatis、MyBatis-Plus、Spring、中间件mycat、Sharding-JDBC等
达梦数据库应用开发专栏连接