Spring Boot 入门 Spring Boot 整合MongoDB简单CRUD使用

Spring Boot 入门整合目录

MongoDB简介

MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

MongoDB简单的CRUD

  • 引入依赖
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
  • 配置yml
spring:
  data:
    mongodb:
      #uri: mongodb://127.0.0.1:27017/lemon
      #或者这样配
      host: 127.0.0.1
      port: 27017
      database: lemon

  • 实体类
@Data
public class User {

    private String username;
    private String password;
    private Date createTime;
    private Userinfo userinfo;
}

@Data
public class Userinfo {

    private String nickName;
    private String gender;
}
  • DAO
public interface UserDao extends MongoRepository<User,Integer> {

}

CRUD

  • 添加
 public void insert(){
        User user = new User();
        user.setId(1);
        // 这里先临时写死一个 ID 编号
        user.setUsername("mongo");
        user.setPassword("123456");
        user.setCreateTime(new Date());
        Userinfo userinfo = new Userinfo();
        userinfo.setGender(1);
        userinfo.setNickName("nosql");
        user.setUserinfo(userinfo);
        // 存储到 DB
        userDao.insert(user);
    }
  • 修改
 public void update(){
        User user = new User();
        user.setId(1);
        user.setUsername("mongo1");
        user.setPassword("654321");
        user.setCreateTime(new Date());
        Userinfo userinfo = new Userinfo();
        userinfo.setGender(2);
        userinfo.setNickName("no_sql");
        user.setUserinfo(userinfo);
        //这里要注意,如果使用 save 方法来更新的话,必须是全量字段,否则其它字段会被覆盖。
        userDao.save(user);
    }
  • 删除
 public void delete(){
        // 根据 ID 编号,删除一条记录
        userDao.deleteById(1);
    }
  • 查找
  public void list(){
        // 根据 ID 编号,查询一条记录
        Optional<User> user = userDao.findById(1);
        System.out.println(user.toString());
    }

基于方法名查询

关键字方法示例JPQL snippet
AndfindByLastnameAndFirstnamewhere x.lastname = ?1 and x.firstname = ?2
OrfindByLastnameOrFirstnamewhere x.lastname = ?1 or x.firstname = ?2
Is, EqualsfindByFirstname,findByFirstnameIs,findByFirstnameEqualswhere x.firstname = ?1
BetweenfindByStartDateBetweenwhere x.startDate between ?1 and ?2
LessThanfindByAgeLessThanwhere x.age < ?1
LessThanEqualfindByAgeLessThanEqualwhere x.age <= ?1
GreaterThanfindByAgeGreaterThanwhere x.age > ?1
GreaterThanEqualfindByAgeGreaterThanEqualwhere x.age >= ?1
AfterfindByStartDateAfterwhere x.startDate > ?1
BeforefindByStartDateBeforewhere x.startDate < ?1
IsNull, NullfindByAge(Is)Nullwhere x.age is null
IsNotNull, NotNullfindByAge(Is)NotNullwhere x.age not null
LikefindByFirstnameLikewhere x.firstname like ?1
NotLikefindByFirstnameNotLikewhere x.firstname not like ?1
StartingWithfindByFirstnameStartingWithwhere x.firstname like ?1 (parameter bound with appended %)
EndingWithfindByFirstnameEndingWithwhere x.firstname like ?1 (parameter bound with prepended %)
ContainingfindByFirstnameContainingwhere x.firstname like ?1 (parameter bound wrapped in %)
OrderByfindByAgeOrderByLastnameDescwhere x.age = ?1 order by x.lastname desc
NotfindByLastnameNotwhere x.lastname <> ?1
InfindByAgeIn(Collection ages)where x.age in ?1
NotInfindByAgeNotIn(Collection ages)where x.age not in ?1
TruefindByActiveTrue()where x.active = true
FalsefindByActiveFalse()where x.active = false
IgnoreCasefindByFirstnameIgnoreCasewhere UPPER(x.firstame) = UPPER(?1)
public interface UserDao extends MongoRepository<User,Integer> {
    User findByUsername(String username);
}
  • 测试
 public void list(){
        User user = userDao.findByUsername("mongo");
        System.out.println(user.toString());
    }

分页

   public void list(){
        Sort sort = Sort.by(Sort.Direction.DESC, "id");
        Pageable pageable = PageRequest.of(0, 2, sort);
        Page<User> page = userDao.findByUsernameLike("mongo",pageable);
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值