> 文档中心 > 注解方式整合Spring和MyBatis

注解方式整合Spring和MyBatis

注解方式整合Spring和MyBatis

  • 写在前面
  • 一、整合工作
      • 1、导入 mybatis 和 spring 整合包
      • 2、创建jdbc.properties文件,配置数据库信息
      • 3、创建JdbcConfig类,配置数据源DataSource
      • 4、创建MyBatisConfig配置类
      • 5、创建 Spring 的配置类
  • 二、测试
      • 1、前期准备
          • 1)User实体类
          • 2)mapper 接口
          • 3)service接口
          • 4)service实现类
      • 2、编写测试方法
      • 3、查询结果

写在前面

  • 在整合 Spring 和 MyBatis 之前,我们需要对 Spring 和 MyBatis 相关知识有一定的了解,不了解的小伙伴也不必担心,可以先查阅博主 Spring 和 MyBatis 两个专栏中的相关文章,有一定了解后再来整合 Spring 和 MyBatis ,理解会更加的深刻。

一、整合工作

1、导入 mybatis 和 spring 整合包

<dependency>    <groupId>org.mybatis</groupId>    <artifactId>mybatis-spring</artifactId>    <version>2.0.7</version></dependency>

除此之外,还需要提供 Spring 框架所需jar包,连接数据库所需jar包,如:

<dependency>    <groupId>org.springframework</groupId>    <artifactId>spring-context</artifactId>    <version>5.3.16</version></dependency><dependency>    <groupId>com.alibaba</groupId>    <artifactId>druid</artifactId>    <version>1.1.17</version></dependency><dependency>    <groupId>mysql</groupId>    <artifactId>mysql-connector-java</artifactId>    <version>8.0.28</version></dependency><dependency>    <groupId>org.springframework</groupId>    <artifactId>spring-jdbc</artifactId>    <version>5.3.16</version></dependency><dependency>    <groupId>org.mybatis</groupId>    <artifactId>mybatis</artifactId>    <version>3.5.9</version></dependency>

2、创建jdbc.properties文件,配置数据库信息

jdbc.driver=com.mysql.cj.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/ssmjdbc.username=rootjdbc.password=123456

3、创建JdbcConfig类,配置数据源DataSource

public class JdbcConfig {    @Value("${jdbc.driver}")    private String driver;    @Value("${jdbc.url}")    private String url;    @Value("${jdbc.username}")    private String username;    @Value("${jdbc.password}")    private String password;    @Bean    public DataSource dataSource(){ DruidDataSource druidDataSource = new DruidDataSource(); druidDataSource.setDriverClassName(driver); druidDataSource.setUrl(url); druidDataSource.setUsername(username); druidDataSource.setPassword(password); return druidDataSource;    }}
  • 因为使用了纯注解开发的方式,所以 DataSource 数据源对象,需要通过方法返回。
  • 不清楚如何使用注解方式管理第三方 bean 对象的小伙伴可以移步到 注解方式管理第三方bean 查看。

4、创建MyBatisConfig配置类

public class MyBatisConfig {    @Bean    public SqlSessionFactoryBean sqlSessionFactory(DataSource dataSource){ SqlSessionFactoryBean ssfb = new SqlSessionFactoryBean(); ssfb.setTypeAliasesPackage("pojo"); ssfb.setDataSource(dataSource); return ssfb;    }    @Bean    public MapperScannerConfigurer mapperScannerConfigurer(){ MapperScannerConfigurer msc = new MapperScannerConfigurer(); msc.setBasePackage("mapper");; return msc;    }}

xml 配置与注解配置间的对应关系
注解方式整合Spring和MyBatis

  • MyBatis 使用流程如下,详细内容见文章 MyBatis 搭建流程。
// 1、读取MyBatis核心配置文件mybatis-config.xmlInputStream input = Resources.getResourceAsStream("mybatis-config.xml");// 2、创建SqlSessionFactoryBuilder对象SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();// 3、创建SqlSessionFactory对象SqlSessionFactory factory = builder.build(input);// 4、创建sqlSession对象,传入true开启事务自动提交SqlSession sqlSession = factory.openSession(true);// 5、获取到UserMapper对象UserMapper mapper = sqlSession.getMapper(UserMapper.class);// 6、测试定义的方法......

5、创建 Spring 的配置类

@Configuration@PropertySource({"jdbc.properties"})@ComponentScan({"mapper","pojo","service"})@Import({JdbcConfig.class,MyBatisConfig.class})public class SpringConfig {}

二、测试

1、前期准备

1)User实体类
public class User {    private Integer id;    private String username;    private Integer age;    private String password;// 省略了构造器方法、set和get方法以及toString方法}
2)mapper 接口
@Repositorypublic interface UserMapper {    @Select("select * from user where id = #{id}")    public User selectById(Integer id);}
  • 定义了一个通过 id 获取用户信息的查询方法。
  • 使用注解完成 SQL 语句的编写映射,不再提供对应的 xml 方法。
3)service接口
public interface UserService {    public User selectById(Integer id);}
4)service实现类
@Servicepublic class UserServiceImpl implements UserService {    @Autowired    UserMapper userMapper;    public User selectById(Integer id) { User user = userMapper.selectById(id); return user;    }}

2、编写测试方法

public class App {    public static void main(String[] args) { AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class); UserService bean = context.getBean(UserService.class); User user = bean.selectById(3); System.out.println(user);    }}
  • 查询user表中,id为3的数据。

3、查询结果

User{id=3, username='qdxorigin', age=22, password='123456'}