目录
3.3 Mapper接口方法演示 (以MinisterMapper接口为例)
1、前言
如何创建逆向工程参考:
NO.08 MyBatis创建逆向工程_qq_46053741的博客-CSDN博客
本篇同样参考t_minister表、t_dutie表,表结构参考:NO.06 自定义映射resultMap_qq_46053741的博客-CSDN博客。以逆向工程生成的MinisterMapper接口为例
2、Mapper接口中的方法以及方法说明
本片中的逆向工程以MyBatis3生成。
2.1 MinisterMapper接口方法列表
int countByExample(MinisterExample example);
int deleteByExample(MinisterExample example);
int deleteByPrimaryKey(Integer id);
int insert(Minister record);
int insertSelective(Minister record);
List<Minister> selectByExample(MinisterExample example);
Minister selectByPrimaryKey(Integer id);
int updateByExampleSelective(@Param("record") Minister record, @Param("example") MinisterExample example);
int updateByExample(@Param("record") Minister record, @Param("example") MinisterExample example);
int updateByPrimaryKeySelective(Minister record);
int updateByPrimaryKey(Minister record);
2.2 方法说明
1)int countByExample(MinisterExample example):根据条件获取当前的总记录条数
2)int deleteByExample(MinisterExample example):根据条件删除记录
3)int deleteByPrimaryKey(Integer id):根据主键删除记录
deleteByExample方法和deleteByPrimaryKey方法的区别:
- deleteByExample方法可以根据任意的条件删除记录
- deleteByPrimaryKey方法只能根据主键删除记录
4)int insert(Minister record):向对应的表中添加记录
5)int insertSelective(Minister record):向对应的表中选择性添加记录
insert方法和insertSelective方法的区别:
- insert方法可以添加属性值为null的记录
- insertSelective方法的参数,若有某个属性值为null,在添加记录时不会对相应的字段赋值,该字段根据表的默认值约束赋值。
6)List<Minister> selectByExample(MinisterExample example):根据任意条件查询记录
7)Minister selectByPrimaryKey(Integer id):只能根据主键查询记录
selectByExample方法和selectByPrimaryKey方法的区别:
- selectByExample方法可以根据任意的条件查询记录
- selectByPrimaryKey方法只能根据主键查询记录
8)int updateByExampleSelective(@Param("record") Minister record, @Param("example") MinisterExample example):根据条件选择性修改记录
9)int updateByExample(@Param("record") Minister record, @Param("example") MinisterExample example):根据条件修改记录
updateByExampleSelective方法和updateByExample方法的区别:
- updateByExampleSelective方法:例:如果参数的某个属性为null,则不会修改表中对应字段的值
- updateByExample方法:例:如果参数的某个属性为null,则将表中对应字段的值修改为null
10)int updateByPrimaryKeySelective(Minister record):根据主键选择性修改记录
11)int updateByPrimaryKey(Minister record);只能根据主键修改记录
updateByPrimaryKeySelective方法和updateByPrimaryKey方法的区别与 updateByExampleSelective方法和updateByExample方法的区别相同
3、方法演示
3.1 example实例解析
mybatis的逆向工程中会生成实例及实例对应的Example类(例如:MinisterExample)。如果有需要根据条件执行的某些操作,可以通过创建MinisterExample类的对象,调用createCriteria()方法创建条件对象,用该对象调用各种andXXX、orXXX等方法添加条件参数。在执行Mapper接口中的方法时,将条件对象传递给形参。
例如:根据性别查询人员信息
@Test
public void selectByExample() {
SqlSession sqlSession= JdbcUtiles.getSqlSession();
MinisterMapper ministerMapper=sqlSession.getMapper(MinisterMapper.class);
//创建example对象
MinisterExample ministerExample=new MinisterExample();
//创建条件对象并添加查询条件
ministerExample.createCriteria().andGenderEqualTo("男");
//调用selectByExample方法,获取人员信息
List<Minister> result=ministerMapper.selectByExample(ministerExample);
for(Minister minister:result){
System.out.println("result:"+minister);
}
JdbcUtiles.closeSqlSession(sqlSession);
}
3.2 条件方法说明
- setOrderByClause(“字段名 ASC”); 添加升序排列条件,DESC为降序
- setDistinct(false) 去除重复,boolean型,true为选择不重复的记录。
- andXxxIsNull 添加字段xxx为null的条件
- andXxxIsNotNull 添加字段xxx不为null的条件
- andXxxEqualTo(value) 添加xxx字段等于value条件
- andXxxNotEqualTo(value) 添加xxx字段不等于value条件
- andXxxGreaterThan(value) 添加xxx字段大于value条件
- andXxxGreaterThanOrEqualTo(value) 添加xxx字段大于等于value条件
- andXxxLessThan(value) 添加xxx字段小于value条件
- andXxxLessThanOrEqualTo(value) 添加xxx字段小于等于value条件
- andXxxIn(List<?>) 添加xxx字段值在List<?>条件
- andXxxNotIn(List<?>) 添加xxx字段值不在List<?>条件
- andXxxLike(“%”+value+”%”) 添加xxx字段值为value的模糊查询条件
- andXxxNotLike(“%”+value+”%”) 添加xxx字段值不为value的模糊查询条件
- andXxxBetween(value1,value2) 添加xxx字段值在value1和value2之间条件
- andXxxNotBetween(value1,value2) 添加xxx字段值不在value1和value2之间条件
3.3 Mapper接口方法演示 (以MinisterMapper接口为例)
- 演示countByExample(MinisterExample example)方法:
@Test
public void countByExample() {
SqlSession sqlSession= JdbcUtiles.getSqlSession();
MinisterMapper ministerMapper=sqlSession.getMapper(MinisterMapper.class);
//目标:查询总记录数
int result1=ministerMapper.countByExample(null);
System.out.println("result1------>"+result1);
//目标:查询性别为男的总记录数
//创建example对象
MinisterExample ministerExample=new MinisterExample();
//创建条件对象并添加查询条件
ministerExample.createCriteria().andGenderEqualTo("男");
int result2=ministerMapper.countByExample(ministerExample);
System.out.println("result2------>"+result2);
JdbcUtiles.closeSqlSession(sqlSession);
}
结果:
演示deleteByExample(MinisterExample example)方法
@Test
public void deleteByExample() {
SqlSession sqlSession= JdbcUtiles.getSqlSession();
MinisterMapper ministerMapper=sqlSession.getMapper(MinisterMapper.class);
//目标:删除年龄小于20的记录
//创建example对象
MinisterExample ministerExample=new MinisterExample();
//创建条件对象并添加查询条件
ministerExample.createCriteria().andAgeLessThan(20);
int result1=0;
result1=ministerMapper.deleteByExample(ministerExample);
if(result1!=0){
System.out.println("数据删除成功");
}else {
System.out.println("数据删除失败");
}
JdbcUtiles.closeSqlSession(sqlSession);
}
结果
演示deleteByPrimaryKey(Integer id)方法
@Test
public void deleteByPrimaryKey() {
SqlSession sqlSession= JdbcUtiles.getSqlSession();
MinisterMapper ministerMapper=sqlSession.getMapper(MinisterMapper.class);
//目标:删除主键id等于11的记录
int result1=0;
result1=ministerMapper.deleteByPrimaryKey(11);
if(result1!=0){
System.out.println("数据删除成功");
}else {
System.out.println("数据删除失败");
}
JdbcUtiles.closeSqlSession(sqlSession);
}
结果
演示insert(Minister record)方法
@Test
public void insert() {
SqlSession sqlSession= JdbcUtiles.getSqlSession();
MinisterMapper ministerMapper=sqlSession.getMapper(MinisterMapper.class);
//目标:添加一条部门为null的记录
int result1=0;
result1=ministerMapper.insert(new Minister(null,"测试6",17,"男",null));
if(result1!=0){
System.out.println("数据添加成功");
}else {
System.out.println("数据添加失败");
}
JdbcUtiles.closeSqlSession(sqlSession);
}
结果
演示insertSelective(Minister record)方法
@Test
public void insertSelective() {
SqlSession sqlSession= JdbcUtiles.getSqlSession();
MinisterMapper ministerMapper=sqlSession.getMapper(MinisterMapper.class);
//目标:添加一条部门为null的记录
int result1=0;
result1=ministerMapper.insertSelective(new Minister(null,null,17,"男",null));
if(result1!=0){
System.out.println("数据添加成功");
}else {
System.out.println("数据添加失败");
}
JdbcUtiles.closeSqlSession(sqlSession);
}
结果
演示selectByExample(MinisterExample example)方法
@Test
public void selectByExample() {
SqlSession sqlSession= JdbcUtiles.getSqlSession();
MinisterMapper ministerMapper=sqlSession.getMapper(MinisterMapper.class);
//目标:查询minister_dutie为3,age在20~50之间的人员信息
//创建example对象
MinisterExample ministerExample=new MinisterExample();
//获取条件对象并添加条件
ministerExample.createCriteria().andMinisterDutieEqualTo("3").andAgeBetween(20,50);
List<Minister> result=ministerMapper.selectByExample(ministerExample);
for(Minister minister:result){
System.out.println("result:"+minister);
}
JdbcUtiles.closeSqlSession(sqlSession);
}
结果
演示selectByPrimaryKey(Integer id)方法
@Test
public void selectByPrimaryKey() {
SqlSession sqlSession= JdbcUtiles.getSqlSession();
MinisterMapper ministerMapper=sqlSession.getMapper(MinisterMapper.class);
//目标:查询id为3的人员信息
Minister result=ministerMapper.selectByPrimaryKey(3);
System.out.println("result:"+result);
JdbcUtiles.closeSqlSession(sqlSession);
}
结果
演示updateByExampleSelective(@Param("record") Minister record, @Param("example") MinisterExample example)方法
@Test
public void updateByExampleSelective() {
SqlSession sqlSession= JdbcUtiles.getSqlSession();
MinisterMapper ministerMapper=sqlSession.getMapper(MinisterMapper.class);
//目标:将id为12,ministerName为测试二的人员信息修改为ministerName为坤坤
Minister minister1=ministerMapper.selectByPrimaryKey(12);
System.out.println("id为12的人员信息:"+minister1);
//修改名字
minister1.setMinisterName("坤坤");
//创建example对象
MinisterExample ministerExample=new MinisterExample();
//获取条件对象并添加条件
ministerExample.createCriteria().andIdEqualTo(12).andMinisterNameEqualTo("测试2");
int result=0;
result=ministerMapper.updateByExampleSelective(minister1,ministerExample);
if(result!=0){
System.out.println("数据修改成功");
}else {
System.out.println("数据修改失败");
}
JdbcUtiles.closeSqlSession(sqlSession);
}
结果
演示updateByExample(@Param("record") Minister record, @Param("example") MinisterExample example)方法
@Test
public void updateByExample() {
SqlSession sqlSession= JdbcUtiles.getSqlSession();
MinisterMapper ministerMapper=sqlSession.getMapper(MinisterMapper.class);
//目标:将id为13,ministerName为测试三的人员信息修改为ministerName为null
Minister minister1=ministerMapper.selectByPrimaryKey(13);
System.out.println("id为13的人员信息:"+minister1);
//修改名字
minister1.setMinisterName(null);
//创建example对象
MinisterExample ministerExample=new MinisterExample();
//获取条件对象并添加条件
ministerExample.createCriteria().andIdEqualTo(13).andMinisterNameEqualTo("测试3");
int result=0;
result=ministerMapper.updateByExample(minister1,ministerExample);
if(result!=0){
System.out.println("数据修改成功");
}else {
System.out.println("数据修改失败");
}
JdbcUtiles.closeSqlSession(sqlSession);
}
结果
updateByPrimaryKeySelective(Minister record)方法与updateByPrimaryKey(Minister record)方法操作类似updateByExampleSelective(@Param("record") Minister record, @Param("example") MinisterExample example)方法和updateByExample(@Param("record") Minister record, @Param("example") MinisterExample example)方法,不进行演示。