最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

MyBatis之适配不同数据库

维修 admin 29浏览 0评论

MyBatis之适配不同数据库

DBIdEnum.class
下面的productName可以通过SqlSession获取,获取方式:Java之获取SqlSession和ProductName

package com.qdbeiqi.bpm.domain.visitor.db.adaptation;import lombok.AllArgsConstructor;/*** @author Jalon* @since 2023/11/2 17:20**/
@AllArgsConstructor
public enum DBIdEnum {SqlServer("Microsoft SQL Server", "sqlserver"),KingBase("KingbaseES", "kingbase");public static DBIdEnum getEnumer(String _databaseId) {DBIdEnum[] values = DBIdEnum.values();for (DBIdEnum v : values) {if (_databaseId.equals(v.getValue())) {return v;}}throw new RuntimeException("DBIdEnum中找不到给定的_databaseId:" + _databaseId);}// 数据库厂商提供的productNameprivate String name;// 根据productName自定义应用中使用的值private String value;public String getName() {return name;}public String getValue() {return value;}
}

MyBatisConfig.class

package com.qdbeiqi.bpm.domain.visitor.db.adaptation;import org.apache.ibatis.mapping.DatabaseIdProvider;
import org.apache.ibatis.mapping.VendorDatabaseIdProvider;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;import java.util.Properties;/*** @author Jalon* @since 2023/11/2 17:56**/
@Configuration
public class MyBatisConfig {@Beanpublic DatabaseIdProvider databaseIdProvider() throws Exception {VendorDatabaseIdProvider databaseIdProvider = new VendorDatabaseIdProvider();Properties props = new Properties();DBIdEnum[] values = DBIdEnum.values();for (DBIdEnum v : values) {props.put(v.getName(), v.getValue());}databaseIdProvider.setProperties(props);return databaseIdProvider;}
}

通过if判断

<if test="_databaseId == 'sqlserver'">CONVERT(VARCHAR(10), visit_time, 23)
</if>
<if test="_databaseId == 'kingbase'">to_char(visit_time, 'YYYY-MM-DD')
</if>

通过标签databaseId

<select id="" databaseId="sqlserver" resultType="">
</select>
<select id="" databaseId="kingbase" resultType="">
</select>

MyBatis之适配不同数据库

DBIdEnum.class
下面的productName可以通过SqlSession获取,获取方式:Java之获取SqlSession和ProductName

package com.qdbeiqi.bpm.domain.visitor.db.adaptation;import lombok.AllArgsConstructor;/*** @author Jalon* @since 2023/11/2 17:20**/
@AllArgsConstructor
public enum DBIdEnum {SqlServer("Microsoft SQL Server", "sqlserver"),KingBase("KingbaseES", "kingbase");public static DBIdEnum getEnumer(String _databaseId) {DBIdEnum[] values = DBIdEnum.values();for (DBIdEnum v : values) {if (_databaseId.equals(v.getValue())) {return v;}}throw new RuntimeException("DBIdEnum中找不到给定的_databaseId:" + _databaseId);}// 数据库厂商提供的productNameprivate String name;// 根据productName自定义应用中使用的值private String value;public String getName() {return name;}public String getValue() {return value;}
}

MyBatisConfig.class

package com.qdbeiqi.bpm.domain.visitor.db.adaptation;import org.apache.ibatis.mapping.DatabaseIdProvider;
import org.apache.ibatis.mapping.VendorDatabaseIdProvider;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;import java.util.Properties;/*** @author Jalon* @since 2023/11/2 17:56**/
@Configuration
public class MyBatisConfig {@Beanpublic DatabaseIdProvider databaseIdProvider() throws Exception {VendorDatabaseIdProvider databaseIdProvider = new VendorDatabaseIdProvider();Properties props = new Properties();DBIdEnum[] values = DBIdEnum.values();for (DBIdEnum v : values) {props.put(v.getName(), v.getValue());}databaseIdProvider.setProperties(props);return databaseIdProvider;}
}

通过if判断

<if test="_databaseId == 'sqlserver'">CONVERT(VARCHAR(10), visit_time, 23)
</if>
<if test="_databaseId == 'kingbase'">to_char(visit_time, 'YYYY-MM-DD')
</if>

通过标签databaseId

<select id="" databaseId="sqlserver" resultType="">
</select>
<select id="" databaseId="kingbase" resultType="">
</select>

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论