SpringBoot中简单使用mongodb

来源:互联网 发布:linux cp 文件夹 编辑:程序博客网 时间:2024/05/21 10:55
SpringBoot中简单使用mongodb




  配置application.properties 应该放最前面


#单机
spring.data.mongodb.uri=mongodb://name:pass@localhost:27017/test




#集群 还没测试
spring.data.mongodb.uri=mongodb://ip1:port1,ip2:port2/database








1. 构建一个entity class: Movie




import org.springframework.data.annotation.Id;


public class Movie {


    @Id
    private String id;


    private String name;
    private String title;


    public Movie(String id, String name, String title) {
        this.id = id;
        this.name = name;
        this.title = title;
    }


    public Movie() {


    }




    public String getId() {
        return id;
    }


    public void setId(String id) {
        this.id = id;
    }


    public String getName() {
        return name;
    }


    public void setName(String name) {
        this.name = name;
    }


    public String getTitle() {
        return title;
    }




    public void setTitle(String title) {
        this.title = title;
    }




    @Override
    public String toString() {
        return "Movie{" +
                "id='" + id + '\'' +
                ", name='" + name + '\'' +
                ", title='" + title + '\'' +
                '}';
    }
}




实体类Movie 映射到mongodb 中某一个Collection中某一个具体Document, 其中    
@Id表示 对应Document中的主键,也就是objectId


ref: https://spring.io/guides/gs/accessing-data-mongodb/


MongoDB stores data in collections. Spring Data MongoDB will map the
class Movie into a collection called Movie. If you want to change
the name of the collection, you can use Spring Data MongoDB’s @Document annotation on the class.




2.  在mapper/dao层定义一个接口,访问mongodb 




import com.zhou.spring.springboot.sudy1.model.Movie;
import org.springframework.data.mongodb.repository.MongoRepository;






public interface MovieRepository extends MongoRepository<Movie, String> {  


    public  Movie findByName(String name);


    @Override
    Movie findOne(String s);


}


MongoRepository<T, ID extends Serializable>, T对应实体类, TD表示对应主键id




3. service 层可以再封装一层, 根据具体业务进行进一步处理
创建class MovieService


import com.zhou.spring.springboot.sudy1.mapper.MovieRepository;
import com.zhou.spring.springboot.sudy1.model.Movie;
import org.springframework.stereotype.Service;


import javax.annotation.Resource;
import java.util.List;


@Service
public class MovieService {


    @Resource
    MovieRepository movRes;






    public Movie findByName(String name) {
        return  movRes.findByName( name );
    }


    public Movie findById(String id) {
        return movRes.findOne(id );
    }


    public List<Movie> findMoveList( ){
        return movRes.findAll();
    }


}




4. 测试




import com.zhou.spring.springboot.sudy1.model.Movie;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;


@RunWith(SpringRunner.class)
@SpringBootTest
public class Sudy1ApplicationTests {




@Autowired
private MovieRepository movRes;




@Test
public void test() throws Exception {
// 创建三个User,并验证User总数


movRes.save(new Movie("1", "fast", "fast") );


        Movie m2 = new Movie("2", "faster", "faster");
movRes.save( m2 );


//Assert.assertEquals(3, movRes.findAll().size());


        Assert.assertEquals( m2.getId(), movRes.findByName( "faster" ).getId());
        Assert.assertEquals( m2.getName(), movRes.findByName( "faster" ).getName());
        Assert.assertEquals( m2.getTitle(), movRes.findByName( "faster" ).getTitle());
}






    @Test
    public void test2() throws Exception {
        // 创建三个User,并验证User总数


        Movie mov = movRes.findOne( "5982e265468ac80e8f771b02") ;


        System.out.println( mov );


    }


}


5. controller层可定义接口, 通过web端对数据进行远程访问






@RestController
public class QueryMovie {




    @Resource
    private MovieService movieService;




    //http://localhost:8080/api/hello
    @RequestMapping("/api/hello")
    public String index() {
        return "Hello World!!The World is beautiful!!!!!!!";
    }






    //http://localhost:8080/api/getMovieById?id=1
    //curl http://localhost:8080/api/getUserById?id=1&name=xiaohong
    @RequestMapping(value = "/api/getMovieById",
            method={RequestMethod.POST, RequestMethod.GET} )
    public Movie getMoveById(@RequestParam String id ) {
        return movieService.findById( id );
    }








    //http://localhost:8080/api/getMovieByName?name=fast
    //curl -d "name=xiaohong&id=1" "http://localhost:8080/api/getUserByName"
    @RequestMapping(value = "/api/getMovieByName",
            method={RequestMethod.POST, RequestMethod.GET} )
    public Movie getMoveByName(@RequestParam String name ) {
        return movieService.findByName( name );
    }








    //http://localhost:8080/api/findAllMovies
    @RequestMapping(value = "/api/findAllMovies",
            method={RequestMethod.POST, RequestMethod.GET} )
    public List<Movie> findAllUsers(  ) {
        return  movieService.findMoveList();
    }




}



ref:  https://spring.io/guides/gs/accessing-data-mongodb/


      http://blog.didispace.com/springbootmongodb/
      http://blog.scottlogic.com/2016/11/22/spring-boot-and-mongodb.html
      http://www.jianshu.com/p/fe3b9532b852
      https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-nosql.html


      http://www.ityouknow.com/springboot/2017/05/08/springboot-mongodb.html








原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 寄快递没拿单子但东西破损了怎么办 快递签收以后发现东西少了怎么办 淘宝时收到的货破损我该怎么办 淘宝买的冰箱七天无理由退货怎么办 截图放进ai中变得很模糊怎么办 买房子的贷款合同丢了怎么办 索尼9000e挂墙后面借口怎么办 想把木头锯成小块的怎么办 第一天上班交接完工作想辞职怎么办 POS机刷卡成功没打出单子怎么办 建行买的理财保险单子丢了怎么办 退休老师饭卡的钱突然少了怎么办 背驼得厉害头低的厉害怎么办 被别人举报自己碰瓷了怎么办 苹果平板微信屏幕不是全屏怎么办 大冒险告白被接受了怎么办在线阅读 手机屏锁图案密码忘了怎么办 opp手机锁屏密码忘了怎么办 宝宝的玩具里面脏了洗不到怎么办 早上起来眼睛被眼屎粘住了怎么办 魔兽世界神器满级任务放弃了怎么办 魔兽世界神器满级任务没接到怎么办 情侣空间上的照片删了怎么办 微信好友群群主把你踢出房间怎么办 我被车撞了对方把现场破坏该怎么办 美术生专业分可以文化分不行怎么办 小狗又吐又拉不吃东西怎么办 狗狗把脖子挠破了怎么办 几分钟我的手机疯狂收到短信怎么办 初中孩子沉迷动漫及画动漫画怎么办 打仗在派出所保释出来人跑了怎么办 贴门槛石瓷砖贴多了要怎么办 建设银行中职学生资助卡丢了怎么办 建行网银u盾丢了怎么办 深水区换气时喝了口水怎么办 撞到别人车了 我走了 怎么办 自己班同学被自己取好多外号怎么办 刚学会走路的宝宝脚外八字怎么办 宝宝两岁走路膝盖弯曲不直怎么办 一岁多的宝宝走路o型腿怎么办 21个月的宝宝走路o型腿怎么办