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,執行查詢