MyBatis Example.Criteria對象加入自定義SQL
歡迎使用Markdown編輯器
需求:
單表查詢 有類似這樣的要求:
select xxx from table_name where column1 = ? and column2 = ?
and (column3 = ? or column4 = ? or column5 like ?)
使用生成的Example 對象如何實現?我還沒找到方法,然後想着怎麼加入自定義的SQL
實現如下:
1,Mapper,Example,Criteria 對象
@Autowired
private TEnterpriseInfoMapper mapper;
TEnterpriseInfoExample example = new TEnterpriseInfoExample();
TEnterpriseInfoExample.Criteria criteria = example.createCriteria();
2, 加入自定義的SQL
String sql = "(contacts = '" + req.getKeyword() +"' or contacts_phone = '" + req.getKeyword() + "' or ent_name like '%" + req.getKeyword() +"%' )";
Class<?> criteriaCls = Criteria.class;
Class<?> superclass = criteriaCls.getSuperclass();
Method addCriterion = superclass.getDeclaredMethod("addCriterion", String.class);
addCriterion.setAccessible(true);
addCriterion.invoke(criteria, sql);
3,執行查詢
mapper.selectByExample(example);