Skip to content

Latest commit

 

History

342 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

rabbit-sql-spring-boot-starter

License Maven Version

Language: English | 简体中文

Official website: https://rabbit-sql.com

Introducing

Get Best practice to quick start.

Spring-boot autoconfigure starter based on rabbit-sql, use spring managed transaction as default, use @Transactional annotation or inject com.github.chengyuxing.sql.spring.autoconfigure.Tx (simple wrapper for spring transaction) to use transaction.

  • compatible with spring jdbc transaction;
  • compatible with mybatis, spring-data-jpa and so on to use transaction together;

⚠️ don't use rabbit-sql's built-in Tx, use spring transaction instead.

  • com.github.chengyuxing.sql.transaction.Tx ❌
  • com.github.chengyuxing.sql.spring.autoconfigure.Tx ✅

get more usage about rabbit-sql from document。

Maven dependency

java 8

<dependency>
    <groupId>com.github.chengyuxing</groupId>
    <artifactId>rabbit-sql-spring-boot-starter</artifactId>
    <version>5.3.20</version>
</dependency>

IDEA plugin support

Dynamic sql test:

Xql interface mapper generate:

Plugin marketplace: Rabbit sql and documentation.

Configuration

application.yml (spring.datasource is required):

spring:
  datasource:
    url: jdbc:postgresql://127.0.0.1:5432/postgres
    username: chengyuxing

Inject Baki ready to use:

@Autowired
Baki baki;

Custom configuration

begin with input baki to edit application.yml, a simple example look like:

application.yml

baki:
  xql-file-manager:
    files:
      a: mydir/one.sql
      b: mydir/two.sql

By implements the property interface of BakiDao which annotation @Component or @Bean defined in @Configuration to autowire.

@Component
public class RedisCacheManager implements QueryCacheManager {
    final RedisTemplate<Object, Object> redisTemplate;
  
    public RedisCache(RedisTemplate<Object, Object> redisTemplate) {
        this.redisTemplate = redisTemplate;
    }
  
    @Override
    public @NotNull Stream<DataRow> get(@NotNull String sql, Map<String, ?> args, @NotNull RawQueryProvider provider) {
       ...
    }

Working with Rabbit sql plugin

  1. Remove the xql-file-manager property from application.yml ;
  2. Sql file extension must rename to xql ;
  3. Create xql-file-manager.yml in resource root .../src/main/resources ;
  4. Configure properties.

simple usage

Here is two way to use:

  • Inject core interface Baki ;
  • Springboot application startup class annotated with @XQLMapperScan, create interface mappring to xql file, inject interface e.g ExampleMapper.java
@SpringBootApplication
@XQLMapperScan
public class Startup implements CommandLineRunner {
    public static void main(String[] args) {
        SpringApplication.run(Startup.class, args);
    }

    @Autowired
    Baki baki;

    @Autowired
    ExampleMapper exampleMapper;
  
    @Override
    public void run(String... args) throws Exception {
        try (Stream<DataRow> s = baki.query("&a.region").arg("id", 5).stream()) {
            s.forEach(System.out::println);
        }
    }
}

work with spring transaction:

@Service
public class MyService {

    @Autowired
    Baki baki;

    // com.github.chengyuxing.sql.spring.autoconfigure.Tx
    @Autowired
    Tx tx;
  
    @Transactional
    public void some() {
        ...
    }
  
    public void b(){
      tx.using(()->{
        ...
      });
    }
}

Command line arguments

Dynamic configure the xql config by command line arguments:

  • xql.config.location : dynamic specify the XQLFileManager config location

  • xql.config.constants. :add or replace the constants 's property value which in XQLFileManager

    xql-file-manager.yml

    constants:
      db: dev

    command line argument:

    --xql.config.constants.db=prod

About

a rabbit-sql for spring boot framework starter lib.

Resources

Stars

4 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages