Skip to content

chengyuxing/rabbit-sql-spring-boot-starter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

rabbit-sql-spring-boot-starter

License Maven Version

Language: English | 简体中文

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.0.0</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

Multiple datasource configuration

@Autowired
@Qualifier("slaveBaki")
Baki slaveBaki;

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(()->{
        ...
      });
    }
}

About

a rabbit-sql for spring boot framework starter lib.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages