Spring利用注解整合Mybatis的方法详解

目录

  • 一、环境准备
    • 步骤1:数据库相关
    • 步骤2:导入jar包
    • 步骤3:创建模型类
    • 步骤4:创建Dao接口和实现类
    • 步骤5:创建Service接口和实现类
    • 步骤6:添加jdbc.properties文件
    • 步骤7:添加Mybatis核心配置文件
    • 步骤8:编写测试程序
  • 二、整合思路分析
    • 三、整合步骤
      • 步骤1:导入整合jar包
      • 步骤2:创建数据源配置类
      • 步骤3:创建Mybatis配置类
      • 步骤4:创建Spring主配置类
      • 步骤5:编写运行程序

    一、环境准备
    步骤1:数据库相关
    建库建表
    创建spring_db数据库,tb_user表
    create database spring_db character set utf8; use spring_db; create table tb_user(id int primary key auto_increment,name varchar(35),age int);

    插入数据
    【Spring利用注解整合Mybatis的方法详解】添加几条实验数据
    INSERT INTO spring_db.tb_user (name, age) VALUES ('bighorn', 18); INSERT INTO spring_db.tb_user (name, age) VALUES ('大角牛', 20); INSERT INTO spring_db.tb_user (name, age) VALUES ('倔强的牛角', 100);


    步骤2:导入jar包
    创建Maven工程,在pom.xml文件导入相关依赖
    org.springframeworkspring-context5.2.10.RELEASEjavax.annotationjavax.annotation-api1.3.2org.mybatismybatis3.5.9com.alibabadruid1.1.16mysqlmysql-connector-java8.0.28runtime


    步骤3:创建模型类
    根据tb_user表字段,创建User模型类
    public class User {private Integer id; private String name; private Integer age; //省略setter和getter方法}


    步骤4:创建Dao接口和实现类
    创建简单的UserDao接口和UserDaoImpl实现类,里面就一个查询方法。
    /*UserDao接口*/public interface UserDao {@Select("select * from tb_user where id = #{id} ")User findById(Integer id); }/*UserDaoImpl实现类*/@Repositorypublic class UserDaoImpl implements UserDao {@Overridepublic User findById(Integer id) {return null; }}


    步骤5:创建Service接口和实现类
    创建简单的UserService接口和UserServiceImpl实现类
    /*UserService接口*/public interface UserService {void findById(Integer id); }/*UserServiceImpl实现类*/@Servicepublic class UserServiceImpl implements UserService {@Autowiredprivate UserDao userDao; @Overridepublic void findById(Integer id) {User user = userDao.findById(id); System.out.println("id为" + id + "的用户姓名:" + user.getName()); System.out.println("id为" + id + "的用户年龄:" + user.getAge()); }}


    步骤6:添加jdbc.properties文件
    resources目录下添加jdbc.properties文件,用于配置数据库连接四要素
    # 注册驱动,可以缺省,会根据url自动识别jdbc.driver=com.mysql.cj.jdbc.Driver# 数据库连接地址jdbc.url=jdbc:mysql://localhost:3306/spring_db# 数据库管理员名称jdbc.username=root# 数据库密码jdbc.password=123456


    步骤7:添加Mybatis核心配置文件


    步骤8:编写测试程序
    public static void main(String[] args) throws IOException {//1.加载mybatis的核心配置文件InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml"); //2.获取 SqlSessionFactory对象SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); //3. 获取SqlSession对象,用它来执行sqlSqlSession sqlSession = sqlSessionFactory.openSession(); //4.获取userMapper接口的代理对象UserDao userDao = sqlSession.getMapper(UserDao.class); //5.执行查询,获取结果UserUser user = userDao.findById(1); System.out.println(user); //6. 释放资源sqlSession.close(); }

    运行结果截图
    说明环境配置没有问题
    Spring利用注解整合Mybatis的方法详解
    文章图片


    二、整合思路分析 Spring利用注解整合Mybatis的方法详解
    文章图片

    以上流程可以全部移交给Spring来处理
    其中有两个重要的整合:
    • Spring要管理MyBatis中的SqlSessionFactory
    • Spring要管理Mapper接口的扫描
    注解整合 MyBatis 的开发步骤:
    • 修改 mybatis 外部配置文件格式为注解格式;
    • 业务类使用 @Component 或其衍生注解声明 bean,使用 @Autowired 注入对象;
    • 建立配置文件 DataSourceConfig与 MyBatisConfig 类,并将其导入到核心配置类 SpringConfig;
    • 开启注解扫描;
    • 使用 AnnotationConfigApplicationContext 对象加载配置项。

    三、整合步骤
    步骤1:导入整合jar包
    mybatis-spring是Mybatis提供的Spring与Mybatis整合的jar包
    org.springframeworkspring-jdbc5.2.10.RELEASEorg.mybatismybatis-spring1.3.0


    步骤2:创建数据源配置类
    创建DataSourceConfig类,完成Druid数据源的创建
    /*数据源配置类*/// 加载jdbc.properties配置文件@PropertySource("classpath:jdbc.properties")public class DataSourceConfig {//用SpEl表达式将属性注入@Value("${jdbc.driver}")private String driver; @Value("${jdbc.url}")private String url; @Value("${jdbc.username}")private String username; @Value("${jdbc.password}")private String password; // 将方法的返回值放置Spring容器中@Bean("druidDataSource")public DruidDataSource getDataSource() {DruidDataSource dataSource = new DruidDataSource(); dataSource.setDriverClassName(driver); dataSource.setUrl(url); dataSource.setUsername(username); dataSource.setPassword(password); return dataSource; }}


    步骤3:创建Mybatis配置类
    主要是让Spring管理两个第三方Bean:SqlSessionFactoryBeanMapperScannerConfigurer
    说明:
    SqlSessionFactoryBean是FactoryBean的一个子类,也是mybatis-spring整合jar包中的类,该类将SqlSessionFactory的创建进行了封装,简化对象的创建,
    MapperScannerConfigurer也是MyBatis提供的整合jar包中的类,用来处理原始mapper映射文件相关配置,加载数据层的Mapper(Dao)接口类。核心属性basePackage,就是用来设置所扫描的包路径
    /*Mybatis配置类*/public class MybatisConfig {//定义bean:SqlSessionFactoryBean,用于产生SqlSessionFactory对象@Beanpublic SqlSessionFactoryBean sqlSessionFactory(@Autowired DataSource dataSource){SqlSessionFactoryBean ssfb = new SqlSessionFactoryBean(); //设置模型类的别名扫描ssfb.setTypeAliasesPackage("com.bighorn.pojo"); //设置数据源ssfb.setDataSource(dataSource); return ssfb; }//定义bean,返回MapperScannerConfigurer对象@Beanpublic MapperScannerConfigurer mapperScannerConfigurer(){MapperScannerConfigurer msc = new MapperScannerConfigurer(); msc.setBasePackage("com.bighorn.dao"); return msc; }}


    步骤4:创建Spring主配置类
    创建SpringConfig类,开启注解扫描、引入外部配置类(数据源配置类和Mybatis配置类)
    /*Spring核心配置类*///配置类注解@Configuration//开启注解扫描功能@ComponentScan("com.bighorn")//引入数据源配置类和Mybatis配置类@Import({DataSourceConfig.class,MybatisConfig.class})public class SpringConfig {}


    步骤5:编写运行程序
    在运行类中,从IoC容器中获取UserService对象,调用其方法
    public static void main(String[] args) throws SQLException {//获取配置类初始化容器ApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class); //从容器中获取UserService对象UserService userService = context.getBean(UserService.class); //调用service的方法userService.findById(3); }

    运行结果如下
    说明Spring整合Mybatis成功辣!
    Spring利用注解整合Mybatis的方法详解
    文章图片

    以上就是Spring利用注解整合Mybatis的方法详解的详细内容,更多关于Spring注解整合Mybatis的资料请关注脚本之家其它相关文章!

      推荐阅读