Getting Started

This chapter will show you in a few steps how to install and setup MyBatis-CDI.

Installation

To use the MyBatis-CDI module, you just need to include the mybatis-cdi-2.0.2-SNAPSHOT.jar file and its dependencies in the classpath.

If you are using Maven just add the following dependency to your pom.xml:

<dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis-cdi</artifactId>
  <version>2.0.2-SNAPSHOT</version>
</dependency>

Quick Setup

First, switch CDI on by adding a beans.xml file to your META-INF directory.

Next, to use MyBatis with CDI you need to provide at least two things: an SqlSessionFactory and a CDI bean that requires a MyBatis mapper injection.

Create a producer method that returns an application scoped SqlSessionFactory annotated with @SessionFactoryProvider:

import jakarta.enterprise.inject.Produces;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.cdi.SessionFactoryProvider;
        
public class SqlSessionFactoryProvider {

  @Produces
  @ApplicationScoped
  @SessionFactoryProvider
  public SqlSessionFactory produceFactory() {
    SqlSessionFactory factory = create the factory instance ....
    return factory;
  }

}

Assume you have a mapper interface defined like the following (Note that the mapper must be annotated with @Mapper):

@Mapper
public interface UserMapper {
  @Select("SELECT * FROM users WHERE id = #{userId}")
  User getUser(@Param("userId") String userId);
} 

You can inject it into a CDI bean just as any other dependency using @Inject :

import jakarta.inject.Inject;
        
public class FooServiceImpl implements FooService {

@Inject UserMapper userMapper;

public User doSomeStuff(String userId) {
  return this.userMapper.getUser(userId);
}