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

徐州建设网站珠海网站建设 超凡科技

徐州建设网站,珠海网站建设 超凡科技,wap网页游戏轮回ol,建设网站需要的编程目录一、Redis介绍二、数据字典模块添加Redis缓存1、service_cmn模块#xff0c;添加redis依赖2、service_cmn模块#xff0c;添加Redis配置类3、在service_cmn模块#xff0c;配置文件添加redis配置4、通过注解添加redis缓存5、查询数据字典列表添加Redis缓存6、bug#x… 目录一、Redis介绍二、数据字典模块添加Redis缓存1、service_cmn模块添加redis依赖2、service_cmn模块添加Redis配置类3、在service_cmn模块配置文件添加redis配置4、通过注解添加redis缓存5、查询数据字典列表添加Redis缓存6、bug缓存清空7、总结(4大步骤)三、MongoDB简介1、NoSQL概述2、什么是MongoDB3、MongoDB特点4、MongoDB和Redis区别四、MongoDB安装docker方式1、拉取镜像2、创建和启动容器3、进入容器4、使用MongoDB客户端进行操作五、MongoDB 概念解析1、数据库2、文档3、集合5、MongoDB适用场景六、MongoDB常用操作一1、INSERT2、QUERY2.1 WHERE2.2 FIELDS2.3 SORT2.4 SUCE2.5 IN2.6 COUNT2.7 OR七、MongoDB常用操作二1、UPDATE2、Remove3、aggregate聚合4、常见的聚合表达式5、索引八、SpringBoot集成MongoDB1、在service_hosp引入依赖2、添加MongoDB配置3.总结九、基于MongoTemplate 开发CRUD1、添加实体2、常用方法3、添加测试类十、基于MongoRepository开发CRUD1、添加Repository类2、编写测试类3、SpringData方法规范一、Redis介绍 Redis是当前比较热门的NOSQL系统之一它是一个开源的使用ANSI c语言编写的key-value存储系统区别于MySQL的二维表格的形式存储。。和Memcache类似但很大程度补偿了Memcache的不足。和Memcache一样Redis数据都是缓存在计算机内存中不同的是Memcache只能将数据缓存到内存中无法自动定期写入硬盘这就表示一断电或重启内存清空数据丢失。所以Memcache的应用场景适用于缓存无需持久化的数据。而Redis不同的是它会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件实现数据的持久化。 Redis的特点 1Redis读取的速度是110000次/s写的速度是81000次/s 2原子 。Redis的所有操作都是原子性的同时Redis还支持对几个操作全并后的原子性执行。 3支持多种数据结构string字符串list列表hash哈希set集合zset(有序集合) 4持久化集群部署 5支持过期时间支持事务消息订阅 Spring Cache 是一个非常优秀的缓存组件。自Spring 3.1起提供了类似于Transactional注解事务的注解Cache支持且提供了Cache抽象方便切换各种底层Cache如redis 使用Spring Cache的好处 1提供基本的Cache抽象方便切换各种底层Cache 2通过注解Cache可以实现类似于事务一样缓存逻辑透明的应用到我们的业务代码上且只需要更少的代码就可以完成 3提供事务回滚时也自动回滚缓存 4支持比较复杂的缓存逻辑 二、数据字典模块添加Redis缓存 1、service_cmn模块添加redis依赖 !-- redis -- dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-redis/artifactId /dependency!-- spring2.X集成redis所需common-pool2-- dependencygroupIdorg.apache.commons/groupIdartifactIdcommons-pool2/artifactIdversion2.6.0/version /dependency2、service_cmn模块添加Redis配置类 import com.fasterxml.jackson.annotation.JsonAutoDetect; import com.fasterxml.jackson.annotation.PropertyAccessor; import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.cache.CacheManager; import org.springframework.cache.annotation.EnableCaching; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.cache.RedisCacheConfiguration; import org.springframework.data.redis.cache.RedisCacheManager; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; import org.springframework.data.redis.serializer.RedisSerializationContext; import org.springframework.data.redis.serializer.RedisSerializer; import org.springframework.data.redis.serializer.StringRedisSerializer;import java.time.Duration;Configuration EnableCaching public class RedisConfig {/*** 设置RedisTemplate规则* param redisConnectionFactory* return*/Beanpublic RedisTemplateObject, Object redisTemplate(RedisConnectionFactory redisConnectionFactory) {RedisTemplateObject, Object redisTemplate new RedisTemplate();redisTemplate.setConnectionFactory(redisConnectionFactory);Jackson2JsonRedisSerializer jackson2JsonRedisSerializer new Jackson2JsonRedisSerializer(Object.class);//解决查询缓存转换异常的问题ObjectMapper om new ObjectMapper();// 指定要序列化的域field,get和set,以及修饰符范围ANY是都有包括private和publicom.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);// 指定序列化输入的类型类必须是非final修饰的final修饰的类比如String,Integer等会跑出异常om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);jackson2JsonRedisSerializer.setObjectMapper(om);//序列号key valueredisTemplate.setKeySerializer(new StringRedisSerializer());redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);redisTemplate.setHashKeySerializer(new StringRedisSerializer());redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);redisTemplate.afterPropertiesSet();return redisTemplate;}/*** 设置CacheManager缓存规则* param factory* return*/Beanpublic CacheManager cacheManager(RedisConnectionFactory factory) {RedisSerializerString redisSerializer new StringRedisSerializer();Jackson2JsonRedisSerializer jackson2JsonRedisSerializer new Jackson2JsonRedisSerializer(Object.class);//解决查询缓存转换异常的问题ObjectMapper om new ObjectMapper();om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);jackson2JsonRedisSerializer.setObjectMapper(om);// 配置序列化解决乱码的问题,过期时间600秒RedisCacheConfiguration config RedisCacheConfiguration.defaultCacheConfig().entryTtl(Duration.ofSeconds(600)).serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(redisSerializer)).serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(jackson2JsonRedisSerializer)).disableCachingNullValues();RedisCacheManager cacheManager RedisCacheManager.builder(factory).cacheDefaults(config).build();return cacheManager;} }3、在service_cmn模块配置文件添加redis配置 spring.redis.hostlocalhost spring.redis.port6379 spring.redis.database 0 spring.redis.timeout1800000spring.redis.lettuce.pool.max-active20 spring.redis.lettuce.pool.max-wait-1 #最大阻塞等待时间(负数表示没限制) spring.redis.lettuce.pool.max-idle5 spring.redis.lettuce.pool.min-idle0 4、通过注解添加redis缓存 Cacheable 用在查询方法上表示数据查询的时候先去缓存中查询缓存中没有再去数据库中查询 CachePut 用在添加方法上表示往数据中添加数据的时候也会向缓存中添加一份 CacheEvict 用在修改|删除方法上表示当修改|删除数据表中数据把缓存中对应的数据删除掉 1缓存Cacheable 根据方法对其返回结果进行缓存下次请求时如果缓存存在则直接读取缓存数据返回如果缓存不存在则执行方法并把返回的结果存入缓存中。一般用在查询方法上。 查看源码属性值如下 2缓存CachePut 使用该注解标志的方法每次都会执行并将结果存入指定的缓存中。其他方法可以直接从响应的缓存中读取缓存数据而不需要再去查询数据库。一般用在新增方法上。 查看源码属性值如下 3缓存CacheEvict 使用该注解标志的方法会清空指定的缓存。一般用在更新或者删除方法上 查看源码属性值如下 5、查询数据字典列表添加Redis缓存 ApiOperation(value 根据数据id查询子数据列表)GetMapping(/childList/{pid})Cacheable(value dict, key selectIndexList#pid)public R getchildListById(PathVariable Long pid){ListDict list dictService.getchildListById(pid);return R.ok().data(items,list);} 6、bug缓存清空 如果我们插入一个一级目录 然后之前在redis的一级目录是没有家用电器如果导入的话家用电器是插入不进去的因为redis里面有数据不会到mysql里面查找 解决方案 在导入里面添加 7、总结(4大步骤) springcache底层redis、memcache 1.导入starter依赖 2.application.propertiesredis连接信息 3.在配置类中提供一个cacheManager在配置类上标记EnableCaching开启缓存支持注解 4.Cacheable(value1111,keyxxxxx) 1111::xxxxx三、MongoDB简介 1、NoSQL概述 NoSQL(NoSQL Not Only SQL)意即反SQL运动指的是非关系型的数据库是一项全新的数据库革命性运动早期就有人提出发展至2009年趋势越发高涨。NoSQL的拥护者们提倡运用非关系型的数据存储相对于目前铺天盖地的关系型数据库运用这一概念无疑是一种全新的思维的注入 为什幺使用NoSQL : 1、对数据库高并发读写。 2、对海量数据的高效率存储和访问。 3、对数据库的高可扩展性和高可用性。 弱点 1、数据库事务一致性需求 2、数据库的写实时性和读实时性需求 3、对复杂的SQL查询特别是多表关联查询的需求 2、什么是MongoDB MongoDB 是由C语言编写的是一个基于分布式文件存储的开源数据库系统。 在高负载的情况下添加更多的节点可以保证服务器性能。 MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB 将数据存储为一个文档数据结构由键值(keyvalue)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档数组及文档数组。 3、MongoDB特点 1、MongoDB 是一个面向文档存储的数据库操作起来比较简单和容易。 2、你可以在MongoDB记录中设置任何属性的索引 (如FirstName“Sameer”,Address“8 Gandhi Road”)来实现更快的排序。 3、你可以通过本地或者网络创建数据镜像这使得MongoDB有更强的扩展性。 4、如果负载的增加需要更多的存储空间和更强的处理能力它可以分布在计算机网络中的其他节点上这就是所谓的分片。 5、Mongo支持丰富的查询表达式。查询指令使用JSON形式的标记可轻易查询文档中内嵌的对象及数组。 6、MongoDb 使用update()命令可以实现替换完成的文档数据或者一些指定的数据字段。 7、Mongodb中的Map/reduce主要是用来对数据进行批量处理和聚合操作。 8、Map和Reduce。Map函数调用emit(key,value)遍历集合中所有的记录将key与value传给Reduce函数进行处理。 9、Map函数和Reduce函数是使用Javascript编写的并可以通过db.runCommand或mapreduce命令来执行MapReduce操作。 10、GridFS是MongoDB中的一个内置功能可以用于存放大量小文件。 11、MongoDB允许在服务端执行脚本可以用Javascript编写某个函数直接在服务端执行也可以把函数的定义存储在服务端下次直接调用即可。 12、MongoDB支持各种编程语言:RUBYPYTHONJAVACPHPC#等多种语言。 13、MongoDB安装简单。 4、MongoDB和Redis区别 MongoDBRedisNoSQLNoSQL不支持连表不支持连表支持索引不支持索引不支持事务支持事务Bson五种常用的类型适用于高并发的增删改查适用于高并发的读 四、MongoDB安装docker方式 1、拉取镜像 docker pull mongo:latest 或者 docker pull mongo:4.4.8 2、创建和启动容器 1对data目录授权 chmod -R 777 /data 2创建和启动容器 docker run -d --restartalways -p 27017:27017 --name mymongo -v /data/db:/data/db -d mongo 或者 docker run -d --restartalways -p 27017:27017 --name mymongo -v /data/db:/data/db -d mongo:4.4.83、进入容器 docker exec -it mymongo /bin/bash4、使用MongoDB客户端进行操作 show dbs#查询所有的数据库 五、MongoDB 概念解析 不管我们学习什么数据库都应该学习其中的基础概念在mongodb中基本的概念是文档、集合、数据库下面我们详细介绍下表将帮助您更容易理解Mongo中的一些概念 1、数据库 一个mongodb中可以建立多个数据库常用操作如下 1Help查看命令提示 db.help(); 2切换/创建数据库 use test 如果数据库不存在则创建数据库否则切换到指定数据库 3 查询所有数据库 show dbs; 4删除当前使用数据库 db.dropDatabase(); 5查看当前使用的数据库 db.getName(); 6显示当前db状态 db.stats(); 7当前db版本 db.version(); 8 查看当前db的链接机器地址 db.getMongo(); 2、文档 文档是一组键值(key-value)对(即BSON)。MongoDB 的文档不需要设置相同的字段并且相同的字段不需要相同的数据类型这与关系型数据库有很大的区别也是 MongoDB 非常突出的特点。 下表列出了 RDBMS 与 MongoDB 对应的术语 需要注意的是 1、文档中的键/值对是有序的。 2、文档中的值不仅可以是在双引号里面的字符串还可以是其他几种数据类型甚至可以是整个嵌入的文档)。 3、MongoDB区分类型和大小写。尤其是java代码 4、MongoDB的文档不能有重复的键。 5、文档的键是字符串。除了少数例外情况键可以使用任意UTF-8字符。 文档键命名规范 1、键不能含有\0 (空字符)。这个字符用来表示键的结尾。 2、.和$有特别的意义只有在特定环境下才能使用。 3、以下划线_开头的键是保留的(不是严格要求的)。 3、集合 集合就是 MongoDB 文档组类似于 RDBMS 关系数据库管理系统Relational Database Management System)中的表格。 集合存在于数据库中集合没有固定的结构这意味着你在对集合可以插入不同格式和类型的数据但通常情况下我们插入集合的数据都会有一定的关联性。 常用命令 1、 创建一个集合table) db.createCollection( “collName”); 2、 得到指定名称的集合table ) db.getCollection(“user”); 5、MongoDB适用场景 适用场景 1、网站数据Mongo非常适合实时的插入更新与查询并具备网站实时数据存储所需的复制及高度伸缩性。 2、缓存由于性能很高Mongo也适合作为信息基础设施的缓存层。在系统重启之后由Mongo搭建的持久化缓存层可以避免下层的数据源过载。 3、大尺寸低价值的数据使用传统的关系型数据库存储一些数据时可能会比较昂贵在此之前很多时候程序员往往会选择传统的文件进行存储。 4、高伸缩性的场景Mongo非常适合由数十或数百台服务器组成的数据库。Mongo的路线图中已经包含对Map Reduce弓摩的内置支持。 5、用于对象及 JSON数据的存储Mongo的BSON数据格式非常适合文档化格式的存储及查询。 不适用场合 1、高度事务性系统例如银行系统。传统的关系型数据库目前还是更适用于需要大量原子性复杂事务的应用程序。 2、传统的商业智能应用针对特定问题的BI数据库会对产生高度优化的查询方式。对于此类应用数据仓库可能是更合适的选择。 六、MongoDB常用操作一 1、INSERT insert只能添加不能做修改 save既可以做添加也可以做修改 db.User.save({name:‘zhangsan’,age:21,sex:true}) db.User.find() _id组合 Objectld是、id”的默认类型。Objectld使用12字节的存储空间每个字节二位十六进制数字是一个24位的字符串 时间戳时间不断变化的机器主机的唯_标识码。通常是机器主机名的散列值这样可以确保不同主机 生成不同的Objectld ,不产生冲突。PID:为了确保在同一台机器上并发的多个进程产生的Objectld是唯一的 所以加上进程标识符(PID).计数器前9个字节保证了同一秒钟不同机器不同进程产生的Objectld是唯一的。 后3个字节就是一个自动增加的计数器确保相同进程同一秒产生的Objectld也是 不一样。同一秒最多允许每个进程拥有IS 777 2托个不同的Objectld。 2、QUERY 2.1 WHERE select * from User where name ‘lucy’ db.User.find({name:“lucy”}) 2.2 FIELDS select name, age from User where age 20 db.User.find({age:20}, {‘name’:1, ‘age’:1}) 2.3 SORT 在 MongoDB 中使用 sort() 方法对数据进行排序sort() 方法可以通过参数指定排序的字段并使用 1 和 -1 来指定排序的方式其中 1 为升序排列而 -1 是用于降序排列。 select * from User order by age db.User.find().sort({age:1}) 2.4 SUCE 在 MongoDB 中使用 limit()方法来读取指定数量的数据skip()方法来跳过指定数量的数据 select * from User skip 2 limit 3 db.User.find().skip(0).limit(3) 2.5 IN select * from User where age in (21, 26, 32) db.User.find({age:{$in:[21,26,32]}}) 2.6 COUNT select count(*) from User where age 20 db.User.find({age:{$gt:20}}).count() 2.7 OR select * from User where age 20 or age 30 db.User.find({$or:[{age:20}, {age:30}]}) 七、MongoDB常用操作二 1、UPDATE update User set age 100, sex 0 where name ‘lucy’ db.User.update({name:“lucy”}, {$set:{age:100, sex:0}}) Update()有几个参数需要注意。 db.collection.update(criteria, objNew, upsert, mult) criteria:需要更新的条件表达式 objNew:更新表达式 upsert:如FI标记录不存在是否插入新文档。 multi:是否更新多个文档。 2、Remove remove()用于删除单个或全部文档删除后的文档无法恢复 //移除对应id的行 db.User.remove(id) //移除所有 db.User.remove({}) 3、aggregate聚合 MongoDB中聚合(aggregate)主要用于处理数据(诸如统计平均值,求和等)并返回计算后的数据结果。有点类似sql语句中的 count(*) 插入测试数据 db.article.insert({ title: MongoDB Overview, description: MongoDB is no sql database, by_user: runoob.com, url: http://www.runoob.com, tags: [mongodb, database, NoSQL], likes: 100 })db.article.insert({ title: NoSQL Overview, description: No sql database is very fast, by_user: runoob.com, url: http://www.runoob.com, tags: [mongodb, database, NoSQL], likes: 10 })db.article.insert({ title: Neo4j Overview, description: Neo4j is no sql database, by_user: Neo4j, url: http://www.neo4j.com, tags: [neo4j, database, NoSQL], likes: 750 })通过以上集合计算每个作者所写的文章数 select by_user, count(*) from article group by by_user db.article.aggregate([{KaTeX parse error: Expected }, got EOF at end of input: …roup : {_id : by_user, num_tutorial : {$sum : 1}}}]) 4、常见的聚合表达式 5、索引 索引通常能够极大的提高查询的效率如果没有索引MongoDB在读取数据时必须扫描集合中的每个文件并选取那些符合查询条件的记录。这种扫描全集合的查询效率是非常低的特别在处理大量的数据时查询可以要花费几十秒甚至几分钟这对网站的性能是非常致命的。索引是特殊的数据结构索引存储在一个易于遍历读取的数据集合中索引是对数据库表中一列或多列的值进行排序的一种结构。 db.User.createIndex({“name”:1}) 语法中 name值为你要创建的索引字段1 为指定按升序创建索引如果你想按降序来创建索引指定为 -1 即可 八、SpringBoot集成MongoDB spring-data-mongodb提供了MongoTemplate与MongoRepository两种方式访问mongodbMongoRepository操作简单MongoTemplate操作灵活我们在项目中可以灵活适用这两种方式操作mongodbMongoRepository的缺点是不够灵活MongoTemplate正好可以弥补不足。 1、在service_hosp引入依赖 dependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-mongodb/artifactId/dependency /dependencies2、添加MongoDB配置 spring.data.mongodb.urimongodb://192.168.121.140:27017/test3.总结 使用MongoTmplate三步: 1.引用starter依赖 2.配置mongodb连接信息 3.在使用的地方直接注入MongoTemplate 九、基于MongoTemplate 开发CRUD 1、添加实体 添加com.donglin.yygh.hosp.testmongo.User类 Data Document(User) public class User {Id //当前属性和mongodb集合中的主键是对应的private String id;private String name;private Integer age;private String email;private String createDate; }2、常用方法 常用方法 mongoTemplate.findAll(User.class): 查询User文档的全部数据 mongoTemplate.findById( id , User.class): 查询User文档id为id的数据 mongoTemplate.find(query, User.class);: 根据query内的查询条件查询 mongoTemplate.upsert(query, update, User.class): 修改 mongoTemplate.remove(query, User.class): 删除 mongoTemplate.insert(User): 新增 Query对象 1、创建一个query对象用来封装所有条件对象)再创建一个criteria对象用来构建条件 2、 精准条件criteria.and(“key”).is(“条件”) 模糊条件criteria.and(“key”).regex(“条件”) 3、封装条件query.addCriteria(criteria) 4、大于创建新的criteriaCriteria gt Criteria.where(“key”).gt“条件” 小于创建新的criteriaCriteria lt Criteria.where(“key”).lt“条件” 5、Query.addCriteria(new Criteria().andOperator(gt,lt)); 6、一个query中只能有一个andOperator()。其参数也可以是Criteria数组。 7、排序 query.withnew Sort(Sort.Direction.ASC, “age”). and(new Sort(Sort.Direction.DESC, “date”))) 3、添加测试类 RestController RequestMapping(/mongo1) public class TestMongo1 {Autowiredprivate MongoTemplate mongoTemplate;//添加GetMapping(create)public void createUser() {User user new User();user.setAge(20);user.setName(test);user.setEmail(4932200qq.com);User user1 mongoTemplate.insert(user);System.out.println(user1);}//1.insert与save区别insert只能做添加save既可以做添加也可以做修改操作//2.save做修改时必须先查询然后修改才行不能直接修改。//3.批量添加只能用insert//查询所有GetMapping(findAll)public void findUser() {ListUser userList mongoTemplate.findAll(User.class);System.out.println(userList);}//根据id查询GetMapping(findId)public void getById() {User user mongoTemplate.findById(5ffbfa2ac290f356edf9b5aa, User.class);System.out.println(user);}//条件查询GetMapping(findUser)public void findUserList() {Query query new Query(Criteria.where(name).is(test).and(age).is(20));ListUser userList mongoTemplate.find(query, User.class);System.out.println(userList);}//模糊查询GetMapping(findLike)public void findUsersLikeName() {String name est;String regex String.format(%s%s%s, ^.*, name, .*$);Pattern pattern Pattern.compile(regex, Pattern.CASE_INSENSITIVE);Query query new Query(Criteria.where(name).regex(pattern));ListUser userList mongoTemplate.find(query, User.class);System.out.println(userList);}//分页查询GetMapping(findPage)public void findUsersPage() {String name est;int pageNo 1;int pageSize 10;Query query new Query();String regex String.format(%s%s%s, ^.*, name, .*$);Pattern pattern Pattern.compile(regex, Pattern.CASE_INSENSITIVE);query.addCriteria(Criteria.where(name).regex(pattern));int totalCount (int) mongoTemplate.count(query, User.class);ListUser userList mongoTemplate.find(query.skip((pageNo - 1) * pageSize).limit(pageSize), User.class);MapString, Object pageMap new HashMap();pageMap.put(list, userList);pageMap.put(totalCount,totalCount);System.out.println(pageMap);}//修改GetMapping(update)public void updateUser() {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());UpdateResult result mongoTemplate.upsert(query, update, User.class);long count result.getModifiedCount();System.out.println(count);}//upsert:可以做修改或者添加操作//updateFirst://updateMulti://删除操作GetMapping(delete)public void delete() {Query query new Query(Criteria.where(_id).is(5ffbfa2ac290f356edf9b5aa));DeleteResult result mongoTemplate.remove(query, User.class);long count result.getDeletedCount();System.out.println(count);}//mongo中是区分大小写和数据类型的。//Criteria也可以构成 或 的条件Criteria criterianew Criteria();criteria.orOperator(Criteria,Criteria); }十、基于MongoRepository开发CRUD Spring Data提供了对mongodb数据访问的支持我们只需要继承MongoRepository类按照Spring Data规范就可以了 SpringData 方法定义规范 1、不是随便声明的而需要符合一定的规范 2、 查询方法以find | read | get开头 3、 涉及条件查询时条件的属性用条件关键字连接 4、 要注意的是条件属性首字母需要大写 5、 支持属性的级联查询但若当前类有符合条件的属性则优先使用而不使用级联属性,若需要使用级联属性则属性之间使用_强制进行连接 1、添加Repository类 Repository public interface UserRepository extends MongoRepositoryUser, String { }2、编写测试类 RestController RequestMapping(/mongo2) public class TestMongo2 {Autowiredprivate UserRepository userRepository;//添加GetMapping(create)public void createUser() {User user new User();user.setAge(20);user.setName(张三);user.setEmail(3332200qq.com);User user1 userRepository.save(user);}//1.insert与save方法可以做添加操作//2.save也可以做修改操作//3.insert可以同时添加多条数据,saveAll也可以//先查询出来再更新否则出问题//查询所有GetMapping(findAll)public void findUser() {ListUser userList userRepository.findAll();System.out.println(userList);}//id查询GetMapping(findId)public void getById() {User user userRepository.findById(60b8d57ed539ed5b124942de).get();System.out.println(user);}//条件查询GetMapping(findQuery)public void findUserList() {User user new User();user.setName(张三);user.setAge(20);ExampleUser userExample Example.of(user);ListUser userList userRepository.findAll(userExample);System.out.println(userList);}//模糊查询GetMapping(findLike)public void findUsersLikeName() {//创建匹配器即如何使用查询条件ExampleMatcher matcher ExampleMatcher.matching() //构建对象.withStringMatcher(ExampleMatcher.StringMatcher.CONTAINING) //改变默认字符串匹配方式模糊查询.withIgnoreCase(true); //改变默认大小写忽略方式忽略大小写User user new User();user.setName(三);ExampleUser userExample Example.of(user, matcher);ListUser userList userRepository.findAll(userExample);System.out.println(userList);}//分页查询GetMapping(findPage)public void findUsersPage() {Sort sort Sort.by(Sort.Direction.DESC, age);//0为第一页Pageable pageable PageRequest.of(0, 10, sort);//创建匹配器即如何使用查询条件ExampleMatcher matcher ExampleMatcher.matching() //构建对象.withStringMatcher(ExampleMatcher.StringMatcher.CONTAINING) //改变默认字符串匹配方式模糊查询.withIgnoreCase(true); //改变默认大小写忽略方式忽略大小写User user new User();user.setName(三);ExampleUser userExample Example.of(user, matcher);//创建实例ExampleUser example Example.of(user, matcher);PageUser pages userRepository.findAll(example, pageable);System.out.println(pages);}//修改GetMapping(update)public void updateUser() {User user userRepository.findById(60b8d57ed539ed5b124942de).get();user.setName(张三_1);user.setAge(25);user.setEmail(883220990qq.com);User save userRepository.save(user);System.out.println(save);}//删除GetMapping(delete)public void delete() {userRepository.deleteById(60b8d57ed539ed5b124942de);}//delete只能根据id删除就算设置其它条件而不设置id,也是删除不了的。 }3、SpringData方法规范 GetMapping(testMethod2) public void testMethod2() {ListUser users userRepository.findByNameLike(张);System.out.println(users); }GetMapping(testMethod1) public void testMethod1() {ListUser users userRepository.findByName(张三);System.out.println(users); }Repository public interface UserRepository extends MongoRepositoryUser, String {ListUser findByName(String name);ListUser findByNameLike(String name); }
http://www.hkea.cn/news/14308059/

相关文章:

  • 网站开发和网站制作的区别长沙短视频制作
  • 北京招聘网站排行南宁seo多少钱费用
  • 国外网站注册抖音小程序推广计划
  • 织梦做的网站前面有不安全win10建设网站
  • 南宁站建站时间推广员网站
  • 到那里找做网站的兼职flash asp网站
  • 网站权重是什么意思深圳网站设..
  • 英文旅游网站建设网站做强制访问控制
  • 设置网站默认首页线上推广的优势
  • 网站代理备案价格怎么优化网站加载速度
  • mip网站有什么好处保定关键词排名推广
  • 旅游公司的网站怎么做网站设计文字超链接
  • 深圳网站制作十年乐云seo品牌淘宝网站开发类目没法上架商品
  • 企业网站建设ppt介绍it外包服务管理制度
  • 上海房地产网站官网编辑html
  • 专业网站设计招聘信息一个网站需要几个人
  • 网站开发问题装修设计图网站
  • 自己怎么做网站视频赚钱易语言怎么做网站自动登录
  • 做网站资金来源是什么华为云 wordpress
  • 地方网站域名企业建站系统费用
  • 如何设计校园网站ps网站交互设计
  • 第一次找人做网站平谷微网站建设
  • 医院网站建设 南宁公司有域名 如何做网站
  • 榆次做网站北京网站设计公司价格
  • 站长工具箱网站怎么做站群
  • 设计网站用什么语言网站如何收录快
  • 游戏网站建设一条龙去掉 wordpress
  • 网站搬家教程购物网站开发问题域分析
  • 公司直招的招聘网站网站如何发布到网上
  • 什么网站做h5没有广告seo 深圳