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 |
---|---|---|
And | findByLastnameAndFirstname | where x.lastname = ?1 and x.firstname = ?2 |
Or | findByLastnameOrFirstname | where x.lastname = ?1 or x.firstname = ?2 |
Is, Equals | findByFirstname,findByFirstnameIs,findByFirstnameEquals | where x.firstname = ?1 |
Between | findByStartDateBetween | where x.startDate between ?1 and ?2 |
LessThan | findByAgeLessThan | where x.age < ?1 |
LessThanEqual | findByAgeLessThanEqual | where x.age <= ?1 |
GreaterThan | findByAgeGreaterThan | where x.age > ?1 |
GreaterThanEqual | findByAgeGreaterThanEqual | where x.age >= ?1 |
After | findByStartDateAfter | where x.startDate > ?1 |
Before | findByStartDateBefore | where x.startDate < ?1 |
IsNull, Null | findByAge(Is)Null | where x.age is null |
IsNotNull, NotNull | findByAge(Is)NotNull | where x.age not null |
Like | findByFirstnameLike | where x.firstname like ?1 |
NotLike | findByFirstnameNotLike | where x.firstname not like ?1 |
StartingWith | findByFirstnameStartingWith | where x.firstname like ?1 (parameter bound with appended %) |
EndingWith | findByFirstnameEndingWith | where x.firstname like ?1 (parameter bound with prepended %) |
Containing | findByFirstnameContaining | where x.firstname like ?1 (parameter bound wrapped in %) |
OrderBy | findByAgeOrderByLastnameDesc | where x.age = ?1 order by x.lastname desc |
Not | findByLastnameNot | where x.lastname <> ?1 |
In | findByAgeIn(Collection ages) | where x.age in ?1 |
NotIn | findByAgeNotIn(Collection ages) | where x.age not in ?1 |
True | findByActiveTrue() | where x.active = true |
False | findByActiveFalse() | where x.active = false |
IgnoreCase | findByFirstnameIgnoreCase | where 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);
}