映射器Mapper

使用代码生成器生成Mapper接口以及Mapper.xml文件

so-fast框架的ORM基于Mybatis-plus实现,因此规范所有的业务Mapper必须继承Mybatis-plus的通用Mapper。

Mapper接口的定义

Mapper接口的定义需要遵循以下规范:

接口必须extends BaseMapper

Good:

/**
 * 系统设置 Mapper 接口
 * @Package: com.sofast.system.setting.mapper
 * @Description: 系统设置
 * @Date : 2020-12-16
 * @Author NCIT
 */
public interface SysSettingsMapper extends BaseMapper<SystemSettings> {

通用Mapper中已经实现了基本的增删改查功能,对于表的基本操作,不需要写sql文。

SQL文

对于复杂的sql处理,需要书写SQL文来提供业务处理。(不推荐写复杂的表关联,对于表关联等操作,建议在应用层处理)

当mybatis-plus提供的通用方法无法满足业务需求时,可以通过自定义方法和写sql文的方式来实现。

利用代码生成器,在resources目录下会生成xml文件

src/main/resources
└── mapper
    ├── biz
    ├── dict
    │   ├── DictDataMapper.xml
    │   └── DictTypeMapper.xml
    ├── setting
    └── upms

按照如下格式规范编写mybatis sql文

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.sofast.system.dict.mapper.DictTypeMapper">

    <sql id="selectColumn">
        select id, dict_name, dict_type, status, remark, create_user, create_time, update_user, update_time
        from sys_dict_type
    </sql>

    <sql id="orderColumn">
        order by dict_type, update_time desc
    </sql>

    <select id="list" parameterType="DictTypeQueryVo" resultType="DictType">
        <include refid="selectColumn"/>
        <where>
            <if test="dictTypeQueryVo.dictName != null and dictTypeQueryVo.dictName != ''">
                AND dict_name like concat('%', #{dictTypeQueryVo.dictName}, '%')
            </if>
            <if test="dictTypeQueryVo.dictType != null and dictTypeQueryVo.dictType != ''">
                AND dict_type like concat('%', #{dictTypeQueryVo.dictType}, '%')
            </if>
            <if test="dictTypeQueryVo.status != null and dictTypeQueryVo.status != ''">
                AND status = #{dictTypeQueryVo.status}
            </if>
        </where>
        <include refid="orderColumn"/>
    </select>

</mapper>

select节点的id属性值,对应mapper接口中的方法名,parameterType对应方法的参数类型,resultType对应方法的返回值。

在Mapper接口中自定义list方法。

public interface DictTypeMapper extends BaseMapper<DictType> {

    public Page<DictType> list(Page<DictType> page, @Param("dictTypeQueryVo") DictTypeQueryVo dictTypeQueryVo);

}

在Service接口中自定义list方法。

public interface IDictTypeService extends IService<DictType> {

    /**
     * 条件查询列表
     * @param page
     * @param dictTypeQueryVo
     * @return
     */
    public Page<DictType> list(Page<DictType> page, DictTypeQueryVo dictTypeQueryVo);

在ServiceImpl中实现Service接口的list方法

@Override
public Page<DictType> list(Page<DictType> page, DictTypeQueryVo dictTypeQueryVo) {
    return getBaseMapper().list(page, dictTypeQueryVo);
}
Copyright © 2020. 恩梯梯数据(中国)信息技术有限公司. all right reserved,powered by Gitbook该文件修订时间: 2021-01-07 15:24:32

results matching ""

    No results matching ""