#MyBatis

MyBatis是Java持久层框架,负责SQL映射、参数绑定和结果映射。YashanDB JDBC驱动负责建立数据库连接并执行MyBatis生成的JDBC调用。

本章节仅说明与YashanDB JDBC驱动直接相关的配置。有关完整项目依赖、单数据源和多数据源配置、Mapper示例及常见问题,请查阅YashanDB生态文档:MyBatis (opens new window)。MyBatis本身的配置和API用法请查阅MyBatis官方文档。

# 对接准备

对接前需要完成以下准备:

  • 按照MyBatis官方文档为项目添加MyBatis或对应的Spring Boot Starter依赖。
  • 安装与应用JDK版本匹配的YashanDB JDBC驱动。
  • 准备可正常访问的YashanDB数据库和具有所需权限的数据库用户。

YashanDB JDBC驱动的获取和安装方法请参考安装JDBC驱动。

# 配置数据源

在Spring Boot应用的application.yml中配置YashanDB数据源和Mapper文件位置:

spring:
  datasource:
    url: jdbc:yasdb://192.168.1.2:1688/yasdb
    username: username
    password: passwd
    driver-class-name: com.yashandb.jdbc.Driver

mybatis:
  mapper-locations: classpath:/mapper/*.xml
  type-aliases-package: com.example.domain

连接串格式和参数请参考JDBC连接串配置参数。使用连接池时,还需要按照连接池文档配置连接有效性检查、连接超时和连接生命周期。

# 定义Mapper

Mapper接口用于声明数据访问方法,Mapper XML用于定义SQL和结果映射。例如,根据客户编号查询客户信息:

public interface CustomerMapper {
    Customer selectById(int customerId);
}
<mapper namespace="com.example.mapper.CustomerMapper">
    <select id="selectById" resultType="com.example.domain.Customer">
        SELECT customer_id, customer_name
        FROM customer
        WHERE customer_id = #{customerId}
    </select>
</mapper>

#{customerId}由MyBatis通过PreparedStatement绑定参数。不要使用字符串拼接传入业务参数。

# 使用说明

  • 默认情况下,Mapper XML中的单条SQL语句不需要添加分号。需要执行多条SQL语句时,应先确认业务必要性,并按照JDBC连接串配置参数配置allowMultiStmt。
  • 使用useGeneratedKeys="true"获取数据库生成的主键时,应同时正确配置keyColumn和keyProperty。YashanDB JDBC驱动的生成主键返回能力适用于单行插入,详细用法请查阅生态文档。
  • 需要将查询结果序列化为JSON时,实体类中的CLOB字段可以映射为String,BLOB字段可以映射为byte[],避免直接序列化JDBC LOB对象。
  • SQL参数和结果类型应按照YashanDB与Java的数据类型映射关系配置,详情请参考JDBC与Java数据类型映射。
  • 事务由Spring管理时,应在业务层声明事务边界,不要同时通过Mapper外部获取的JDBC连接手动提交同一事务。
pdf-btn 下载文档 copy-btn 复制链接
edit-icon
反馈
coperate-icon
coperate
合作
communication-icon
communicate
交流