# spring-data-jdbc-mybatis
**Repository Path**: vonchange/spring-data-jdbc-mybatis
## Basic Information
- **Project Name**: spring-data-jdbc-mybatis
- **Description**: spring data jdbc extend mybatis dynamic query
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 43
- **Forks**: 7
- **Created**: 2020-03-18
- **Last Updated**: 2025-04-11
## Categories & Tags
**Categories**: Uncategorized
**Tags**: Spring-data-jdbc, jdbc-template, MyBatis, JPA, ORM
## README
# spring-data-jdbc-mybatis

[
](https://github.com/VonChange/spring-data-jdbc-mybatis)
**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