搬运连接:https://blog.csdn.net/qq_39056805/article/details/80585941
查询
首先说一下查询的不足之处:不能指定查询的列,只能够查询所有列
我们可以看到,有三个查询方法(一般来说只有两个查询方法,第二个查询方法只会在特定条件下出现)
方法1:selectByExample(TbItemDescExample example)
返回值:List<TbItemDesc>
作用:通过特定限制条件查询信息,example用于生成一个Criteria对象来设置查询条件
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的字段
具体可设置的条件很多很多,根据表的结构的不同会有不同的可限制条件,比如:
使用案例
public void testFindUserByName(){ //通过criteria构造查询条件 UserExample userExample = new UserExample(); userExample.setOrderByClause("username asc"); //asc升序,desc降序排列 userExample.setDistinct(false); //去除重复,true是选择不重复记录,false反之 UserExample.Criteria criteria = userExample.createCriteria(); //构造自定义查询条件 criteria.andUsernameEqualTo("张三"); //自定义查询条件可能返回多条记录,使用List接收 List<User> users = userMapper.selectByExample(userExample); System.out.println(users); }
代码解析
Mybatis逆向工程会生成实例及实例对应的example(用于添加条件,相当于where后的部分) xxxExample example = new xxxExample(); Criteria criteria = example.createCriteria(); 方法说明: // 1.添加升序排列条件,DESC为降序 example.setOrderByClause("字段名ASC") // 2.去除重复,boolean类型,true为选择不重复的记录 example.setDistinct(false) // 3.添加字段xxx为null的条件 criteria.andXxxIsNull // 4.添加字段xxx不为null的条件 criteria.andXxxIsNotNull // 5.添加xxx字段等于value条件 criteria.andXxxEqualTo(value) // 6.添加xxx字段不等于value条件 criteria.andXxxNotEqualTo(value) // 7.添加xxx字段大于value条件 criteria.andXxxGreaterThan(value) // 8.添加xxx字段大于等于value条件 criteria.andXxxGreaterThanOrEqualTo(value) // 9.添加xxx字段小于value条件 criteria.andXxxLessThan(value) // 10.添加xxx字段小于等于value条件 criteria.andXxxLessThanOrEqualTo(value) // 11.添加xxx字段值在List criteria.andXxxIn(List) // 12.不添加xxx字段值在List criteria.andXxxNotIn(List) // 13.添加xxx字段值在之间 criteria.andXxxBetween(value1,value2) // 14.添加xxx字段值不在之间 criteria.andXxxNotBetween(value1,value2)
在example 除了这有的以外 AND OR, 还有联表查询,批量增删改?这些怎么写?
//通过criteria构造查询条件
UserExample userExample = new UserExample();
userExample.setOrderByClause("username asc");//asc升序,desc降序排列
userExample.setDistinct(false); //去除重复,true是选择不重复记录,false反之
UserExample.Criteria criteria = userExample.createCriteria(); //构造自定义查询条件