Example类是什么?
Example类指定如何构建一个动态的where子句. 表中的每个non-BLOB列可以被包括在where子句中. 例子是展示此类用法的最好方式.
Example类可以用来生成一个几乎无限的where子句.
Example类包含一个内部静态类 Criteria 包含一个用 anded 组合在where子句中的条件列表. Example类包含一个 List 属性,所有内部类Criteria中的子句会用 ored组合在一起. 使用不同属性的 Criteria 类允许您生成无限类型的where子句.
创建 Criteria 对象 可以使用Example类中的 createCriteria() 或者 or() . 如果 Criteria 对象是用 createCriteria() 创建的,它会自动为 List 属性添加一个 Criteria 对象 - 这使得它更容易写一个简单的where子句, 如果您不需要 or 或者其他几个子句组合的话. 用 or(Criteria criteria) 方法创建 Criteria 对象, 方法里的 criteria 对象会被添加进 Criteria 对象的列表中.
重要 我们推荐您只使用 or() 方法创建 Criteria 对象. 我们相信这种方法使代码更有可读性.
首先了解下mapper接口
mapper接口中的方法解析
方法 | 功能说明 |
---|---|
int countByExample(UserExample example) thorws SQLException | 按条件计数 |
int deleteByPrimaryKey(Integer id) thorws SQLException | 按主键删除 |
int deleteByExample(UserExample example) thorws SQLException | 按条件查询 |
String/Integer insert(User record) thorws SQLException | 插入数据(返回值ID) |
User selectByPrimaryKey(Integer id) thorws SQLException | 按主键查询 |
ListselectByExample(UserExample example) thorws SQLException | 按条件查询 |
ListselectByExampleWithBLOGs(UserExample example) thorws SQLException | 按条件查询(包括BLOB字段) |
int updateByPrimaryKey(User record) thorws SQLException | 按主键更新 |
int updateByPrimaryKeySelective(User record) thorws SQLException | 按主键更新值不为null的字段 |
int updateByExample(User record, UserExample example) thorws SQLException | 按条件更新 |
int updateByExampleSelective(User record, UserExample example) thorws SQLException | 按条件更新值不为null的字段 |
用例子说明:
@Autowired
private TbContentCategoryMapper mapper;
@Override
public List<EasyUITreeNode> getContentCategoryList(Long parentId) {
//1.注入mapper
//2.创建example
TbContentCategoryExample example = new TbContentCategoryExample();
//3.设置条件
//3.1创建Criteria对象,构建一个动态的where子句
TbContentCategoryExample.Criteria criteria = example.createCriteria();
criteria.andParentIdEqualTo(parentId);
//4.执行查询
List<TbContentCategory> list = mapper.selectByExample(example);
//5.转成EasyUITreeNode 列表
List<EasyUITreeNode> nodes = new ArrayList<>();
for (TbContentCategory tbContentCategory : list) {
EasyUITreeNode node = new EasyUITreeNode();
node.setId(tbContentCategory.getId());
node.setState(tbContentCategory.getIsParent()?"closed":"open");
node.setText(tbContentCategory.getName());//分类名称
nodes.add(node);
}
//6.返回
return nodes;
}
example实例解析
解析
//3.设置条件
//3.1创建Criteria对象,构建一个动态的where子句
TbContentCategoryExample.Criteria criteria = example.createCriteria();
criteria.andParentIdEqualTo(parentId);
用example的createCriteria() 创建对象---构建一个动态的where子句(可以拥有无限个的where子句)的对象
调用 criteria.andXxxEqualTo(value) 说明: 添加xxx字段等于value条件
----不明白的方法可在 example实例解析 mapper接口中的方法解析 查看
//4.执行查询
List<TbContentCategory> list = mapper.selectByExample(example);
把添加了where 条件语句 ,交给mapper查询。