#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连接手动提交同一事务。

