对于“Spring利用注解整合Mybatis的方法详解”的攻略,我会进行以下步骤进行讲解:
1. 添加Mybatis和Spring的依赖
在项目的pom.xml中添加以下依赖:
<!-- Mybatis依赖 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.4</version>
</dependency>
<!-- Mybatis-Spring依赖 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.4</version>
</dependency>
<!-- Spring JDBC依赖 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.3.10</version>
</dependency>
2. 创建数据源
在Spring配置文件中定义数据源,例如使用Spring内置的数据源:
<!-- 配置数据源 -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8" />
<property name="username" value="root" />
<property name="password" value="root" />
</bean>
也可以使用其他第三方数据源,例如Druid数据源:
<!-- 配置Druid数据源 -->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
<property name="url" value="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8" />
<property name="username" value="root" />
<property name="password" value="root" />
<property name="initialSize" value="5" />
<property name="minIdle" value="5" />
<property name="maxActive" value="20" />
<property name="filters" value="stat,wall" />
</bean>
3. 配置SqlSessionFactory
在Spring配置文件中配置SqlSessionFactory,例如:
<!-- 配置SqlSessionFactory -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="mapperLocations" value="classpath*:mapper/*.xml" />
<property name="configuration">
<bean class="org.apache.ibatis.session.Configuration">
<property name="mapUnderscoreToCamelCase" value="true" />
</bean>
</property>
</bean>
4. 配置MapperScannerConfigurer
在Spring配置文件中配置MapperScannerConfigurer,例如:
<!-- 配置MapperScannerConfigurer -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.example.mapper" />
</bean>
这里的 com.example.mapper
是指Mapper接口所在的包名。
5. 编写Mapper接口
在项目的Mapper接口中,使用注解的方式来定义SQL语句。例如:
@Mapper
public interface UserMapper {
@Select("SELECT * FROM user WHERE id = #{id}")
User getById(@Param("id") int id);
@Insert("INSERT INTO user(name, age) VALUES(#{name}, #{age})")
int insert(User user);
@Update("UPDATE user SET name = #{name}, age = #{age} WHERE id = #{id}")
int update(User user);
@Delete("DELETE FROM user WHERE id = #{id}")
int deleteById(@Param("id") int id);
}
其中,@Mapper
注解标识该接口为Mybatis的Mapper接口,@Select
、@Insert
、@Update
、@Delete
注解分别标识对应的SQL语句。
示例1
以UserMapper为例,我们可以定义一个UserService,利用Spring的依赖注入,使用UserMapper来操作数据库:
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public User getById(int id) {
return userMapper.getById(id);
}
public int insert(User user) {
return userMapper.insert(user);
}
public int update(User user) {
return userMapper.update(user);
}
public int deleteById(int id) {
return userMapper.deleteById(id);
}
}
这里的 @Service
注解标识该类为Spring的Service组件,@Autowired
注解则标识需要自动注入依赖的UserMapper实例。这样,在使用UserService类的方法时,就可以操作对应的数据库数据了。
示例2
除了使用注解的方式来定义SQL语句,我们也可以使用XML的方式来定义SQL语句。例如:在resources目录下,定义mapper/UserMapper.xml文件,内容如下:
<mapper namespace="com.example.mapper.UserMapper">
<!-- 根据id查询用户 -->
<select id="getById" resultMap="BaseResultMap">
SELECT * FROM user WHERE id = #{id}
</select>
<!-- 添加用户 -->
<insert id="insert" parameterType="User" useGeneratedKeys="true" keyProperty="id">
INSERT INTO user(name, age) VALUES(#{name}, #{age})
</insert>
<!-- 更新用户 -->
<update id="update" parameterType="User">
UPDATE user SET name = #{name}, age = #{age} WHERE id = #{id}
</update>
<!-- 删除用户 -->
<delete id="deleteById">
DELETE FROM user WHERE id = #{id}
</delete>
</mapper>
然后在UserMapper接口中,定义与之对应的方法:
@Mapper
public interface UserMapper {
User getById(int id);
int insert(User user);
int update(User user);
int deleteById(int id);
}
其中,方法名与XML配置中的 id
属性相同,且方法参数与XML配置中的 parameterType
属性相同。在Spring配置文件中,我们需要将UserMapper.xml文件加入到SqlSessionFactory的映射器中:
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="mapperLocations" value="classpath*:mapper/*.xml" />
</bean>
这样,就可以在UserMapper接口中使用这些XML配置的SQL语句进行操作了。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Spring利用注解整合Mybatis的方法详解 - Python技术站