前言
MyBatis-Spring 会帮助你将 MyBatis 代码无缝地整合到 Spring 中。它将允许 MyBatis 参与到 Spring 的事务管理之中,创建映射器 mapper 和 SqlSession 并注入到 bean 中,以及将 Mybatis 的异常转换为 Spring 的 DataAccessException。 最终,可以做到应用代码不依赖于 MyBatis,Spring 或 MyBatis-Spring。
一、简介
我们在前面的SpringMvc框架下引入Mybatis,所以这里我们需要使用MyBatis-Spring 3.0的版本。
MyBatis-Spring | MyBatis | Spring Framework | Java |
---|---|---|---|
3.0 | 3.5+ | 6.0 | Java 17+ |
2.1 | 3.5+ | 5.x | Java 8+ |
二、安装
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>3.0.3</version>
</dependency>
三、快速上手
1.spring-mvc.xml
<!-- sqlSessionFactory-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
</bean>
2.新建表
CREATE TABLE users (
`id` int NOT NULL,
`name` varchar(255) NULL,
`funkyNumber` int NULL,
`roundingMode` int NULL,
PRIMARY KEY (`id`)
);
3. 新建实体
package org.example.mybatis.domain;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import java.math.RoundingMode;
/**
* Create by zjg on 2024/5/8
*/
@Getter
@Setter
@ToString
@AllArgsConstructor
@NoArgsConstructor
public class User {
private int id;
private String name;
private int funkyNumber;
private RoundingMode roundingMode;
}
4. 新建接口
package org.example.mybatis.mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.example.mybatis.model.User;
/**
* Create by zjg on 2024/5/6
*/
@Mapper
public interface UserMapper {
@Select("select id from users where ${column} = #{value}")
User findByColumn(@Param("column") String column, @Param("value") String value);
}
5. 实例化
<!--实例化-->
<bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
<property name="mapperInterface" value="org.example.mybatis.mapper.UserMapper" />
<property name="sqlSessionFactory" ref="sqlSessionFactory" />
</bean>
6. 控制器
package org.example.mybatis.controller;
import org.example.mybatis.domain.User;
import org.example.mybatis.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* Create by zjg on 2024/5/12
*/
@RestController
@RequestMapping("/mybatis/spring/")
public class MybatisSpringController {
@Autowired
UserMapper userMapper;
@RequestMapping("001")
public void mybatis001() {
User user = userMapper.findByColumn("id", "1");
System.out.println(user);
}
}
7. 结果
User(id=1, name=null, funkyNumber=0, roundingMode=null)