Skip to content

VonChange/spring-data-jdbc-mybatis

Folders and files

NameName
Last commit message
Last commit date

Latest commit

c8238ad · Feb 3, 2025
Jun 26, 2024
Jun 26, 2024
Jun 26, 2024
Jun 26, 2024
Jun 28, 2024
Jun 26, 2024
Jun 26, 2024
Feb 5, 2024
Mar 20, 2020
Feb 3, 2025
Dec 7, 2024
Feb 6, 2024
Feb 5, 2024
Jan 31, 2024
Feb 6, 2024
Feb 1, 2024
Jan 31, 2024
Jun 25, 2024
Jun 28, 2024

Repository files navigation

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

-- findUserByIds
SELECT  [@id column] FROM user_base 
<where> 
[@@and id in #{idList:in} and user_name like #{userName:like}]
[@and user_name like userName%]
[@and id in idList]
<if test="null!=createTime">  and create_time < #{createTime}  </if>
</where>
userInfoMethodDao.findAll(UserExample.builder()
.userCodeIn(Arrays.asList("u001","u002"))
.userNameLike("ch%")
.createTimeDesc(true).build());

Features

Getting Started with JDBC mybatis

UserInfoRepository.java

public interface UserInfoRepository extends CrudExtendRepository<UserInfoDO, Long> {
    List<UserInfoDO> findByUserCodes(@Param("userCodes") List<String> userCodes);
    List<UserInfoDO> findUserBySearchParam(@Param("param") SearchParam searchParam);
}

define sql in markdown UserInfoRepository.md

need @EnableJdbcRepositories

@SpringBootApplication
@EnableJdbcRepositories
public class JdbcMybatisTestApplication {
    public static void main(String[] args) {
        SpringApplication.run(JdbcMybatisTestApplication.class, args);
    }
}

maven

<!-- spring boot 2.x -->
<dependency>
  <groupId>com.vonchange.common</groupId>
  <artifactId>spring-data-jdbc-mybatis</artifactId>
  <version>${version}</version>
</dependency>
<dependency>
       <groupId>org.springframework.data</groupId>
       <artifactId>spring-data-commons</artifactId>
 </dependency>
 <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-jdbc</artifactId>
 </dependency>

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<UserDTO> queryByUserCode(@Param("userCode") String userCode);

but SpEL support became available with Spring Data JDBC 3.0 RC1