springboot mongo CRUD+

springboot mongo CRUD+


工具

idea

maven

postman

navicat


文件結(jié)構(gòu)

文件結(jié)構(gòu)


代碼

pom.xml


<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

? ? ? ? xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">

? ? <modelVersion>4.0.0</modelVersion>

? ? <parent>

? ? ? ? <groupId>org.springframework.boot</groupId>

? ? ? ? <artifactId>spring-boot-starter-parent</artifactId>

? ? ? ? <version>2.5.2</version>

? ? ? ? <relativePath/> <!-- lookup parent from repository -->

? ? </parent>

? ? <groupId>com.vue</groupId>

? ? <artifactId>demo</artifactId>

? ? <version>0.0.1-SNAPSHOT</version>

? ? <name>demo</name>

? ? <description>Demo project for Spring Boot</description>

? ? <properties>

? ? ? ? <java.version>1.8</java.version>

? ? </properties>

? ? <dependencies>

? ? ? ? <dependency>

? ? ? ? ? ? <groupId>org.springframework.boot</groupId>

? ? ? ? ? ? <artifactId>spring-boot-starter-web</artifactId>

? ? ? ? </dependency>

? ? ? ? <dependency>

? ? ? ? ? ? <groupId>org.projectlombok</groupId>

? ? ? ? ? ? <artifactId>lombok</artifactId>

? ? ? ? ? ? <version>1.16.20</version>

? ? ? ? </dependency>

? ? ? ? <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-mongodb -->

? ? ? ? <dependency>

? ? ? ? ? ? <groupId>org.springframework.boot</groupId>

? ? ? ? ? ? <artifactId>spring-boot-starter-data-mongodb</artifactId>

? ? ? ? </dependency>

? ? ? ? <!-- https://mvnrepository.com/artifact/org.mockito/mockito-core -->

? ? ? ? <dependency>

? ? ? ? ? ? <groupId>org.mockito</groupId>

? ? ? ? ? ? <artifactId>mockito-core</artifactId>

? ? ? ? ? ? <version>2.23.4</version>

? ? ? ? ? ? <scope>compile</scope>

? ? ? ? </dependency>

? ? ? ? <dependency>

? ? ? ? ? ? <groupId>org.junit.jupiter</groupId>

? ? ? ? ? ? <artifactId>junit-jupiter-api</artifactId>

? ? ? ? ? ? <version>5.3.2</version>

? ? ? ? ? ? <scope>compile</scope>

? ? ? ? </dependency>

? ? </dependencies>

? ? <build>

? ? ? ? <plugins>

? ? ? ? ? ? <plugin>

? ? ? ? ? ? ? ? <groupId>org.springframework.boot</groupId>

? ? ? ? ? ? ? ? <artifactId>spring-boot-maven-plugin</artifactId>

? ? ? ? ? ? ? ? <configuration>

? ? ? ? ? ? ? ? ? ? <mainClass>com.example.demo.DemoApplication</mainClass>

? ? ? ? ? ? ? ? </configuration>

? ? ? ? ? ? </plugin>

? ? ? ? </plugins>

? ? </build>

</project>


application.properties


server.port=8888

spring.data.mongodb.database=test

spring.data.mongodb.host=localhost

spring.data.mongodb.port=27017


User


public class User {

? ? private int id;

? ? private String name;

? ? private String password;

? ? public int getId() {

? ? ? ? return id;

? ? }

? ? public void setId(int id) {

? ? ? ? this.id = id;

? ? }

? ? public String getName() {

? ? ? ? return name;

? ? }

? ? public void setName(String name) {

? ? ? ? this.name = name;

? ? }

? ? public String getPassword() {

? ? ? ? return password;

? ? }

? ? public void setPassword(String password) {

? ? ? ? this.password = password;

? ? }

}


UserRepository


public interface UserRepository extends MongoRepository<User,Integer> {

? ? User getByName(String name);

}


UserService


public interface UserService {

? ? public void saveUser(User user);

? ? public void removeUserByUserName(String name,String collectionName);

? ? public void updatePasswordByName(User user);

? ? public List<User> getByUserName(String name,String collectionName);

? ? public List<User> getByUserNameLike(String name, String collectionName);

? ? public void getByUserPage();

? ? public List<User> selectByRegex(String name,String collectionName);

? ? public long countByName(String name,String collectionName);

? ? public List<User> selectByAggregation(String name,String collectionName);

//? ? public List<User> selectNameBySort(String name,String collectionName);

? ? public List<User> selectByNameSort(String name,String collectionName);

? ? public List<User> selectByCompare(String password,String collectionName);

? ? public List<User> selectByAnd(String name,String password,String collectionName);

? ? public List<User> selectByIn(String name,List<String> names,String collectionName);

? ? public List<User> selectByPage(String name,String collectionName,int page,int size);

}


UserServiceImpl


@Service

public class UserServiceImpl implements UserService{

? ? @Resource

? ? private MongoTemplate mongoTemplate;

? ? @Resource

? ? private UserRepository userRepository;

? ? @Override

? ? public void saveUser(User user){

? ? ? ? userRepository.save(user);

? ? }

? ? @Override

? ? public void removeUserByUserName(String name,String collectionName){

? ? ? ? Query query = new Query(new Criteria("name").is(name));//

? ? ? ? mongoTemplate.remove(query,collectionName);

? ? }

? ? @Override

? ? public void updatePasswordByName(User user){

? ? ? ? Query query = new Query(new Criteria("name").is(user.getName()));//new Criteria("id").is(user.getId())

? ? ? ? Update update = new Update().set("password",user.getPassword());

? ? ? ? mongoTemplate.updateMulti(query,update,User.class);

? ? }

? ? @Override

? ? public List<User> getByUserName(String name,String collectionName){

? ? ? ? Query query = Query.query(Criteria.where("name").is(name));

? ? ? ? List<User> result = mongoTemplate.find(query, User.class, collectionName);

? ? ? ? return result;

? ? }

? ? @Override

? ? public List<User> getByUserNameLike(String name,String collectionName){

? ? ? ? Query query = Query.query(Criteria.where("name").all(Arrays.asList(name)));

? ? ? ? List<User> result = mongoTemplate.find(query, User.class,collectionName);

? ? ? ? //滿足所有條件的數(shù)據(jù)

? ? ? ? return result;

? ? }

? ? @Override

? ? public void getByUserPage(){

? ? }

? ? @Override

? ? public List<User> selectByRegex(String name,String collectionName){

? ? ? ? Query query = new Query(Criteria.where("name").regex(name));

? ? ? ? List<User> result = mongoTemplate.find(query, User.class,collectionName);

? ? ? ? return result;

? ? }

? ? @Override

? ? public long countByName(String name,String collectionName){

? ? ? ? Query query = new Query(Criteria.where("name").is(name));

? ? ? ? long num = mongoTemplate.count(query,collectionName);

? ? ? ? return num;

? ? }

? ? @Override//聚合的先后順序很重要

? ? public List<User> selectByAggregation(String name,String collectionName) {

? ? ? ? Aggregation aggregation = Aggregation.newAggregation(

? ? ? ? ? ? ? ? Aggregation.match(Criteria.where("name").is(name)),

? ? ? ? ? ? ? ? Aggregation.limit(3),

? ? ? ? ? ? ? ? Aggregation.skip(1l),

? ? ? ? ? ? ? ? Aggregation.sort(Sort.Direction.DESC,"password"),//不能以id降序

? ? ? ? ? ? ? ? Aggregation.limit(3)

//? ? ? ? ? ? ? ? ,Aggregation.group("name").count().as("userName")

? ? ? ? );

? ? ? ? AggregationResults<User> result = mongoTemplate.aggregate(aggregation,collectionName, User.class);

? ? ? ? return result.getMappedResults();

? ? }

//? ? @Override

//? ? public List<User> selectNameBySort(String name,String collectionName){

//? ? ? ? Query query = Query.query(Criteria.where("name").is(name).within());

//? ? }

? ? @Override

? ? public List<User> selectByNameSort(String name,String collectionName) {

? ? ? ? Query query = new Query();

? ? ? ? query = Query.query(Criteria.where("name").is(name));

? ? ? ? List<User> list = mongoTemplate.find(query, User.class, collectionName);

? ? ? ? return list;

? ? }

? ? @Override

? ? public List<User> selectByCompare(String password,String collectionName){

? ? ? ? Query query = Query.query(Criteria.where("password").gte(password));

? ? ? ? List<User> list = mongoTemplate.find(query, User.class,collectionName);

? ? ? ? return list;

? ? }

? ? @Override

? ? public List<User> selectByAnd(String name,String password,String collectionName){

? ? ? ? Query query = Query.query(Criteria.where("name").is(name).and("password").is(password));

? ? ? ? List<User> list = mongoTemplate.find(query, User.class,collectionName);

? ? ? ? return list;

? ? }

? ? @Override

? ? public List<User> selectByIn(String name,List<String> names,String collectionName){

? ? ? ? Query query = Query.query(Criteria.where("name").is(name).in(names));

? ? ? ? List<User> list = mongoTemplate.find(query, User.class,collectionName);

? ? ? ? return list;

? ? }

//? ? @Override

//? ? public List<User> selectByOr(String name,List<String> names,String collectionName){

//? ? ? ? Query query = Query.query(Criteria.where("name"));

//? ? ? ? List<User> list = mongoTemplate.find(query, User.class,collectionName);

//? ? ? ? return list;

//? ? }

? ? @Override

? ? public List<User> selectByPage(String name,String collectionName,int page,int size){

? ? ? ? Query query = Query.query(Criteria.where("name").is(name));

//? ? ? ? Query query = new Query();

? ? ? ? PageRequest pageRequest = PageRequest.of(page,size);

? ? ? ? query.with(pageRequest);

? ? ? ? List<User> list = mongoTemplate.find(query, User.class,collectionName);

? ? ? ? return list;

? ? }

}


UserController


@RestController

@RequestMapping("/test")

public class UserController {

? ? @Resource

? ? private UserService userService;

? ? @RequestMapping("/save")

? ? @ResponseBody? ? //id被系統(tǒng)默認(rèn)為主鍵。如果同一個(gè)id save兩個(gè)不同用戶荤崇,原來的用戶會(huì)被取代

? ? public String saveUser(@RequestBody User user){

? ? ? ? userService.saveUser(user);

? ? ? ? return "插入成功";

? ? }

? ? @RequestMapping("/remove")

? ? @ResponseBody

? ? public String removeUserByName(@RequestParam String name,@RequestParam String collectionName){

? ? ? ? userService.removeUserByUserName(name,collectionName);

? ? ? ? return "刪除成功";

? ? }

? ? @RequestMapping("/updatePasswordByName")//把所有名字為指定名字的用戶的密碼換掉

? ? @ResponseBody

? ? public String updatePasswordByName(@RequestBody User user){

? ? ? ? userService.updatePasswordByName(user);

? ? ? ? return "更新成功";

? ? }

//? ? @RequestMapping("/getUserByPage")

//? ? @ResponseBody

//? ? public User getUserByPage(@RequestParam String name){

//? ? ? ? User user = userService.getByUserName(name);

//? ? ? ? return user;

//? ? }

? ? @RequestMapping("/getUserByName")

? ? @ResponseBody

? ? public List<User> getByUserName(@RequestParam String name,@RequestParam String collectionName){

? ? ? ? List<User> list = userService.getByUserName(name,collectionName);

? ? ? ? return list;

? ? }

? ? @RequestMapping("/getUserByNameLike")

? ? @ResponseBody

? ? public List<User> getUserByNameLike(@RequestParam String name,@RequestParam String collectionName){

? ? ? ? List<User> list = userService.getByUserNameLike(name,collectionName);

? ? ? ? return list;

? ? }

? ? @RequestMapping("/countByName")

? ? @ResponseBody

? ? public long countByName(@RequestParam String name,@RequestParam String collectionName){

? ? ? ? long count = userService.countByName(name,collectionName);

? ? ? ? return count;

? ? }

? ? @RequestMapping("/selectByRegex")

? ? @ResponseBody

? ? public List<User> selectByRegex(String name,String collectionName){

? ? ? ? List<User> list = userService.selectByRegex(name,collectionName);

? ? ? ? return list;

? ? }

? ? @RequestMapping("/selectByAggregation")

? ? @ResponseBody

? ? public List<User> selectByAggregation(String name,String collectionName){

? ? ? ? List<User> groupResult = userService.selectByAggregation(name,collectionName);

? ? ? ? return groupResult;

? ? }

? ? @RequestMapping("/selectBySort")

? ? @ResponseBody

? ? public List<User> selectNameBySort(String name,String collectionName){

? ? ? ? List<User> sortResult = userService.selectByNameSort(name,collectionName);

? ? ? ? return sortResult;

? ? }

? ? @RequestMapping("/selectByCompare")

? ? @ResponseBody

? ? public List<User> selectByCompare(String password,String collectionName){

? ? ? ? List<User> compareResult = userService.selectByCompare(password,collectionName);

? ? ? ? return compareResult;

? ? }

? ? @RequestMapping("/selectByAnd")

? ? @ResponseBody

? ? public List<User> selectByAnd(String name,String password,String collectionName){

? ? ? ? List<User> compareResult = userService.selectByAnd(name,password,collectionName);

? ? ? ? return compareResult;

? ? }

? ? @RequestMapping("/selectByIn")

? ? @ResponseBody

? ? public List<User> selectByOr(@RequestParam String name,@RequestParam List<String> names,@RequestParam String collectionName){

? ? ? ? List<User> compareResult = userService.selectByIn(name,names,collectionName);

? ? ? ? return compareResult;

? ? }

? ? @RequestMapping("/selectByPage")

? ? @ResponseBody

? ? public List<User> selectByPage(@RequestParam String name,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? @RequestParam String collectionName,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? @RequestParam int page,//page從0開始算第一頁

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? @RequestParam int size){

? ? ? ? List<User> pageResult = userService.selectByPage(name, collectionName, page, size);

? ? ? ? return pageResult;

? ? }

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
禁止轉(zhuǎn)載该押,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者藻雌。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市馁痴,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖寿桨,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件颗味,死亡現(xiàn)場離奇詭異蜓斧,居然都是意外死亡来颤,警方通過查閱死者的電腦和手機(jī)腔呜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進(jìn)店門违寞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來茫叭,“玉大人正塌,你說我怎么就攤上這事茴晋〉烂模” “怎么了扁掸?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵翘县,是天一觀的道長。 經(jīng)常有香客問我谴分,道長锈麸,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任牺蹄,我火速辦了婚禮忘伞,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘沙兰。我一直安慰自己氓奈,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布僧凰。 她就那樣靜靜地躺著探颈,像睡著了一般。 火紅的嫁衣襯著肌膚如雪训措。 梳的紋絲不亂的頭發(fā)上伪节,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天,我揣著相機(jī)與錄音绩鸣,去河邊找鬼怀大。 笑死,一個(gè)胖子當(dāng)著我的面吹牛呀闻,可吹牛的內(nèi)容都是我干的化借。 我是一名探鬼主播,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼捡多,長吁一口氣:“原來是場噩夢啊……” “哼蓖康!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起垒手,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤蒜焊,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后科贬,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體泳梆,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年榜掌,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了优妙。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,675評論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡憎账,死狀恐怖套硼,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情胞皱,我是刑警寧澤熟菲,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布看政,位于F島的核電站,受9級特大地震影響抄罕,放射性物質(zhì)發(fā)生泄漏允蚣。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一呆贿、第九天 我趴在偏房一處隱蔽的房頂上張望嚷兔。 院中可真熱鬧,春花似錦做入、人聲如沸冒晰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽壶运。三九已至,卻和暖如春浪秘,著一層夾襖步出監(jiān)牢的瞬間蒋情,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工耸携, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留棵癣,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓夺衍,卻偏偏與公主長得像狈谊,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子沟沙,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評論 2 360

推薦閱讀更多精彩內(nèi)容