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

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);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章