Mybatis是一個(gè)開(kāi)源的Java持久化框架,它可以幫助我們通過(guò)XML或注解的方式來(lái)映射Java對(duì)象和SQL語(yǔ)句之間的關(guān)系,從而使得我們的代碼更加簡(jiǎn)潔易懂。
而Oracle,則是一種非常流行的關(guān)系型數(shù)據(jù)庫(kù),許多企業(yè)都使用Oracle作為自己的數(shù)據(jù)庫(kù)。
在實(shí)際的項(xiàng)目中,我曾經(jīng)使用過(guò)Mybatis對(duì)接Oracle數(shù)據(jù)庫(kù),下面就來(lái)分享一下我的經(jīng)驗(yàn)。
首先,我們需要在pom.xml中添加Mybatis和Oracle的依賴:
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.5</version>
</dependency>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc8</artifactId>
<version>12.2.0.1</version>
</dependency>
</dependencies>
接下來(lái)是配置Mybatis的SqlSessionFactory,我們可以定義一個(gè)MybatisConfig類:
import javax.sql.DataSource;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
@Configuration
public class MybatisConfig {
private final DataSource dataSource;
@Autowired
public MybatisConfig(@Qualifier("dataSource") DataSource dataSource) {
this.dataSource = dataSource;
}
@Bean
public SqlSessionFactory sqlSessionFactory() throws Exception {
SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(dataSource);
sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:mapper/*.xml"));
return sessionFactory.getObject();
}
@Bean
public DataSourceTransactionManager transactionManager() {
return new DataSourceTransactionManager(dataSource);
}
}
這里我們將mapper文件存放在classpath*:mapper/路徑下,通過(guò)PathMatchingResourcePatternResolver來(lái)進(jìn)行掃描。
接下來(lái),我們就可以定義一個(gè)Mapper文件了,比如這里我定義了一個(gè)UserMapper.xml:
<mapper namespace="com.example.mapper.UserMapper">
<select id="getUserById" parameterType="int" resultMap="userResultMap">
select * from users where id = #{id}
</select>
<resultMap id="userResultMap" type="com.example.entity.UserEntity">
<result property="id" column="id"/>
<result property="name" column="name"/>
<result property="age" column="age"/>
</resultMap>
</mapper>
這里我們定義了一個(gè)getUserById的select語(yǔ)句,參數(shù)類型為int,返回值為UserEntity類型;同時(shí)我們還定義了一個(gè)userResultMap,將從數(shù)據(jù)庫(kù)中查詢出來(lái)的結(jié)果映射到UserEntity類中。
最后,我們就可以在業(yè)務(wù)類中使用Mybatis來(lái)查詢數(shù)據(jù)了:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.example.mapper.UserMapper;
import com.example.entity.UserEntity;
@Service
public class UserService {
private final UserMapper userMapper;
@Autowired
public UserService(UserMapper userMapper) {
this.userMapper = userMapper;
}
public UserEntity getUserById(int id) {
return userMapper.getUserById(id);
}
}
這里我們直接注入了UserMapper,然后調(diào)用getUserById方法即可。
綜上所述,Mybatis和Oracle的結(jié)合使用非常簡(jiǎn)單,只需要添加依賴、配置SqlSessionFactory和Mapper文件,就可以在業(yè)務(wù)代碼中方便地使用了。