(个人体会)基于MongoTemplate对数据库进行增删查改操作的入门基础

MongoTemplate对数据库进行增删查改操作

       本文是基于使用Spring data MongoDB中的Mongotemplate来进行操作的,因为Mongotemplate集成了许多内置的方法来操作mongoDB数据库,使用起来比较简单易懂,尤其是使用到SpringBoot框架来搭建项目的,值得大家来学习一下。
       本文包括也涉及到一些新手比较常用的功能在里面,如多条件查询、批量删除、插入多个数据等等,也使用到比较常用的写法,欢迎大家来学习。
       笔者会尽量在所有的代码中都添加上注释和说明,如果还有遇到什么问题的话,可以在评论区留言,笔者看到消息时定会马上回复。话不多说,下面开始进入我们的主题。

1、添加数据

应用到方法有:
       ①mongotemplate.insert(title,“Title”);//插入单个数据
       ②mongotemplate.save(list,“Title”);//插入多个数据

(1)通过insert方法
①插入一条记录

 //insert()方法的第一个参数为插入的实体类数据对象,第二个参数是数据集的名称,即mysql中的数据表。
    Title t = new Title();
    //为t对象赋值
    t.setTname(“张三”);
    mongotemplate.insert(title,"Title");

②插入多条记录
       思路也很简单,就是把实体类的对象添加到泛型集合list中,然后把list填写到第一个参数即可

	//样例代码,仅供参考
	String [] data = {"张三","李四"};
	
	//此处使用泛型list集合,
    List<Title> list = new ArrayList<Title>();
    
    //data.length是data数组的长度,是最基本的
    for(int i = 0 ; i < data.length ; i++){
    		//实体类的对象定义
   			Title t = new Title();
   			//为t对象赋值
    		t.setTname(data[i]);
    		//把t对象添加到list列表中
    		list.add(t);
    }
   //把list对象传入到第一参数中
   mongoTemplate.insert(list, "Title");

(2)通过save方法
       其使用方法与insert方法一样,只要把insert换成save即可,此处就不作详解。
       值得注意的是,insert()在插入数据的时候会区分系统默认生成_id值,一旦遇到重复的_id值,系统会抛出异常;
       save()方法在插入数据遇到相同_id值时,并不会出现异常,而是在原有的基础上对该记录的信息进行更新操作。

2、删除数据

应用到方法有:
       ①remove(query, Title.class);//包括单个删除和批量删除,只需要对query语句进行编写即可

(1)单个删除

//Criteria类可以用于编写特定的执行条件,与Query对象进行组合使用
Criteria criatira = new Criteria();

//使用criatira对象去调用andOperator()来编写具体具体条件;
//**单个条件**的编写方式为:Criteria.where("id").is(id);
//如果是**多个条件**,则Criteria.where("id").is(id)**,and("name").is(name)**;
criatira.andOperator(Criteria.where("id").is(id));//假设is(id)中的id是从前端获取过来的变量。

//再把criatira对象传入query对象即可
Query query = new Query(criatira);
//调用
mongoTemplate.remove(query, Title.class);

(2)批量删除

//假设前端提交过来的变量litleSno为:123,234,345.....等,
//首先可以把litleSno字符串分割为数组
String[] strs = litleSno.split(",");
//
criatira = new Criteria();
/*
* Criteria.where("id").in(sentenceIdTemp)中的
* 参数sentenceIdTemp必须是Object,否则出现警告
*/
Object[] sentenceIdTemp = strs;
// 建立批量删除的条件时,是使用in(),而不是is();
//此时是传入一个数组即可
criatira.andOperator(Criteria.where("id").in(sentenceIdTemp));
//以下步骤与单个删除一样
Query query = new Query(criatira);
mongoTemplate.remove(query, Title.class);

3、查询数据

应用到方法有:
       ①mongoTemplate.findAll(Title.class);//全查询
       ②mongoTemplate.find(query,Title.class);//条件查询
       ③mongoTemplate.find(query,Title.class);//模糊查询

       查询功能与上述的删除功能有点类似,主要都是通过建立criatira和query对象来构造条件,当然,如果需要进行全查询时,只需要在query对象中不构造条件即可,或者使用mongotemplate里面集成的findAll()方法,具体写法请看以下代码:
①全查询

//此处使用到findAll()方法,只需要传入一个实体类即可
List<Title> titleList = mongoTemplate.findAll(Title.class);

②条件查询

//同理,直接新建criatira对象,用于编写特定的查询条件
Criteria criatira = new Criteria();
//如果需要多条件查询,也可以参照上述删除功能的写法即可
criatira.andOperator(Criteria.where("id").is(id));
Query query = new Query(criatira);
//此处使用的是find()方法
mongoTemplate.find(query,Title.class);

③模糊查询

//同理,直接新建criatira对象,用于编写特定的查询条件
Criteria criatira = new Criteria();

//value变量为模糊查询提交过来的值,类似SQL语句中的%value%的写法
//需要定义一个模式对象来构造模糊字段
Pattern pattern1 = Pattern.compile("^.*" + value + ".*$",Pattern.CASE_INSENSITIVE);

//此处是用where().regex(),而不是where().is()。
criatira.andOperator(Criteria.where("需要模糊查询的字段").regex(pattern1));
//或者还有其他的写法,比如搭配结合Example和Criteria对象进行使用,此处就不作过多解释,需要的话可以在评论区留言

//其余的写法一样
Query query = new Query(criatira);
mongoTemplate.find(query,Title.class);

如果需要多个模糊条件进行查询,需要修改的地方只有以下两个地方:

//第一个模糊条件
Pattern pattern1 = Pattern.compile("^.*" + value1 + ".*$",Pattern.CASE_INSENSITIVE);
//第二个模糊条件
Pattern pattern2 = Pattern.compile("^.*" + value2 + ".*$",Pattern.CASE_INSENSITIVE);
//如果还需要,可以在andOperator()方法中继续添加Criteria.where("需要模糊查询的字段").regex(pattern1),并且用“,”隔开就行。
criatira.andOperator(Criteria.where("需要模糊查询的字段").regex(pattern1),Criteria.where("需要模糊查询的字段").regex(pattern2));

4、更新数据

应用带的方法:
       ①mongoTemplate.upsert(query, update, Title.class, “Title”);

①更新单个字段

/*
*query对象为查询条件对象,即根据某个条件查询到特定的数据
*update 对象为更新数据对象,即封装需要修改的字段及内容
*/
Query query = new Query();
//假设前端已经提交到title数据,即可通过title进行相应数据的获取
//为了省略Criteria对象的写法,此处可以直接利用query对象来调用addCriteria()来编写条件就行
query.addCriteria(Criteria.where("id").is(id);
Update update = new Update();
//set("字段名","需要修改的值");
update.set("name", title.getName());
//在数据库中进行查询,如果有满足query对象的数据,则按照update的数据进行更新操作,否则,就直接插入一条新的数据。
mongoTemplate.upsert(query, update, Title.class, "Title");

②更新多个字段

Query query = new Query();
query.addCriteria(Criteria.where("id").is(id);
Update update = new Update();
update.set("name", title.getName());
update.set("description", title.getDescription());
//........
/**
 * 数据库有,就新增, 没有,就修改
*/
mongoTemplate.upsert(query, update, Title.class, "Title");

总结:

       以上是我对于自己在实际应用开发中使用的到代码编写汇总,其中也是参考网上各种各样的方法来操作的,最终形成自己的编写方式。对于新手来说,我个人觉得以上的写法是比较好懂的。如果读者们在查阅时有发什么错误或者疑问时,欢迎在评论区进行留言。谢谢

你可能感兴趣的:(数据库操作)