mybatis能够自动生成sql语句,也能够添加自定义sql语句

使用mybatis generator生成XX.java,XXExample.java,XXmapper.java,XXmapper.xml四个数据库表映射文件,

一、Example实例解析

mybatis的逆向工程中会生成实例及实例对应的XXExample.java,XXExample.java包含了对象的常用查询方法

XXExample有三个内部类,GeneratedCriteria,Criteria,Criterion

创建内部类Criteria用于查询,代码示例如下看表达:

XXExample example = new XXExample();//新建XX对象的example对象进行查询,XXExample继承XX

XXExample.Criteria c = example.Criteria();//new一个当前example的内部类Criteria

c.andXXIsNull();//设置查询条件,某值为空

c.andXXIsNotNull();//设置查询条件,某值不空//使用mapper进行查询

List data = new XXMapper.selectByExample(example);

方法说明

example.setOrderByClause(“字段名 ASC”);

添加升序排列条件,DESC为降序

example.setDistinct(false)

去除重复,boolean型,true为选择不重复的记录。

criteria.andXxxIsNull

添加字段xxx为null的条件

criteria.andXxxIsNotNull

添加字段xxx不为null的条件

criteria.andXxxEqualTo(value)

添加xxx字段等于value条件

criteria.andXxxNotEqualTo(value)

添加xxx字段不等于value条件

criteria.andXxxGreaterThan(value)

添加xxx字段大于value条件

criteria.andXxxGreaterThanOrEqualTo(value)

添加xxx字段大于等于value条件

criteria.andXxxLessThan(value)

添加xxx字段小于value条件

criteria.andXxxLessThanOrEqualTo(value)

添加xxx字段小于等于value条件

criteria.andXxxIn(List)

添加xxx字段值在List条件

criteria.andXxxNotIn(List)

添加xxx字段值不在List条件

criteria.andXxxLike(“%”+value+”%”)

添加xxx字段值为value的模糊查询条件

criteria.andXxxNotLike(“%”+value+”%”)

添加xxx字段值不为value的模糊查询条件

criteria.andXxxBetween(value1,value2)

添加xxx字段值在value1和value2之间条件

criteria.andXxxNotBetween(value1,value2)

添加xxx字段值不在value1和value2之间条件

二、mapper接口中的方法解析

mapper.java的函数及方法,按命名的字面意思理解用途。

countByExample,带example的一般都是使用example查询条目数。selectByPrimaryKey使用id查询结果集

mapper中的方法和xml中的sql语句是对应的,

如果在mapper中传入example对象,xml中会解析example的值,取值拼写sql语句进行查询

传入String类型的key,id等,xml直接取值拼写sql进行查询

方法功能说明

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的字段

三、XML文件解析

举例一个xml文件中的一条语句

select count(*) from t_app_second_config_item

语句的id与mapper.java中的方法名对应,

parameterType是传入参数的类型,resultType是返回结果的类型,传参和返回有很多种情况,另开文章讲

这样对照起来的话,我们可以自主在mapper.java和mapper.xml中增加或删除相应的查询语句,以供调用

比如增加一条新增版本批量复制语句“copyBatchByVersion”

mapper.java中增加方法

intcopyBatchByVersion(String old_version,String new_version) thorws SQLException;/*根据旧版本号old_version查找记录

复制记录

同时将其中的old_version替换为new_version

返回值为复制成功的条数*/

mapper.xml中增加语句

insert into t_xx

(XX_id,xx_value,xx_version)

(select

XX_id,xx_value,#{1})

from t_xx where xx_version = #{0})

其中#{0},#{1}代表输入的第1,2个参数

四、应用举例

1.查询

① selectByPrimaryKey()

User user = XxxMapper.selectByPrimaryKey(100); //相当于select * from user where id = 100

② selectByExample() 和 selectByExampleWithBLOGs()

UserExample example = newUserExample();

Criteria criteria=example.createCriteria();

criteria.andUsernameEqualTo("wyw");

criteria.andUsernameIsNull();

example.setOrderByClause("username asc,email desc");

List>list =XxxMapper.selectByExample(example);//相当于:select * from user where username = 'wyw' and username is null order by username asc,email desc

注:在iBator逆向工程生成的文件XxxExample.Java中包含一个static的内部类Criteria,Criteria中的方法是定义SQL 语句where后的查询条件。

2.插入数据

①insert()

User user = newUser();

user.setId("dsfgsdfgdsfgds");

user.setUsername("admin");

user.setPassword("admin")

user.setEmail("wyw@163.com");

XxxMapper.insert(user);//相当于:insert into user(ID,username,password,email) values ('dsfgsdfgdsfgds','admin','admin','wyw@126.com');

3.更新数据

①updateByPrimaryKey()

User user =newUser();

user.setId("dsfgsdfgdsfgds");

user.setUsername("wyw");

user.setPassword("wyw");

user.setEmail("wyw@163.com");

XxxMapper.updateByPrimaryKey(user);//相当于:update user set username='wyw', password='wyw', email='wyw@163.com' where id='dsfgsdfgdsfgds'

②updateByPrimaryKeySelective()

User user = newUser();

user.setId("dsfgsdfgdsfgds");

user.setPassword("wyw");

XxxMapper.updateByPrimaryKey(user);//相当于:update user set password='wyw' where id='dsfgsdfgdsfgds'

③ updateByExample() 和 updateByExampleSelective()

UserExample example = newUserExample();

Criteria criteria=example.createCriteria();

criteria.andUsernameEqualTo("admin");

User user= newUser();

user.setPassword("wyw");

XxxMapper.updateByPrimaryKeySelective(user,example);//相当于:update user set password='wyw' where username='admin'

updateByExample()更新所有的字段,包括字段为null的也更新,建议使用 updateByExampleSelective()更新想更新的字段

4.删除数据

①deleteByPrimaryKey()

XxxMapper.deleteByPrimaryKey(1); //相当于:delete from user where id=1

②deleteByExample()

UserExample example = newUserExample();

Criteria criteria=example.createCriteria();

criteria.andUsernameEqualTo("admin");

XxxMapper.deleteByExample(example);//相当于:delete from user where username='admin'

5.查询数据数量

①countByExample()

UserExample example = newUserExample();

Criteria criteria=example.createCriteria();

criteria.andUsernameEqualTo("wyw");int count =XxxMapper.countByExample(example);//相当于:select count(*) from user where username='wyw'

countByExample

java中example函数作用_mybatis mapper学习4-MyBatis的Mapper接口以及Example的实例函数及详解...相关推荐

  1. mybatis接口中的方法重载_MyBatis的Mapper接口以及Example的实例函数及详解

    一.mapper接口中的方法解析 mapper接口中的函数及方法 方法 功能说明 int countByExample(UserExample example) thorws SQLException ...

  2. 12月29日--Java中有关类与对象的学习记录

    1.12月29日第一课记录 Java中有关类与对象的学习记录 一.基本概念部分 1.类:具有相同.相似的属性.特征.行为方式以及功能的一类事物的总称 (举例:一类用户,如淘宝用户) 类是对象的模板 是 ...

  3. Java中static的作用

    Java中static的作用 请先看下面这段程序: public class Hello{ public static void main(String[] args){ //(1) System.o ...

  4. Java中如何创建自定义的注解学习笔记(MD版)

    概要 Java中如何创建自定义的注解学习笔记(MD版). 博客 博客地址:IT老兵驿站. 前言 记得这篇笔记还是在泉州的龙玲酒店记录的,是一个周六的晚上,坐飞机从上海到泉州,从笔记中能勾起一些旅游的回 ...

  5. Java中重载的作用?

    Java中重载的作用? 重载定义:一个类中如果有多个同名方法但带有不同的参数列表,称为方法重载(Overload). 重载方法的参数列表不同是指参数的数据类型或个数或次序不同. 重载方法之间必须以参数 ...

  6. java中*和**的作用 以及 /和/*和/**的区别

    一.java中*和**的作用 "*"就表示了所有的文件,但是"*"并不包括子目录下的文件: "**"匹配包含任意级子目录中所有的文件: 二. ...

  7. 记录一下Java中final的作用

    记录一下Java中final的作用   final关键字可以修饰类.成员变量.方法.以及方法中的局部变量. 1.final修饰类   可以使用final将类声明为final类.final类不能被继承, ...

  8. java中的静态变量的作用域_详解JAVA中static的作用

    1.深度总结 引用一位网友的话,说的非常好,如果别人问你static的作用:如果你说静态修饰 类的属性 和 类的方法 别人认为你是合格的:如果是说 可以构成 静态代码块,那别人认为你还可以: 如果你说 ...

  9. java中包装类的作用

    Java中包装类的作用 一.包装类是什么 包装类就是解决java的八种基本数据类型不面向对象的缺陷,而设计出来的一个个与每一个与基本类型相对应的类,这八种基本数据类型对应的类统称包装类(Wrapper ...

  10. java计算机毕业设计计算机课程在线培训学习管理系统MyBatis+系统+LW文档+源码+调试部署

    java计算机毕业设计计算机课程在线培训学习管理系统MyBatis+系统+LW文档+源码+调试部署 java计算机毕业设计计算机课程在线培训学习管理系统MyBatis+系统+LW文档+源码+调试部署 ...

最新文章

  1. max(min)-device-width和max(min)-width的区别
  2. 根据文件路径生成相应文件
  3. ASCII和字母的转换
  4. 2021年5月信息系统项目管理师案例分析真题+视频讲解(1)
  5. voip 音频采集时间_数字音频基础------从PCM说起
  6. windows 常用快捷键
  7. Linux系统7z文件解压
  8. 全志A20单独烧录内核
  9. Windows获取本机主机IP信息
  10. SSL、OPENSSL、SSH、OPENSSH
  11. .html(),.text()和.val()的差异总结:
  12. ortoiseGit--小乌龟git项目
  13. R语言编程环境的安装和运行
  14. Mentor.Graphics.AMS.v2011.1 Win32_64 1CD(电路设计)
  15. gitlab代码提交自动触发Jenkins token发版(二)
  16. 用户情感可视化分析——天池竞赛
  17. Python基础知识——字典:for循环遍历字典
  18. Java 扫描识别条形码图片
  19. component: resolve = require(['../pages/home.vue'], resolve),
  20. 2018,ANG发展峰会惊喜来袭

热门文章

  1. LaTeX Font Warning: Font shape `OMS/cmtt/m/n' undefined
  2. Orcale 12c ocp 证书认证过程概述
  3. CdTe量子点修饰纳米/ZnO纳米棒/GaN发光二极管/敏化纳米TiO2的制备
  4. 企业管理的价值与SaaS软件的价值
  5. VMware改中文页面
  6. OSChina 周五乱弹 —— QQ 和妹子聊天,翻车了
  7. NVIDIA可编程推理加速器TensorRT学习笔记(三)——加速推理
  8. 最真实19家踩坑gpu服务商血泪史!!让我告诉你gpu踩过的坑,以及发现到的小众平民价格还不错的服务商。
  9. 全球与中国刺云实胶市场深度研究分析报告(2022)
  10. flyme禁止系统更新_Flyme系统更新最新版本