https://github.com/vonchange/spring-data-jdbc-mybatis
spring data jdbc extend mybatis dynamic sql
https://github.com/vonchange/spring-data-jdbc-mybatis
crud jdbc-template jdbctemplate jpa mybaits orm spring spring-data-jdbc spring-jdbc
Last synced: 9 months ago
JSON representation
spring data jdbc extend mybatis dynamic sql
- Host: GitHub
- URL: https://github.com/vonchange/spring-data-jdbc-mybatis
- Owner: VonChange
- License: apache-2.0
- Created: 2020-03-01T15:14:47.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2025-02-03T05:17:42.000Z (over 1 year ago)
- Last Synced: 2025-08-05T19:12:37.430Z (10 months ago)
- Topics: crud, jdbc-template, jdbctemplate, jpa, mybaits, orm, spring, spring-data-jdbc, spring-jdbc
- Language: Java
- Homepage: http://www.vonchange.com
- Size: 1.01 MB
- Stars: 100
- Watchers: 1
- Forks: 15
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# spring-data-jdbc-mybatis

[
](https://github.com/VonChange/spring-data-jdbc-mybatis)
[简体中文](./README.zh-CN.md)
**spring data jdbc extend mybatis dynamic sql**
## What Is This?
* It aims at being conceptually easy. In order to achieve this it does NOT offer caching, lazy loading,QueryDSL, write behind or many other features of JPA. This makes a simple, limited, opinionated ORM.
* use mybatis dynamic SQL(not dependency mybatis),it is good for complex SQL
* SQL is written in Markdown
[UserInfoRepository.md](spring-data-jdbc-mybatis-demo%2Fsrc%2Fmain%2Fresources%2Fsql%2FUserInfoRepository.md)
```sql
-- findUserByIds
SELECT [@id column] FROM user_base
[@@and id in #{idList:in} and user_name like #{userName:like}]
[@and user_name like userName%]
[@and id in idList]
and create_time < #{createTime}
```
## see [easy-dynamic-sql.md](easy-dynamic-sql.md)
* extend findByExample,findByBeanProperties [UserExample.java](spring-data-jdbc-mybatis-demo%2Fsrc%2Ftest%2Fjava%2Fcom%2Fvonchange%2Fnine%2Fdemo%2Fdao%2FUserExample.java)
```
userInfoMethodDao.findAll(UserExample.builder()
.userCodeIn(Arrays.asList("u001","u002"))
.userNameLike("ch%")
.createTimeDesc(true).build());
```
## Features
* method name query [method-name-query.md](method-name-query.md)
* @Id @Table @Column
* recommend CrudExtendRepository not CrudRepository,because [curd-repository.md](curd-repository.md)
* not support @Query or QueryDSL, sql must be written in markdown
* batch update [bach-update.md](bach-update.md)
* [multi-datasource.md](multi-datasource.md)
## Getting Started with JDBC mybatis
[UserInfoRepository.java](spring-data-jdbc-mybatis-demo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fvonchange%2Fnine%2Fdemo%2Fdao%2FUserInfoRepository.java)
```java
public interface UserInfoRepository extends CrudExtendRepository {
List findByUserCodes(@Param("userCodes") List userCodes);
List findUserBySearchParam(@Param("param") SearchParam searchParam);
}
```
> define sql in markdown [UserInfoRepository.md](spring-data-jdbc-mybatis-demo%2Fsrc%2Fmain%2Fresources%2Fsql%2FUserInfoRepository.md)
> need @EnableJdbcRepositories
```java
@SpringBootApplication
@EnableJdbcRepositories
public class JdbcMybatisTestApplication {
public static void main(String[] args) {
SpringApplication.run(JdbcMybatisTestApplication.class, args);
}
}
```
> maven
```
com.vonchange.common
spring-data-jdbc-mybatis
${version}
org.springframework.data
spring-data-commons
org.springframework.boot
spring-boot-starter-jdbc
```
## official spring data jdbc extend mybatis dynamic sql
see spring-data-jdbc-demo
configuration
```
@Configuration
public class MybatisQuerySupportConfig {
@Bean
public NamedParameterJdbcOperations namedParameterJdbcOperations(DataSource dataSource) {
return new MybatisJdbcTemplate(dataSource) {@Override protected Dialect dialect() {return new MySQLDialect();}};
}
}
```
use
```
@Query("user.queryByUserCode")
List queryByUserCode(@Param("userCode") String userCode);
```
but SpEL support became available with Spring Data JDBC 3.0 RC1