当前位置: 首页 > news >正文

上海云盾为网站做防护推广网站软文

上海云盾为网站做防护,推广网站软文,十大软件管理系统,机械设计软件solidworks目录 一、基本使用 1.1 插入数据 1.2 删除操作 1.3 更新操作 二、条件构造器Wrapper 2.1 常用AbstractWrapper方法 2.1.1 示例一 2.2.2 示例二 2.2.3 示例三 2.2 常用QueryWrapper方法 2.2.1 示例一 2.2.2 示例二 2.2.3 示例三(常用) 2.3 常…

目录

一、基本使用

1.1 插入数据

1.2 删除操作

1.3 更新操作

二、条件构造器Wrapper

2.1 常用AbstractWrapper方法

2.1.1 示例一

2.2.2 示例二

2.2.3 示例三

 2.2 常用QueryWrapper方法

2.2.1 示例一

2.2.2 示例二 

2.2.3 示例三(常用)

2.3 常用UpdateWrapper方法

2.3.1 示例一

三、 Lambda条件构造器

3.1 示例一

 四、实现自定义SQL

4.1 准备工作

 4.2 Mybatis方法


一、基本使用

下列涉及的User表如下所示:

1.1 插入数据

我们可以使用insert方法来实现数据的插入。

示例:

    @Testpublic void testInsert(){User user = new User();user.setUserName("fff33");user.setPassword("77888");int r = userMapper.insert(user);System.out.println(r);}

1.2 删除操作

我们可以使用deleteXXX方法来实现数据的删除。

示例:

    @Testpublic void testDelete(){List<Integer> ids = new ArrayList<>();ids.add(5);ids.add(6);ids.add(7);int i = userMapper.deleteBatchIds(ids);System.out.println(i);}@Testpublic void testDeleteById(){int i = userMapper.deleteById(8);System.out.println(i);}@Testpublic void testDeleteByMap(){Map<String, Object> map = new HashMap<>();map.put("name","提姆");map.put("age",22);int i = userMapper.deleteByMap(map);System.out.println(i);}

这里的deleteByMap实际执行的操作如下:

1.3 更新操作

我们可以使用updateXXX方法来实现数据的删除。

示例:

    @Testpublic void testUpdate(){//把id为2的用户的年龄改为14User user = new User();user.setId(2L);user.setAge(14);int i = userMapper.updateById(user);System.out.println(i);}

二、条件构造器Wrapper

概述 :我们在实际操作数据库的时候会涉及到很多的条件。所以MP为我们提供了一个功能强大的条件构造器 Wrapper 。使用它可以让我们非常方便的构造条件。 其继承体系如下:

在其子类 AbstractWrapper 中提供了很多用于构造Where条件的方法。 

AbstractWrapper 的子类 QueryWrapper 则额外提供了用于针对Select语法的 select 方法。可以用来设置查询哪些列。

AbstractWrapper 的子类 updateWrapper 则额外提供了用于针对Set语法的set方法。可以用来设置对哪些列进行更新。

2.1 常用AbstractWrapper方法

eq:equals,等于 =

gt:greater than ,大于 >

ge:greater than or equals,大于等于≥

lt:less than,小于<

le:less than or equals,小于等于≤

between:相当于SQL中的BETWEEN

like:模 糊匹配。like("name","黄"),相当于SQL的name like '%黄%'

likeRight:模糊匹配右半边。 likeRight("name","黄"),相当于SQL的name like '黄%'

likeLeft:模糊匹配左半边。 likeLeft("name","黄"),相当于SQL的name like '%黄'

and:SQL连接符AND

or:SQL连接符OR

in: in(“age",{1,2,3})相当于 age in(1,2,3)

groupBy: groupBy("id","name")相当于 group by id,name

orderByAsc :orderByAsc("id","name")相当于 order by id ASC,name ASC

orderByDesc :orderByDesc ("id","name")相当于 order by id DESC,name DESC

2.1.1 示例一

SQL语句如下:

SELECT id,user_name,PASSWORD,NAME,age,address 
FROM USER 
WHERE age > 18 AND address = '狐山'

如果用Wrapper写法如下: 

 @Testpublic void testWrapper01(){QueryWrapper<User> wrapper = new QueryWrapper<>();wrapper.gt("age",18);wrapper.eq("address","狐山");List<User> users = userMapper.selectList(wrapper);System.out.println(users);}

我们可以通过调试来验证这一观点,调用wrapper的getCustomSqlSegment方法: 

2.2.2 示例二

SQL语句如下:

SELECT id,user_name,PASSWORD,NAME,age,address 
FROM USER 
WHERE id IN(1,2,3) AND age BETWEEN 12 AND 29 AND address LIKE '%山%'

如果用Wrapper写法如下:

    @Testpublic void testWrapper02(){QueryWrapper<User> wrapper = new QueryWrapper<>();wrapper.in("id",1,2,3);wrapper.between("age",12,29);wrapper.like("address","山");List<User> users = userMapper.selectList(wrapper);System.out.println(users);}

2.2.3 示例三

SQL语句如下:

SELECT id,user_name,PASSWORD,NAME,age,address 
FROM USER 
WHERE id IN(1,2,3) AND age > 10 ORDER BY age DESC

如果用Wrapper写法如下:

@Testpublic void testWrapper03(){QueryWrapper<User> queryWrapper = new QueryWrapper<>();queryWrapper.in("id",1,2,3);queryWrapper.gt("age",10);queryWrapper.orderByDesc("age");List<User> users = userMapper.selectList(queryWrapper);System.out.println(users);}

 2.2 常用QueryWrapper方法

QueryWrapper的 select 方法可以设置要查询的列。

2.2.1 示例一

select(String... sqlSelect) 方法的测试为要查询的列名

SQL语句如下:

SELECT id,user_name
FROM USER 

MP写法如下:

@Testpublic void testSelect01(){QueryWrapper<User> queryWrapper = new QueryWrapper<>();queryWrapper.select("id","user_name");List<User> users = userMapper.selectList(queryWrapper);System.out.println(users);}

2.2.2 示例二 

select(Class entityClass, Predicate predicate)

方法的第一个参数为实体类的字节码对象,第二个参数为Predicate类型,即函数式接口,可以使用lambda的写法,过滤要查询的字段 (主键除外) 。

SELECT id,user_name
FROM USER 

MP写法如下:

    @Testpublic void testSelect02(){QueryWrapper<User> queryWrapper = new QueryWrapper<>();queryWrapper.select(User.class, new Predicate<TableFieldInfo>() {@Overridepublic boolean test(TableFieldInfo tableFieldInfo) {return "user_name".equals(tableFieldInfo.getColumn());}});List<User> users = userMapper.selectList(queryWrapper);System.out.println(users);}

分析: 

第一次循环(id是默认有的,所以不参与):

第二次循环:

这个方法内部其实就是遍历数据库中相对应的User表,tableFieldInfo的column属性会通过循环的方式拿到每个表的属性,然后进行匹配,如果匹配结果为true,就返回这个属性所对应的结果。  

2.2.3 示例三(常用)

select(Predicate predicate)

方法第一个参数为Predicate类型,可以使用lambda的写法,过滤要查询的字段 (主键除外) 。

 SQL语句如下:

SELECT id,user_name,PASSWORD,NAME,age 
FROM USER

 就是不想查询address这列,其他列都查询了。

MP写法如下:

 @Testpublic void testSelect03(){QueryWrapper<User> queryWrapper = new QueryWrapper<>(new User());queryWrapper.select(new Predicate<TableFieldInfo>() {@Overridepublic boolean test(TableFieldInfo tableFieldInfo) {return !"address".equals(tableFieldInfo.getColumn());}});List<User> users = userMapper.selectList(queryWrapper);System.out.println(users);}

分析: 

这是由于这个select方法需要传递entity对象,没有传递无法调用。

2.3 常用UpdateWrapper方法

我们前面在使用update方法时需要创建一个实体类对象传入,用来指定要更新的列及对应的值。但是如 果需要更新的列比较少时,创建这么一个对象显的有点麻烦和复杂。

我们可以使用UpdateWrapper的set方法来设置要更新的列及其值。同时这种方式也可以使用Wrapper 去指定更复杂的更新条件。

2.3.1 示例一

SQL语句如下:

UPDATE USER
SET age = 99
where id > 1

我们想把id大于1的用户的年龄修改为99,则可以使用如下写法:

@Testpublic void testUpdateWrapper(){UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();updateWrapper.gt("id",1);updateWrapper.set("age",99);userMapper.update(null,updateWrapper);}

三、 Lambda条件构造器

我们前面在使用条件构造器时列名都是用字符串的形式去指定。这种方式无法在编译期确定列名的合法 性。

所以MP提供了一个Lambda条件构造器可以让我们直接以实体类的方法引用的形式来指定列名。这样就 可以弥补上述缺陷。 

3.1 示例一

要执行的查询对应的SQL如下:

SELECT id,user_name,PASSWORD,NAME,age,address 
FROM USER 
WHERE age > 18 AND address = '狐山'

 如果使用之前的条件构造器写法如下:

@Testpublic void testLambdaWrapper(){QueryWrapper<User> queryWrapper = new QueryWrapper();queryWrapper.gt("age",18);queryWrapper.eq("address","狐山");List<User> users = userMapper.selectList(queryWrapper);}

如果使用Lambda条件构造器写法如下:

@Testpublic void testLambdaWrapper2(){LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();queryWrapper.gt(User::getAge,18);queryWrapper.eq(User::getAddress,"狐山");List<User> users = userMapper.selectList(queryWrapper);}

 四、实现自定义SQL

4.1 准备工作

 SQL文件:

CREATE TABLE `orders` (`id` bigint(20) NOT NULL AUTO_INCREMENT,`price` int(11) DEFAULT NULL COMMENT '价格',`remark` varchar(100) DEFAULT NULL COMMENT '备注',`user_id` int(11) DEFAULT NULL COMMENT '用户id',`update_time` timestamp NULL DEFAULT NULL COMMENT '更新时间',`create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间',`version` int(11) DEFAULT '1' COMMENT '版本',`del_flag` int(1) DEFAULT '0' COMMENT '逻辑删除标识,0-未删除,1-已删除',`create_by` varchar(100) DEFAULT NULL COMMENT '创建人',`update_by` varchar(100) DEFAULT NULL COMMENT '更新人',PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;INSERT INTO `orders`(`id`,`price`,`remark`,`user_id`,`update_time`,`create_time`,`version`,`del_flag`,`create_by`,`update_by`) 
VALUES (1,2000,'无',2,'2021-08-24 21:02:43','2021-08-24 21:02:46',1,0,NULL,NULL),(2,3000,'无',3,'2021-08-24 21:03:32','2021-08-24 21:03:35',1,0,NULL,NULL),(3,4000,'无',2,'2021-08-24 21:03:39','2021-08-24 21:03:41',1,0,NULL,NULL);

创建实体类:

package com.fox.mp.domain;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;import java.time.LocalDateTime;@Data
@NoArgsConstructor
@AllArgsConstructor
public class Orders  {private Long id;/*** 价格*/private Integer price;/*** 备注*/private String remark;/*** 用户id*/private Integer userId;/*** 更新时间*/private LocalDateTime updateTime;/*** 创建时间*/private LocalDateTime createTime;/*** 版本*/private Integer version;/*** 逻辑删除标识,0-未删除,1-已删除*/private Integer delFlag;}

 4.2 Mybatis方法

定义方法

public interface UserMapper extends BaseMapper<User> {User findMyUser(Long id);
}

在Mapper接口中定义方法,这里没用@Mapper注解的原因是因为在启动类上设置了扫描组件: 

创建XML文件

 先在yml文件中配置xml文件的存放目录:

mybatis-plus:mapper-locations: classpath*:/mapper/**/*.xml

创建对应的xml映射文件,这里我们是使用MybatisX这个插件快速生成对应的xml文件:

 在xml文件中书写对应的SQL语句:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.fox.mp.mapper.UserMapper"><select id="findMyUser" resultType="com.fox.mp.domain.User">select * from tb_user where id = #{id}</select>
</mapper>

 

 

 


文章转载自:
http://polycondensation.bqrd.cn
http://dong.bqrd.cn
http://bva.bqrd.cn
http://devouringly.bqrd.cn
http://collision.bqrd.cn
http://radiodetector.bqrd.cn
http://kasbah.bqrd.cn
http://gotter.bqrd.cn
http://shopkeeping.bqrd.cn
http://chiliast.bqrd.cn
http://regradation.bqrd.cn
http://fluviograph.bqrd.cn
http://torrone.bqrd.cn
http://palladium.bqrd.cn
http://unselective.bqrd.cn
http://hawsehole.bqrd.cn
http://superinfection.bqrd.cn
http://rapidly.bqrd.cn
http://greening.bqrd.cn
http://newsperson.bqrd.cn
http://tyler.bqrd.cn
http://contadina.bqrd.cn
http://rich.bqrd.cn
http://antimonarchist.bqrd.cn
http://phycoerythrin.bqrd.cn
http://turkestan.bqrd.cn
http://shopworker.bqrd.cn
http://phasic.bqrd.cn
http://creosote.bqrd.cn
http://jumar.bqrd.cn
http://expostulatory.bqrd.cn
http://carburetor.bqrd.cn
http://scare.bqrd.cn
http://phytol.bqrd.cn
http://coastwaiter.bqrd.cn
http://federalize.bqrd.cn
http://autoexec.bqrd.cn
http://kilopound.bqrd.cn
http://arlington.bqrd.cn
http://dioxane.bqrd.cn
http://carrottop.bqrd.cn
http://counterviolence.bqrd.cn
http://heirloom.bqrd.cn
http://constrained.bqrd.cn
http://gurnet.bqrd.cn
http://compatriot.bqrd.cn
http://streetcar.bqrd.cn
http://gocart.bqrd.cn
http://same.bqrd.cn
http://weazand.bqrd.cn
http://odorize.bqrd.cn
http://fluidextract.bqrd.cn
http://ditchdigger.bqrd.cn
http://expiate.bqrd.cn
http://dicker.bqrd.cn
http://habilimentation.bqrd.cn
http://advertent.bqrd.cn
http://shutt.bqrd.cn
http://comatose.bqrd.cn
http://intermittent.bqrd.cn
http://mechanise.bqrd.cn
http://arguably.bqrd.cn
http://slantways.bqrd.cn
http://owes.bqrd.cn
http://biwa.bqrd.cn
http://assemble.bqrd.cn
http://nucleole.bqrd.cn
http://acknowledgment.bqrd.cn
http://sera.bqrd.cn
http://bride.bqrd.cn
http://psychopharmacologist.bqrd.cn
http://thickness.bqrd.cn
http://tonight.bqrd.cn
http://bonnily.bqrd.cn
http://striate.bqrd.cn
http://goby.bqrd.cn
http://talocalcaneal.bqrd.cn
http://kaifeng.bqrd.cn
http://methodical.bqrd.cn
http://summerly.bqrd.cn
http://siglos.bqrd.cn
http://desoxycorticosterone.bqrd.cn
http://sacculated.bqrd.cn
http://adventurer.bqrd.cn
http://stroboradiograph.bqrd.cn
http://gustative.bqrd.cn
http://penwiper.bqrd.cn
http://armadillo.bqrd.cn
http://partan.bqrd.cn
http://withstand.bqrd.cn
http://biotin.bqrd.cn
http://molecast.bqrd.cn
http://moistify.bqrd.cn
http://styrene.bqrd.cn
http://replace.bqrd.cn
http://welladay.bqrd.cn
http://pileous.bqrd.cn
http://cheliped.bqrd.cn
http://onager.bqrd.cn
http://sectarianize.bqrd.cn
http://www.15wanjia.com/news/72696.html

相关文章:

  • 百度免费网站建设腾讯第三季度营收448亿元
  • 做公司网站阿里合肥网站维护公司
  • 网站模板 整站源码下载淘宝摄影培训推荐
  • 四川省住房城乡建设厅网站首页百度官网电话
  • 整站关键词排名优化打开app下载
  • 南京建网站磁力屋 最好用
  • wordpress ajax 提交表单seo挂机赚钱
  • 党建设计素材网站产品推广方案范例
  • 西安网站策划设计陕西优化疫情防控措施
  • 什么网站可以做棋谱seo排名点击工具
  • 电商网站开发毕业设计武汉服装seo整站优化方案
  • 鞍山58同城找工作 招聘石家庄seo代理商
  • 自己做企业网站关键词排名的工具
  • b2c的盈利模式有哪些整站优化排名
  • 怎么自己做网站模板网站推广策划
  • 亚洲男女做暖网站百度旗下的所有产品
  • 专业做家电的网站如何查询百度搜索关键词排名
  • 小视频的网站怎么做的关键词工具网站
  • 淘宝做详情页代码网站搜索引擎营销的基本方法
  • 网站设计怎么自学百度竞价托管费用
  • 濮阳市城乡建设管理局网站智能建站系统
  • 网站开发软件手机版如何免费找精准客户
  • wordpress静态404错误郑州靠谱seo电话
  • 爬取数据做网站企业网站制作教程
  • 大连建设局网站免费的网络推广平台
  • 想百度搜到网站新域名怎么做免费crm客户管理系统
  • 兰州做it网站运营的怎么样淘宝代运营公司十大排名
  • 网站制作 网站开发网络推广加盟
  • 成都谁做捕鱼网站微商营销技巧
  • 微信小程序怎么做?搜索引擎seo如何优化