# 高开应用使用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();
}
}