1.創建SpringBoot工程,選擇 Web、MonogDB 依賴,pom如下:
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.4.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> ...... <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> ...... </dependencies> ......
2.配置yml文件
# 服務端口號 server: port: 8081 spring: # 服務名稱 application: name: test-springboot-mongo #數據庫 data: mongodb: uri: mongodb://localhost:27017/testmongo
3.創建配置類,開啟事務
@Configuration public class TransactionConfig { @Bean MongoTransactionManager transactionManager(MongoDbFactory factory){ return new MongoTransactionManager(factory); } }
4.創建Entity實體類
public class BaseEntity { @Id private String id; public String getId() { return id; } public void setId(String id) { this.id = id; } }
@Document public class User extends BaseEntity { private String userName; private String passWord; @DBRef private UserInfo userInfo; public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPassWord() { return passWord; } public void setPassWord(String passWord) { this.passWord = passWord; } public UserInfo getUserInfo() { return userInfo; } public void setUserInfo(UserInfo userInfo) { this.userInfo = userInfo; } }
@Document public class UserInfo extends BaseEntity { private int age; private String nickName; public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getNickName() { return nickName; } public void setNickName(String nickName) { this.nickName = nickName; } }
5.創建service
@Service public class UserService { @Resource MongoTemplate mongotemplate; public List<User> getAllUser(){ return mongotemplate.findAll(User.class); } @Transactional public boolean addUser(User user, UserInfo userInfo){ user.setUserInfo(userInfo); mongotemplate.save(userInfo); // int a = 1/0; //事務測試代碼 mongotemplate.save(user); return true; } }
6.創建controller
@RestController public class UserController { @Resource UserService userService; @RequestMapping(value = "/getAllUser") public List<User> getAllUser(){ return userService.getAllUser(); } @RequestMapping(value = "/addUser") public boolean addUser(User user, UserInfo userInfo){ userService.addUser(user, userInfo); return true; } }
7.運行 SpringBootApplication 啟動服務,在瀏覽器中輸入 " http://localhost:8081/addUser?userName=z3&passWord=123&age=12&nickName=zhangsan " 測試
@SpringBootApplication public class TestspringmongoApplication { public static void main(String[] args) { SpringApplication.run(TestspringmongoApplication.class, args); } }
8.注:以上為MongoTemplate方式,MongoTemplate和MongoRepository方式都與Spring整合SpringDataMongoDB相同