Spring boot集成mongodb,mysql面试题索引

在这里插入图片描述

3.3.3、根据id查询

在这里插入图片描述

//根据id查询

@Test

public void findId(){

User user = mongoTemplate.findById(“60b4b3ca861699233d33f3e2”, User.class);

System.out.println(user);

}

在这里插入图片描述

3.3.4、条件查询

在这里插入图片描述

//条件查询

@Test

public void findUserList(){

Query query = new Query(Criteria.where(“name”).is(“test”).and(“age”).is(20));

List users = mongoTemplate.find(query, User.class);

System.out.println(users);

}

在这里插入图片描述

3.3.5、模糊查询

Pattern.compile函数用法

//模糊条件查询

@Test

public void findLikeUserList(){

// name like test

String name = “est”;

String regex = String.format(“%s%s%s”, “^.", name, ".$”);

/*1、在使用Pattern.compile函数时,可以加入控制正则表达式的匹配行为的参数:

Pattern Pattern.compile(String regex, int flag)

2、regex设置匹配规则

3、Pattern.CASE_INSENSITIVE,这个标志能让表达式忽略大小写进行匹配。*/

Pattern pattern = Pattern.compile(regex,Pattern.CASE_INSENSITIVE);

//创建一个query对象(用来封装所有条件对象),再创建一个criteria对象(用来构建条件)

Query query = new Query(//构建查询条件

Criteria.where(“name”).regex(pattern));

List users = mongoTemplate.find(query, User.class);

System.out.println(users);

}

查询结果:查询出来了名字里包好est的用户

在这里插入图片描述

3.3.6、分页查询带条件

//分页查询(带条件)

@Test

public void pageLikeUserList(){

int pageNo = 1;//设置当前页

int pageSize = 3;//设置每页显示的记录数

//条件构建

String name = “est”;

String regex = String.format(“%s%s%s”, “^.", name, ".$”);

/*1、在使用Pattern.compile函数时,可以加入控制正则表达式的匹配行为的参数:

Pattern Pattern.compile(String regex, int flag)

2、regex设置匹配规则

3、Pattern.CASE_INSENSITIVE,这个标志能让表达式忽略大小写进行匹配。*/

Pattern pattern = Pattern.compile(regex,Pattern.CASE_INSENSITIVE);

//创建一个query对象(用来封装所有条件对象),再创建一个criteria对象(用来构建条件)

Query query = new Query(//构建查询条件

Criteria.where(“name”).regex(pattern));

//分页构建

//查询数来集合(表)中的总记录数

long count = mongoTemplate.count(query, User.class);

List users = mongoTemplate.find(

query.skip((pageNo - 1) * pageSize).limit(pageSize), User.class);

System.out.println(count);

System.out.println(users);

}

在这里插入图片描述

3.3.7、修改操作

在这里插入图片描述

//修改操作

@Test

public void updateUser(){

//根据id查询

User user = mongoTemplate.findById(“60b4f89db925b61fbf529591”, User.class);

//修改值

user.setName(“test_02”);

user.setAge(2);

user.setEmail(“test_02@qq.com”);

//调用方法实现修改

Query query = new Query(Criteria.where(“_id”).is(user.getId()));

Update update = new Update();

update.set(“name”,user.getName());

update.set(“age”,user.getAge());

update.set(“email”,user.getEmail());

//调用mongoTemplate的修改方法实现修改

UpdateResult upsert = mongoTemplate.upsert(query, update, User.class);

long modifiedCount = upsert.getModifiedCount();//获取到修改受影响的行数

System.out.println(“受影响的条数:”+modifiedCount);

}

在这里插入图片描述

3.3.8、删除操作

在这里插入图片描述

//删除条件

@Test

public void deleteUser(){

Query query = new Query(Criteria.where(“_id”).is(“60b4b3ca861699233d33f3e2”));

DeleteResult remove = mongoTemplate.remove(query, User.class);

long deletedCount = remove.getDeletedCount();

System.out.println(“删除的条数:”+deletedCount);

}//删除条件

@Test

public void deleteUser(){

Query query = new Query(Criteria.where(“_id”).is(“60b4b3ca861699233d33f3e2”));

DeleteResult remove = mongoTemplate.remove(query, User.class);

long deletedCount = remove.getDeletedCount();

System.out.println(“删除的条数:”+deletedCount);

}

控制台输出:

在这里插入图片描述

查看mongoDB,已经删除了该条数据

在这里插入图片描述

4、 基于MongoRepository开发CRUD

=========================================================================================

Spring Data提供了对mongodb数据访问的支持,我们只需要继承MongoRepository类,按照Spring Data规范就可以了。

4.1、SpringData 方法定义规范


在这里插入图片描述在这里插入图片描述

1、不是随便声明的,而需要符合一定的规范

2、 查询方法以find | read | get开头

3、 涉及条件查询时,条件的属性用条件关键字连接

4、 要注意的是:条件属性首字母需要大写

5、 支持属性的级联查询,但若当前类有符合条件的属性则优先使用,而不使用级联属性,若需要使用级联属性,则属性之间使用_强制进行连接

4.2、添加Repository接口


在这里插入图片描述

import com.demomongodb.entity.User;

import org.springframework.data.mongodb.repository.MongoRepository;

import org.springframework.stereotype.Repository;

/**

  • @Description :

  • @Author :lenovo

  • @Date :2021/6/1 10:54

*/

@Repository

public interface UserRepository extends MongoRepository<User,String> {

}

4.3 添加测试类,测试CRUD


4.3.1、添加操作

在这里插入图片描述

@Autowired

private UserRepository userRepository;

//添加操作

@Test

public void save(){

User user = new User();

user.setName(“ertong”);

user.setAge(20);

user.setEmail(“ertong@qq.com”);

User user1 = userRepository.save(user);

System.out.println(user1);

}

在这里插入图片描述

4.3.2、查询所有

//查询所有

@Test

public void findAll(){

List lists = userRepository.findAll();

for(User user:lists){

System.out.println(user);

}

}

在这里插入图片描述

4.3.2、根据id查询

//根据id查询

@Test

public void findById(){

User user = userRepository.findById(“60b4b491861699233d33f3e3”).get();

System.out.println(user);

}

在这里插入图片描述

4.3.3、条件查询

使用 Example example = Example.of(user);封装查询条件

//条件查询

@Test

public void findUserList(){

User user = new User();

user.setName(“ertong”);

user.setAge(20);

Example example = Example.of(user);

List all = userRepository.findAll(example);

System.out.println(all);

}

在这里插入图片描述

4.3.4、模糊条件查询

小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
img

最后

经过日积月累, 以下是小编归纳整理的深入了解Java虚拟机文档,希望可以帮助大家过关斩将顺利通过面试。
由于整个文档比较全面,内容比较多,篇幅不允许,下面以截图方式展示 。







由于篇幅限制,文档的详解资料太全面,细节内容太多,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!

、实战项目、讲解视频**

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
[外链图片转存中…(img-FnGktgNM-1710739355762)]

最后

经过日积月累, 以下是小编归纳整理的深入了解Java虚拟机文档,希望可以帮助大家过关斩将顺利通过面试。
由于整个文档比较全面,内容比较多,篇幅不允许,下面以截图方式展示 。

[外链图片转存中…(img-3tC6ocFR-1710739355763)]
[外链图片转存中…(img-iiAcOrb1-1710739355764)]
[外链图片转存中…(img-CJwspxFu-1710739355765)]
[外链图片转存中…(img-4KH5mWRz-1710739355765)]
[外链图片转存中…(img-fs859qiL-1710739355766)]
[外链图片转存中…(img-btKTwz63-1710739355766)]
[外链图片转存中…(img-2Ysaz5qy-1710739355767)]

由于篇幅限制,文档的详解资料太全面,细节内容太多,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

  • 18
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值