这篇文章主要为大家介绍了Spring如何利用注解整合MyBatis,文中的示例代码讲解详细,对我们学习有一定的参考价值,需要的小伙伴可以参考一下
一、环境准备
步骤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
);
插入数据
添加几条实验数据
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文件导入相关依赖
<dependencies>
<dependency>
<!--springframework框架-->
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.10.RELEASE</version>
</dependency>
<!--JDK9 以后需要导的注解依赖-->
<dependency>
<groupId>javax.annotation</groupId>
<artifactId>javax.annotation-api</artifactId>
<version>1.3.2</version>
</dependency>
<!--Mybatis依赖-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.9</version>
</dependency>
<!--Druid连接池-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.16</version>
</dependency>
<!--mysql 驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.28</version>
<scope>runtime</scope>
</dependency>
</dependencies>
步骤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实现类*/
@Repository
public class UserDaoImpl implements UserDao {
@Override
public User findById(Integer id) {
return null;
}
}
步骤5:创建Service接口和实现类
创建简单的UserService接口和UserServiceImpl实现类
/*UserService接口*/
public interface UserService {
void findById(Integer id);
}
/*UserServiceImpl实现类*/
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserDao userDao;
@Override
public 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核心配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!--读取properties配置文件-->
<properties resource="jdbc.properties"/>
<!--别名扫描的包路径-->
<typeAliases>
<package name="com.bighorn.pojo"/>
</typeAliases>
<!--配置数据源-->
<environments default="mysql">
<environment id="mysql">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<!--映射文件扫描包路径-->
<mappers>
<package name="com.bighorn.dao"/>
</mappers>
</configuration>
步骤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对象,用它来执行sql
SqlSession sqlSession = sqlSessionFactory.openSession();
//4.获取userMapper接口的代理对象
UserDao userDao = sqlSession.getMapper(UserDao.class);
//5.执行查询,获取结果User
User user = userDao.findById(1);
System.out.println(user);
//6. 释放资源
sqlSession.close();
}
运行结果截图
说明环境配置没有问题
二、整合思路分析
以上流程可以全部移交给Spring来处理
其中有两个重要的整合:
- Spring要管理MyBatis中的SqlSessionFactory
- Spring要管理Mapper接口的扫描
注解整合 MyBatis 的开发步骤:
- 修改 mybatis 外部配置文件格式为注解格式;
- 业务类使用 @Component 或其衍生注解声明 bean,使用 @Autowired 注入对象;
- 建立配置文件 DataSourceConfig与 MyBatisConfig 类,并将其导入到核心配置类 SpringConfig;
- 开启注解扫描;
- 使用 AnnotationConfigApplicationContext 对象加载配置项。
三、整合步骤
步骤1:导入整合jar包
mybatis-spring是Mybatis提供的Spring与Mybatis整合的jar包
<dependency>
<!--Spring操作数据库需要该jar包-->
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.2.10.RELEASE</version>
</dependency>
<dependency>
<!--
Mybatis提供的Spring与Mybatis整合的jar包
-->
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.0</version>
</dependency>
步骤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:SqlSessionFactoryBean
、MapperScannerConfigurer
说明:
SqlSessionFactoryBean是FactoryBean的一个子类,也是mybatis-spring
整合jar包中的类,该类将SqlSessionFactory的创建进行了封装,简化对象的创建,
MapperScannerConfigurer也是MyBatis提供的整合jar包中的类,用来处理原始mapper映射文件
相关配置,加载数据层的Mapper(Dao)接口类。核心属性basePackage
,就是用来设置所扫描的包路径
/*Mybatis配置类*/
public class MybatisConfig {
//定义bean:SqlSessionFactoryBean,用于产生SqlSessionFactory对象
@Bean
public SqlSessionFactoryBean sqlSessionFactory(@Autowired DataSource dataSource){
SqlSessionFactoryBean ssfb = new SqlSessionFactoryBean();
//设置模型类的别名扫描
ssfb.setTypeAliasesPackage("com.bighorn.pojo");
//设置数据源
ssfb.setDataSource(dataSource);
return ssfb;
}
//定义bean,返回MapperScannerConfigurer对象
@Bean
public 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的方法详解
基础教程推荐
- Java并发编程进阶之线程控制篇 2023-03-07
- ConditionalOnProperty配置swagger不生效问题及解决 2023-01-02
- java实现多人聊天系统 2023-05-19
- Java实现线程插队的示例代码 2022-09-03
- Java实现查找文件和替换文件内容 2023-04-06
- JDK数组阻塞队列源码深入分析总结 2023-04-18
- java基础知识之FileInputStream流的使用 2023-08-11
- Java文件管理操作的知识点整理 2023-05-19
- Java数据结构之对象比较详解 2023-03-07
- springboot自定义starter方法及注解实例 2023-03-31