Mybatis是一個開源的Java持久化框架,它可以幫助我們通過XML或注解的方式來映射Java對象和SQL語句之間的關系,從而使得我們的代碼更加簡潔易懂。
而Oracle,則是一種非常流行的關系型數據庫,許多企業都使用Oracle作為自己的數據庫。
在實際的項目中,我曾經使用過Mybatis對接Oracle數據庫,下面就來分享一下我的經驗。
首先,我們需要在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>
接下來是配置Mybatis的SqlSessionFactory,我們可以定義一個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/路徑下,通過PathMatchingResourcePatternResolver來進行掃描。
接下來,我們就可以定義一個Mapper文件了,比如這里我定義了一個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>
這里我們定義了一個getUserById的select語句,參數類型為int,返回值為UserEntity類型;同時我們還定義了一個userResultMap,將從數據庫中查詢出來的結果映射到UserEntity類中。
最后,我們就可以在業務類中使用Mybatis來查詢數據了:
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,然后調用getUserById方法即可。
綜上所述,Mybatis和Oracle的結合使用非常簡單,只需要添加依賴、配置SqlSessionFactory和Mapper文件,就可以在業務代碼中方便地使用了。
上一篇python畫多條線段
下一篇ajax下拉框二級聯動6