首页 > 其他分享 >Mybatis中的自带Mapper方法

Mybatis中的自带Mapper方法

时间:2022-11-18 10:34:49浏览次数:45  
标签:Mapper int Param 主键 record user Mybatis 自带 example


mybatis逆向工程生成的mapper源码:

import com.itheima.springmvc.pojo.Items;
import com.itheima.springmvc.pojo.ItemsExample;
import java.util.List;
import org.apache.ibatis.annotations.Param;

public interface ItemsMapper {

//按条件计数
int countByExample(ItemsExample example);

//按条件删除
int deleteByExample(ItemsExample example);

//按主键删除
int deleteByPrimaryKey(Integer id);

//插入数据(返回值为ID):如果record定义了两个字段,其中有一个字段是主键,数据库共4个字段,则根据主键修改数据库的两个字段,其余两个字段改为null;
int insert(Items record);

//插入数据(返回值为ID):如果record定义了两个字段,其中有一个字段是主键,数据库共4个字段,则根据主键修改数据库的两个字段,其余两个字段不动;
int insertSelective(Items record);

//按条件查询(包括BLOB字段)。只有当数据表中的字段类型有为二进制的才会产生。
List<Items> selectByExampleWithBLOBs(ItemsExample example);

//按条件查询
List<Items> selectByExample(ItemsExample example);

//按主键查询
Items selectByPrimaryKey(Integer id);

//按条件更新值不为null的字段:如果example定义了两个字段,数据库共4个字段,则修改数据库的两个字段,其余两个字段不动;
int updateByExampleSelective(@Param("record") Items record, @Param("example") ItemsExample example);

//和updateByExample相比此方法可以修改大字段类型,其余性质和updateByExample相同
int updateByExampleWithBLOBs(@Param("record") Items record, @Param("example") ItemsExample example);

//按条件更新:如果example定义了两个字段,数据库共4个字段,则修改数据库的两个字段,其余两个字段改为null;
int updateByExample(@Param("record") Items record, @Param("example") ItemsExample example);

//按主键更新值不为null的字段:如果record定义了两个字段,其中有一个字段是主键,数据库共4个字段,则根据主键修改数据库的两个字段,其余两个字段不动;
int updateByPrimaryKeySelective(Items record);

//和updateByPrimaryKey相比此方法可以修改大字段类型,其余性质和updateByPrimaryKey相同
int updateByPrimaryKeyWithBLOBs(Items record);

//按主键更新:如果record定义了两个字段,其中有一个字段是主键,数据库共4个字段,则根据主键修改数据库的两个字段,其余两个字段改为null;
int updateByPrimaryKey(Items record);
}

 

下面详细的介绍每一个方法的使用吧! 
1、countByExample ===>根据条件查询数量

int countByExample(UserExampleexample); 
//下面是一个完整的案列
UserExampleexample=newUserExample();
Criteriacriteria=example.createCriteria();
criteria.andUsernameEqualTo("joe");
intcount=userDAO.countByExample(example);
相当于:select count(*)from user where username='joe';

2、deleteByExample ===>根据条件删除多条

int deleteByExample(AccountExample example); 
//下面是一个完整的案例
Criteria criteria = example.createCriteria();
criteria.andUsernameEqualTo("joe");
userDAO.deleteByExample(example);
相当于:delete from user where username='joe';

3、deleteByPrimaryKey===>根据条件删除单条

int deleteByPrimaryKey(Integerid);
userDAO.deleteByPrimaryKey(10001);
相当于:delete from user where id=10001;

4、insert===>插入数据

int insert(Account record); 
//下面是完整的案例
User user = new User();
user.setId(10001);
user.setUsername("mrHan");
user.setPassword("123456")
user.setEmail("786***[email protected]");
userDAO.insert(user);
相当于:insert into user(ID,username,password,email) values(10001,'mrHan','123456','786***[email protected]');

5、insertSelective===>插入数据

int insertSelective(Accountrecord);

6、selectByExample===>根据条件查询数据

List<Account> selectByExample(AccountExample example); 
UserExample example = new UserExample();
Criteria criteria = example.createCriteria();
criteria.andUsernameEqualTo("joe");
criteria.andUsernameIsNull();
example.setOrderByClause("username asc,email desc");
List<T>list = userDAO.selectByExample(example);
相当于:select * from user where username = 'joe' and username is null order by username asc,email desc
//注:在iBator 生成的文件UserExample.java中包含一个static 的内部类 Criteria ,在Criteria中有很多方法,主要是定义SQL 语句where后的查询条件。

7、selectByPrimaryKey===>根据主键查询数据

AccountselectByPrimaryKey(Integer id);
//相当于select * from user where id = {id};

8、updateByExampleSelective===>按条件更新值不为null的字段

int updateByExampleSelective(@Param("record") Account record, @Param("example") AccountExample example); 
//下面是一个完整的案列
UserExample example = new UserExample();
Criteria criteria = example.createCriteria();
criteria.andUsernameEqualTo("joe");
User user = new User();
user.setPassword("123456");
userDAO.updateByPrimaryKeySelective(user,example);
相当于:update user set password='123456' where username='joe';

9、updateByExampleSelective===>按条件更新

int updateByExample(@Param("record")Accountrecord,@Param("example")AccountExampleexample);

10、updateByPrimaryKeySelective===>按条件更新

int updateByPrimaryKeySelective(Account record); 
//下面是一个完整的案例
User user = new User();user.setId(10001);
user.setPassword("123456");
userDAO.updateByPrimaryKeySelective(user);
相当于:update user set password='123456' where id=10001

11、updateByPrimaryKey===>按主键更新

int updateByPrimaryKey(Accountrecord); 
//下面是一个完整的案例
Useruser=newUser();
user.setId(10001);
user.setUsername("mrHan");
user.setPassword("123456");
user.setEmail("786***[email protected]");
userDAO.updateByPrimaryKey(user);
相当于:update user set username='mrHan',password='123456',email='786**[email protected]'where id=10001;
int updateByPrimaryKeySelective(Accountrecord); 
//下面是一个完整的案例
Useruser=newUser();
user.setId(10001);
user.setPassword("123456");
userDAO.updateByPrimaryKeySelective(user);
相当于:update user set password='123456'where id=10001;

补充 
Mybatis自动生成的查询selectByExample(TExample example) 中like需要自己写通配符

TExample example = new TExample();  
TExample.Criteria criteria = example.createCriteria();
if(StringUtils.isNotBlank(userName)){
userName = "%" + userName + "%";
}
if(StringUtils.isNotBlank(userName)){
criteria.andBuyerNameLike(userName);
}
dao.countByExample(example)

标签:Mapper,int,Param,主键,record,user,Mybatis,自带,example
From: https://blog.51cto.com/u_14879850/5867792

相关文章

  • Global Mapperv17 裁剪dem并导出等高线
    1、加载dem数据数据投影2、加载shp范围3、选中范围数据4、裁剪5、生成等高线6、导出等高线矢量......
  • SpringBoot整合Junit,MyBatis, druid
    整合JUnit在要测试的类前加上@Respository     在里面写要测试的类名  整合MyBatis:1.创建的时候勾选上mybatisframework,sql.spring就自动创建了depa......
  • 微服务框架——MybatisPlus
    MybatisPlus一、快速入门1.mybatisPlus特性无侵入:只增强,不改变。损耗小:启动的时候直接注入基本CRUD强大的CRUD操作:提供通用Mapper,通用service,条件构造器等Lambda:支......
  • Oracle 自带建表例子 scott.sql 文件
    RemCopyright(c)1990byOracleCorporationRemNAMEREMUTLSAMPL.SQLRemFUNCTIONRemNOTESRemMODIFIEDRemgdudey06/28/95-Modifiedfordesktopseed......
  • mybatis plus的resulttype 为 map
     设置resulttyp是map 当查询出的数据是空时 mybatis会自动将空字段过滤掉 也就是空字段查出来了也不会映射键值对 处理方法 mybatis-plus设置  call-......
  • MyBatis - 基础学习4 - xml的核心配文件(优化)
    一.别名类型别名可为Java类型设置一个缩写名字。它仅用于XML配置,意在降低冗余的全限定类名书写1.利用typealiases来实现<typeAliases><typeAliasty......
  • 快速远程不同局域网的电脑【windows自带的远程桌面、无需公网IP】
    Windows自带的远程桌面,一直都很好用,在同个局域网下,通过电脑IP地址,以及账号密码,就可以轻松实现远程桌面控制,而无需第三方远程软件。但疫情当下,或者出差在外,难免会遇到需要......
  • mybatis Sql动态问题集合
    where和if搭配: where其实就是表示sql语句中where的用法;where包围后,就不用在sql语句中加where了; if语句的语法结构:<iftest=""></if>其中的test就是判断......
  • mybatis XML 使用 case when 代替多个if
    不建议使用<selectid="findActiveBlogLike"resultType="Blog">SELECT*FROMBLOGWHEREstate=‘ACTIVE’<iftest="title!=null">AND......
  • Win10 笔记本禁用/启用自带键盘
    文章来源:华硕笔记本怎么禁用自带键盘_虽千万里,吾往矣!的博客-CSDN博客_华硕笔记本怎么禁用自带键盘在小娜搜索栏中输入cmd,找到命令提示符(cmd),并且右键以管理员身份运行。......