当前位置: 首页 > news >正文

Spring的注解开发-注解方式整合MyBatis代码实现

  • 之前使用xml方式整合了MyBatis,文章导航:Spring整合第三方框架-MyBatis整合Spring实现-CSDN博客
    现在使用注解的方式无非是就是将xml标签替换为注解,将xml配置文件替换为配置类而已。
    • 非自定义配置类
    • package com.example.Configure;
      
      import com.alibaba.druid.pool.DruidDataSource;
      import com.example.Beans.otherBeans;
      import org.mybatis.spring.SqlSessionFactoryBean;
      import org.mybatis.spring.annotation.MapperScan;
      import org.springframework.beans.factory.annotation.Value;
      import org.springframework.context.annotation.*;
      
      import javax.sql.DataSource;
      
      @Configuration // todo 标注当前类是一个配置类(替代配置文件)、其中包含@Compoent注解
      // <context:component-scan base-package="com.example"/>
      @ComponentScan({"com.example"})
      
      // <context:property-placeholder location="jdbc.properties"/>
      @PropertySource("jdbc.properties")
      
      // <import resource=""/>
      @Import(otherBeans.class)
      
      // Mapper接口扫描
      @MapperScan("com.example.Mapper")
      public class SpringConfig {
          @Bean  // 将非自定义的bean对象交给Spring容器管理
          public DataSource dataSource(@Value("${jdbc.driver}") String driver,
                                       @Value("${jdbc.url}") String url,
                                       @Value("${jdbc.username}") String username,
                                       @Value("${jdbc.password}") String password) {
              DruidDataSource dataSource = new DruidDataSource();
              dataSource.setDriverClassName(driver);
              dataSource.setUrl(url);
              dataSource.setUsername(username);
              dataSource.setPassword(password);
              return dataSource;
          }
      
          @Bean
          public SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource) {
              SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
              sqlSessionFactoryBean.setDataSource(dataSource);
              return sqlSessionFactoryBean;
          }
      
      
      }
      

                与数据库建立连接的同时,扫描指定的mapper接口,实现实现数据库的操作

  • mapper接口类以及其对应的xml配置文件
    • package com.example.Mapper;
      
      import com.example.pojo.Emp;
      import org.springframework.stereotype.Repository;
      
      import java.util.List;
      
      @Repository
      public interface EmpMapper {
          List<Emp> findAll();
      }
      
    • <?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.EmpMapper">
          <select id="findAll" resultType="com.example.pojo.Emp">
              select *
              from tb_emp;
          </select>
      </mapper>
    • 业务层调用持久层

    • package com.example.Service.Impl;
      
      
      import com.example.Mapper.EmpMapper;
      import com.example.Service.UserService;
      import com.example.pojo.Emp;
      import org.springframework.beans.factory.annotation.Autowired;
      import org.springframework.stereotype.Service;
      
      import java.util.List;
      
      @Service("userService")
      public class UserServiceImpl implements UserService {
          @Autowired
          private EmpMapper empMapper;
      
          @Override
          public void show() {
              List<Emp> empList = empMapper.findAll();
              for (Emp emp : empList) {
                  System.out.println(emp);
              }
          }
      
      
      }
      

      上述中直接注入的mapper接口类

    • 测试代码

    • package com.example.Test;
      
      
      import com.example.Configure.SpringConfig;
      import com.example.Service.UserService;
      import org.springframework.context.ApplicationContext;
      import org.springframework.context.annotation.AnnotationConfigApplicationContext;
      
      public class TestApplicationContext {
          public static void main(String[] args) {
              // 注解方式加载Spring容器的核心配置类
              ApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class);
              UserService bean = context.getBean(UserService.class);
              bean.show();
          }
      }
      
      
    • 运行结果如下:


    •  

  • 小结

  • 用注解的方式整合第三方框架,以MyBatis框架为例,首先得与数据库建立连接的操作由配置文件转换为配置类,使用@Bean注解,Spring框架会自动调用这两个方法,并生成对应的bean对象交给Spring容器管理,与数据库成功建立连接。然后在业务层直接注入Mapper接口对象,调用其中的方法,实现对于数据库的操作。

相关文章:

  • 辅助驾驶功能开发-测试篇(2)-真值系统介绍
  • 宝塔反代openai官方API接口详细教程,502 Bad Gateway问题解决
  • 【IPC 通信】信号处理接口 Signal API(6)
  • 点击router-link时候会发生什么?
  • 分类预测 | MATLAB实现WOA-FS-SVM鲸鱼算法同步优化特征选择结合支持向量机分类预测
  • 步力宝科技爆款产品定位,开创智能物联网新商业
  • 博客无限滚动加载(html、css、js)实现
  • 简化数据库操作:探索 Gorm 的约定优于配置原则
  • javaWeb学生信息管理
  • 读书笔记|《数据压缩入门》—— 柯尔特·麦克安利斯 亚历克斯·海奇
  • 网盘搜索引擎:点亮知识星空,畅享数字宝藏!
  • 【NLP的python库(03/4) 】: 全面概述
  • netty 拆包/粘包
  • 冥想第九百二十九天
  • 获取网卡上的IP、网关及DNS信息,获取最佳路由,遍历路由表中的条目(附源码)
  • 保姆级 -- Zookeeper超详解
  • watch()监听vue2项目角色权限变化更新挂载
  • 【图论C++】树的重心——教父POJ 3107(链式前向星的使用)
  • 为什么炒股人更爱融资?融券交易背后的风险与获利机会
  • Springboot实现websocket(连接前jwt验证token)
  • 首部关于民营经济发展的基础性法律,有何亮点?专家解读
  • 人民日报社论:坚定信心、奋发有为、创新创造——写在“五一”国际劳动节
  • 国家医保局副局长颜清辉调任人社部副部长
  • “五一”假期预计全社会跨区域人员流动量超14亿人次
  • 许峰已任江苏省南京市副市长
  • 美国参议院投票通过戴维·珀杜出任美国驻华大使