在Groovy中使用MyBatis時,你需要遵循以下步驟來處理映射文件:
首先,確保你的項目中已經添加了MyBatis和Groovy的依賴。在build.gradle
文件中添加以下依賴:
dependencies {
implementation 'org.mybatis:mybatis:3.5.7'
implementation 'org.mybatis.groovy:mybatis-groovy:2.0.6'
}
創建一個與映射文件對應的Mapper接口。例如,如果你的映射文件名為UserMapper.xml
,則創建一個名為UserMapper
的接口:
interface UserMapper {
User getUserById(int id)
List<User> getUsers()
}
在resources
目錄下創建一個名為mapper
的文件夾,然后在其中創建與Mapper接口對應的映射文件。例如,創建一個名為UserMapper.xml
的文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.mapper.UserMapper">
<select id="getUserById" resultType="com.example.model.User">
SELECT * FROM user WHERE id = #{id}
</select>
<select id="getUsers" resultType="com.example.model.User">
SELECT * FROM user
</select>
</mapper>
注意namespace
屬性應與Mapper接口的全限定名相匹配。
創建一個名為MyBatisConfig
的Groovy類,用于配置MyBatis。在這個類中,你需要注冊Mapper接口和映射文件:
import org.apache.ibatis.builder.xml.XMLMapperBuilder
import org.apache.ibatis.io.Resources
import org.mybatis.spring.SqlSessionFactoryBean
import org.springframework.beans.factory.annotation.Value
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
import javax.sql.DataSource;
import java.io.IOException
@Configuration
class MyBatisConfig {
@Value("${mybatis.mapper-locations}")
private String mapperLocations
@Bean
SqlSessionFactoryBean sqlSessionFactory(DataSource dataSource) throws IOException {
SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean()
sessionFactory.setDataSource(dataSource)
Resources resources = new Resources(mapperLocations)
for (String resource : resources.getResourceNames()) {
XMLMapperBuilder xmlMapperBuilder = new XMLMapperBuilder(resources.getInputStream(resource), sessionFactory.getConfiguration(), resource, sessionFactory.getSqlFragments())
xmlMapperBuilder.parse()
}
return sessionFactory
}
}
注意@Value("${mybatis.mapper-locations}")
注解用于注入映射文件的位置。你需要在application.properties
或application.yml
文件中配置這個屬性,例如:
mybatis.mapper-locations=classpath:mapper/*.xml
現在你可以在你的服務類中使用SqlSessionTemplate
來執行數據庫操作。首先,注入SqlSessionTemplate
:
import org.mybatis.spring.SqlSessionTemplate
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.stereotype.Service
@Service
class UserService {
@Autowired
SqlSessionTemplate sqlSessionTemplate
UserMapper userMapper
User getUserById(int id) {
return userMapper.getUserById(id)
}
List<User> getUsers() {
return userMapper.getUsers()
}
}
注意SqlSessionTemplate
會自動處理Mapper接口和映射文件之間的關聯。現在你可以使用UserService
類來執行數據庫操作了。