天天看點

MyBatis Example.Criteria對象加入自定義SQL

MyBatis Example.Criteria對象加入自定義SQL

需求:

單表查詢 有類似這樣的要求:

select xxx from table_name where column1 = ? and column2 = ?

and (column3 = ? or column4 = ? or column5 like ?)

使用生成的Example 對象如何實作?我還沒找到方法,然後想着怎麼加入自定義的SQL

實作如下:

1,Mapper,Example,Criteria 對象

@Autowired
private EnterpriseInfoMapper mapper;
EnterpriseInfoExample example = new EnterpriseInfoExample();
EnterpriseInfoExample.Criteria criteria = example.createCriteria();
           

2, 加入自定義的SQL

String sql = "(contacts = '" + req.getKeyword() +"' or contacts_phone = '" + req.getKeyword() + "' or ent_name like '%" + req.getKeyword()  +"%' )";
Class<?> criteriaCls = EnterpriseInfoExample.Criteria.class;
Class<?> generatedCriteriaCls = criteriaCls.getSuperclass();
Method addCriterion = generatedCriteriaCls.getDeclaredMethod("addCriterion", String.class);
addCriterion.setAccessible(true);
addCriterion.invoke(criteria, sql);
           

3,執行查詢

繼續閱讀