EOS Low-Code Platform 8 EOS Low-Code Platform 8
产品简介
学习指南
更新说明
安装与集成
上线指南
初见EOS
低代码开发手册
专业代码开发手册
智能体开发手册
专题场景实战
公共服务框架
应用运行治理
运维指南
  • 高开应用使用MyBatis3和MyBatis-Plus持久化框架开发
  • 1、Mapper开发
  • 2、Mapper加载
  • 3、Mapper使用
  • 4、数据源切换
  • 5、示例工程源代码

# 高开应用使用MyBatis3和MyBatis-Plus持久化框架开发

# 1、Mapper开发

Mybatis3的mapper开发一般是配置文件、注解和直接继承Mybatis-Plus的BaseMapper三种方式进行,也可以三种混合使用。 数据类型可以是普通的javabean,也可以是sdo的静态java对象。

# 1)Mapper配置文件方式

RoleMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "https://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.primeton.eos.project.mapper.RoleMapper">

  <!-- 查询所有角色 -->
  <select id="queryAll" resultType="com.primeton.gocom.afcenter.model.auth.Role">
    SELECT * FROM AFC_ROLE
  </select>

  <!-- 查询:根据 ID 查询角色 -->
  <select id="getById" parameterType="string" resultType="com.primeton.gocom.afcenter.model.auth.Role">
    SELECT *
    FROM AFC_ROLE
    WHERE ID = #{id}
  </select>

  <!-- 新增:插入角色 -->
  <insert id="insert" parameterType="com.primeton.gocom.afcenter.model.auth.Role">
    INSERT INTO AFC_ROLE (
      ID,
      CODE,
      NAME,
      DESCRIPTION,
      STATUS,
      CREATE_TIME,
      UPDATE_TIME
    ) VALUES (
      #{id},
      #{code},
      #{name},
      #{description},
      #{status, jdbcType=CHAR},
      CURRENT_TIMESTAMP,
      CURRENT_TIMESTAMP
    )
  </insert>

  <!-- 修改:更新角色信息 -->
  <update id="update" parameterType="com.primeton.gocom.afcenter.model.auth.Role">
    UPDATE AFC_ROLE
    SET
      NAME = #{name},
      DESCRIPTION = #{description},
      STATUS = #{status, jdbcType=CHAR},
      UPDATE_TIME = CURRENT_TIMESTAMP
    WHERE ID = #{id}
  </update>

  <!-- 删除:根据 ID 删除角色(逻辑删除 or 物理删除) -->
  <!-- 方式1:物理删除 -->
  <delete id="deleteById" parameterType="string">
    DELETE FROM AFC_ROLE
    WHERE ID = #{id}
  </delete>

</mapper>

RoleMapper.java

package com.primeton.eos.project.mapper;

/**
 * RoleMapper
 * 
 */
public interface RoleMapper {
    // RoleMapper.xml配置文件中的查询
    List<Role> queryAll();

    Role getById(String id);

    int insert(Role role);

    int update(Role role);
    
    int deleteById(String id);
}

# 2)注解方式

RoleMapper.java

package com.primeton.eos.project.mapper;

import org.apache.ibatis.annotations.Select;

/**
 * RoleMapper
 * 
 */
public interface RoleMapper {
    // 注解方式
    @Select("SELECT * FROM AFC_ROLE")
    List<Role> query();
}

# 3)、MyBatis-Plus方式

Mapper开发继承BaseMapper

RoleMapper.java

package com.primeton.eos.project.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;

/**
 * RoleMapper
 * 
 */
public interface RoleMapper extends BaseMapper<Role> {
    
}

# 2、Mapper加载

mapper加载,使用MapperScan注解

@MapperScan("com.primeton.eos.project.mapper")
@Configuration
public class ProjectConfig {

}

# 3、Mapper使用

直接在service中使用Autowired注解注入

@Service
public class TestRoleService {
    
    @Autowired
    private RoleMapper roleMapper;
    
    // 使用配置文件中
    public List<Role> queryAll() {
        return roleMapper.queryAll();
    }
    
    // 使用@Select注解中的
    public List<Role> query() {
        return roleMapper.query();
    }

    // 使用mybatis plus的接口
    public List<Role> selectList() {
        return roleMapper.selectList(null);
    }
}

# 4、数据源切换

mybatis的SqlSessionFactory默认支持eos的租户数据源切换能力。

也可以在service上使用注解DynamicDataSource直接指定数据源(优先级最高)。

import com.primeton.ext.common.connection.datasource.DynamicDataSource;

@Service
public class TestRoleService {
    
    @Autowired
    private RoleMapper roleMapper;
    
    // 数据源切换
    @DynamicDataSource("demo")
    public List<Role> query() {
        return roleMapper.query();
    }
}

# 5、示例工程源代码

hc-mybatis-test.zip

← 后端业务代码如何发布为离线运算逻辑 数据源配置 →