Solon v2.7.5

::mongo-plus-solon-plugin

</> markdown
<dependency>
    <groupId>com.gitee.anwena</groupId>
    <artifactId>mongo-plus-solon-plugin</artifactId>
    <version>2.0.8.3</version>
</dependency>

1、描述

使用MyBatisPlus的方式,优雅的操作MongoDB,减少学习成本,提高开发效率,无需写MongoDB繁杂的操作指令

如果您正在使用这个项目并感觉良好,请Star支持我们,开源地址:

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;
    }
}