::mongo-plus-solon-plugin
<dependency>
<groupId>com.gitee.anwena</groupId>
<artifactId>mongo-plus-solon-plugin</artifactId>
<version>最新版本</version>
</dependency>
1、描述
使用MyBatisPlus的方式,优雅的操作MongoDB,减少学习成本,提高开发效率,无需写MongoDB繁杂的操作指令
如果您正在使用这个项目并感觉良好,请Star支持我们,开源地址:
- gitee: https://gitee.com/anwena/mongo-plus
- github: https://github.com/anwena/MongoPlus
- 官网:https://www.mongoplus.cn
2、优点
- 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑
- 损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作
- 强大的 CRUD 操作:通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强* 大的条件构造器,满足各类使用需求
- 支持 Lambda 形式调用:通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错
- 支持主键自动生成:支持多达 4 种主键策略(内含分布式唯一 ID 生成器 - Sequence),可自由* 配置,完美解决主键问题
- 自动装配对solon的一些配置,开箱即用
- 提供MongoDB的声明式事务,使用更加便捷
- 支持无实体类情况下的操作
更多功能请查看官网:(https://www.mongoplus.cn)
3、配置示例
配置分格有两种:1,将配置内容独立为一个文件;2,将配置做为主配置的内容(注意 "|" 符号)。具体的配置内容,参考官网内容(https://www.mongoplus.cn)。
mongo-plus:
data:
mongodb:
host: 127.0.0.1 #ip
port: 27017 #端口
database: test #数据库名
username: test #用户名,没有可不填
password: test #密码,同上
authenticationDatabase: admin #验证数据库
connectTimeoutMS: 50000 #在超时之前等待连接打开的最长时间(以毫秒为单位)
log: true
4、应用示例
提供两种方式,一种为继承IService和ServiceImpl,和直接注入MongoPlusMapMapper类,后者返回为Map格式
首先需要一个实体类
@Data
public class User {
@ID //使用ID注解,标注此字段为MongoDB的_id,或者继承BaseModelID类,可指定自动生成代码类型
private String id;
private String name;
private Long age;
private String email;
}
其次需要一个Service接口和实现类
ps: 使用一个类继承ServiceImpl也可以
public interface MongoServiceImpl extends IService<User> {
}
public class MongoServiceImpl extends ServiceImpl<User> implements MongoService {
}
至此,已经可以对MongoDB进行快速的增删改查操作了
@Controller
public class UserController {
/**
* 使用普通继承的方式
*/
@Inject
private UserService userService;
/**
* 使用注入MongoPlusMapMapper的方式
*/
@Inject
private MongoPlusMapMapper mongoPlusMapMapper;
@Get
@Mapping("/findAllUser")
public List<User> findAllUser(){
List<Map<String, Object>> mapList = mongoPlusMapMapper.list("user");
mapList.forEach(System.out::print);
List<User> userList = userService.lambdaQuery().list();
userList.forEach(System.out::print);
return userList;
}
@Get
@Mapping("/addUser")
public Boolean addUser(){
Boolean save = mongoPlusMapMapper.save("user",
new HashMap<String,Object>(){{
put("userName","我要测试我要测试");
put("userStatus",1);
put("age",21);
put("role",new HashMap<String,Object>(){{
put("roleName","普通用户");
put("roleIntroduce","没啥权限");
}});
}});
System.out.println(save ? "添加成功" : "添加失败");
return save;
}
}