Solon

::stream-plugin-mp-solon

</> markdown
<dependency>
    <groupId>org.dromara.stream-query</groupId>
    <artifactId>stream-plugin-mp-solon</artifactId>
    <version>${stream-query-version}</version>
</dependency>

1、描述

ORM拓展插件,完全摆脱Mapper的MybatisPlus体验,提供查询后的stream处理封装和更简化的stream操作

2、强调多数据源支持

  • 强调多数据源的配置。例:demo.db1...,demo.db2...

  • 强调带 name 的 DataSource Bean

  • 强调使用 @Db("name") 的数据源注解

由于是mp的拓展,所以这里可以参考mp插件的文档,同时引入了本插件后不必再引入mp相关插件

3、数据源配置

# 配置数据源
demo.db1:
  schema: rock
  jdbcUrl: jdbc:mysql://localhost:3306/rock?useUnicode=true&characterEncoding=utf8&autoReconnect=true&rewriteBatchedStatements=true
  driverClassName: com.mysql.cj.jdbc.Driver
  username: root
  password: 123456
  
# 在Mybatis的配置基础上进行stream-query配置
mybatis.db1:
  stream-query:
    basePackages: #声明需要自动生成mapper的实例类包路径列表,如果列表为空则默认给所有加了@TableName的实体类生成mapper
      - "org.dromara.streamquery.stream.plugin.solon.pojo.po"
    classes: #指定需要生成mapper的实体类
      - org.dromara.streamquery.stream.plugin.solon.pojo.po.UserInfo
    annotation: org.dromara.streamquery.stream.plugin.solon.engine.constant.GenerateMapper #为添加了该注解的实体类生成mapper
    interfaceClass: org.dromara.streamquery.stream.plugin.solon.engine.mapper.IGenerateMapper #为实现了该接口的实体类生成mapper
            
#
#提示:使用 "**" 表达式时,范围要尽量小。不要用 "org.**"、"com.**" 之类的开头,范围太大了,会影响启动速度。
#

4、代码应用

//配置数据源
@Configuration
public class Config {
    //此下的 db1 与 mybatis.db1 将对应在起来 //可以用 @Db("db1") 注入mapper
    //typed=true,表示默认数据源。@Db 可不带名字注入 
    @Bean(name = "db1", typed = true)
    public DataSource db1(@Inject("${demo.db1}") HikariDataSource ds) {
        return ds;
    }
    

}

//配置好数据源和stream-query配置后可以直接使用相关功能
  @Test
  void testSaveFewSql() {
    UserInfo entity = new UserInfo();
    entity.setName("cat");
    entity.setAge(20);
    entity.setEmail("myEmail");
    UserInfo userInfo = new UserInfo();
    userInfo.setName("ruben");
    List<UserInfo> list = Arrays.asList(userInfo, entity);
    //无需创建mapper,直接调用saveFewSql
    boolean isSuccess = Database.saveFewSql(list);
    Assertions.assertTrue(isSuccess);
    Assertions.assertEquals(7, Database.count(UserInfo.class));

    Assertions.assertFalse(Database.saveFewSql(Lists.empty()));
  }

具体可参考:

stream-query官网