關注能夠查看更多粉絲專享blog~java
前面簡單介紹瞭如何使用docker安裝ElasticSearch、elasticsearch-head、elasticsearch ik和elasticsearch pinyin,今天學習一下MongoDB,都是一些如今用途很是普遍的一些中間件。程序員
ElasticSearch傳送門:web
Spring Boot 使用docker整合ElasticSearchspring
Spring Boot使用docker整合ElasticSearch ik分詞搜索和拼音搜索mongodb
MongoDB是一個文檔數據庫,這意味着它將數據存儲在相似JSON的文檔中。咱們認爲,這是考慮數據的最天然方法,比傳統的行/列模型更具表現力和功能。docker
MongoDB 的主要目標是在鍵/值存儲方式(提供了高性能和高度伸縮性)和傳統的RDBMS 系統(具備豐富的功能)之間架起一座橋樑。shell
// 拉取鏡像
docker pull mongo
// 查看是否拉取成功
docker images
// 運行鏡像,建立容器指定端口27017
docker run -itd --name mongo -p 27017:27017 mongo
// 檢查容器是都啓動成功
docker ps
// 進入容器
docker exec -it mongo mongo
// 建立數據庫
use mydb
// 建立collection
db.createCollection('test')
// 插入數據
db.test.insert({id:1,name:'david',age:18})
複製代碼
前面拉取操做就不截圖了,下面是啓動和設置部分的截圖參考數據庫
咱們使用可視化工具看一下,數據已經插入成功了。<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
複製代碼
application.yml
spring:
data:
mongodb:
uri: mongodb://127.0.0.1:27017/
database: mydb
application:
name: mongo-demo
server:
port: 8080
複製代碼
UserEntity代碼
數組
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Document(collection = "test")
public class UserEntity {
@Id
private Long id;
private String name;
private Integer age;
}
複製代碼
UserRepository 代碼
緩存
import com.example.mongo.entity.UserEntity;
import org.springframework.data.mongodb.repository.MongoRepository;
import java.util.List;
public interface UserRepository extends MongoRepository<UserEntity, Long> {
List<UserEntity> findByNameLike(String name);
}
複製代碼
UserService 代碼
import com.example.mongo.entity.UserEntity;
import java.util.List;
public interface UserService {
void save( UserEntity userEntity );
void save( List<UserEntity> userEntity );
void delete( Long id );
List<UserEntity> findByName( String name );
UserEntity findById( Long id );
}
複製代碼
UserServiceImpl 代碼
import com.example.mongo.entity.UserEntity;
import com.example.mongo.repository.UserRepository;
import com.example.mongo.service.UserService;
import org.springframework.stereotype.Service;
import java.util.List;
import javax.annotation.Resource;
@Service
public class UserServiceImpl implements UserService {
@Resource
private UserRepository userRepository;
@Override
public void save( UserEntity userEntity ) {
userRepository.save(userEntity);
}
@Override
public void save( List<UserEntity> userEntity ) {
userRepository.saveAll(userEntity);
}
@Override
public void delete( Long id ) {
userRepository.deleteById(id);
}
@Override
public List<UserEntity> findByName( String name ) {
return userRepository.findByNameLike(name);
}
@Override
public UserEntity findById( Long id ) {
return userRepository.findById(id).orElse(new UserEntity());
}
}
複製代碼
MongoApplicationTests
@SpringBootTest
class MongoApplicationTests {
@Resource
private UserService userService;
@Test
void save() {
List<UserEntity> users = new ArrayList<>();
for (int i = 1; i <= 20; i++) {
UserEntity user = UserEntity.builder().id((long) i).name("Davids" + i).age(i).build();
users.add(user);
}
userService.save(users);
}
@Test
void find() {
UserEntity byId = userService.findById(1L);
System.out.println(byId);
List<UserEntity> dav = userService.findByName("1");
dav.forEach(System.out::print);
}
@Test
void update() {
userService.save(UserEntity.builder().id(1L).name("Davids edit").age(16).build());
}
@Test
void delete() {
userService.delete(1L);
}
}
複製代碼
MongoDB使用Repository的時候咱們能夠以下圖同樣自由經過方法名來編寫方法好比findByNameLike
就是根據名稱模糊查詢,還挺有趣的,但願你們能學以至用,共勉~