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.1.0.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.1.0</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);
}