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

网友投稿 252 2022-07-24


目录一、环境准备步骤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

);

插入数据

添加几条实验数据

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.springframework

spring-context

5.2.10.RELEASE

javax.annotation

javax.annotation-api

1.3.2

org.mybatis

mybatis

3.5.9

com.alibaba

druid

1.1.16

mysql

mysql-connector-java

8.0.28

runtime

步骤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核心配置文件

PUBLIC "-//mybatis.org//DTD Config 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-config.dtd">

步骤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中的SqlSessionFactorySpring要管理Mapper接口的扫描

注解整合 MyBatis 的开发步骤:

修改 mybatis 外部配置文件格式为注解格式;业务类使用 @Component 或其衍生注解声明 bean,使用 @Autowired 注入对象;建立配置文件 DataSourceConfig与 MyBatisConfig 类,并将其导入到核心配置类 SpringConfig;开启注解扫描;使用 AnnotationConfigApplicationContext 对象加载配置项。

三、整合步骤

步骤1:导入整合jar包

mybatis-spring是Mybatis提供的Spring与Mybatis整合的jar包

org.springframework

spring-jdbc

5.2.10.RELEASE

org.mybatis

mybatis-spring

1.3.0

步骤2:创建数据源配置类

创建DataSourceConfig类,完成Druid数据源的创建

/*数据源配置类*/

// 加载jdbc.properties配置文件

@PropertySource("classpath:jdbc.properties")

public class DataSourceConfig {

//用SpEl表达式将属http://性注入

@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,返回MapperScannerConGQtmhCmwrAfigurer对象

@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);

}

http://

运行结果如下

说明Spring整合Mybatis成功辣!

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


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:SpringBoot中的配置类(@Configuration)
下一篇:用Java实现简单画板功能
相关文章

 发表评论

暂时没有评论,来抢沙发吧~