MyBatis通用Mapper中的通用example(排序)詳解

MyBatis通用Mapper的通用example(排序)

Example example = new Example(TerminalType.class);
//註意:排序使用的是列名
example.setOrderByClause("TT_PROVIDERID DESC");
//如果需要其他條件
//掌機類型名字
//條件查詢使用的是屬性名
example.createCriteria().andEqualTo("terminalName", "計量現場服務終端");
//廠商id大於3
// example.createCriteria().andGreaterThan("id",3);
List<TerminalType> terminalTypeList = terminalTypeService.selectByExample(example);

接口

/**
     * 按照指定排序查詢集合
     *
     * @param example - 條件
     * @return count
     */
    List<T> selectByExample(Object example);

實現類

 @Override
    public List<T> selectByExample(Object example) {
        return baseMapper.selectByExample(example);
    }

MyBatis通用Mapper技巧

一、排序

錯誤代碼:

example.orderBy(BaseEntity.Field.GMTUpdate + " desc");

正確方式:

1、通過註解 @OrderBy(value = “DESC”)

2、example.setOrderByClause(“GMT_UPDATE DESC”);註意此處是列名稱,不是屬性名。

二、處理oracle的null異常

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<setting name="cacheEnabled" value="false"/>
<!--解決插入null的時候報錯問題-->
<setting name="jdbcTypeForNull" value="NULL"/>
</settings>
</configuration>

三、mapper的selectOne返回值可能是null

獲取的結果應做null判定。

四、看代碼

public interface SequenceMapper
{
@Select("select SEQ_${tableName}.nextval from dual")
int getSequence(@Param("tableName") String tableName);
}

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。

推薦閱讀: