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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值