Spring能集成很多的框架,是Spring一个优势功能。
通过集成功能,让开发人员使用其他框架更方便。
集成使用的是Spring IoC
核心技术。
SqlSessionFactory
和dao代理
,把这两个交给容器Spring。在Spring主配置文件中声明对象使用mybatis,需要创建mybatis框架中的某些对象, 使用这些对象,就能使用mybatis提供的功能。
分析: mybatis执行sql语句,需要使用那些对象
1.需要有Dao接口的代理对象, 例如StudentDao接口, 需要一个它的代理对象使用 SqlSession.getMapper(StudentDao.class)
,得到dao
代理对象
2.需要有SqlSessionFactory
创建SqlSessionFactory对象使用openSession()
得到SqlSession
对象执行SqlSession.getMapper()
3.数据源DataSource对象, 使用一个更强大、功能更多的连接池对象代替mybatis自己的PooledDataSource
实现步骤:
1.使用的mysql库, 使用学生表 student2(id int 主键列, 自动增长,name varchar(80), age int)
2.创建maven项目
3.加入依赖gav
spring依赖, mybatis依赖, mysql驱动, junit依赖
mybatis-spring依赖(mybatis网站上提供的,用来在spring项目中,创建mybatis对象)
spring有关事务(提交、回滚)的依赖。
mybatis和spring整合的时候, 事务是自动提交的。
4.创建实体类Student
5.创建Dao接口和mapper文件写sql语句
6.写mybatis主配置文件
7.创建service接口和它的实现类
8.创建spring的配置文件
1)声明数据源DataSource,使用的阿里的Druid连接池
2) 声明SqlSessionFactoryBean类,在这个类内部创建的是SqlSessionFactory对象。
3)声明MapperScannerConfiguration类,在内部创建dao代理对象,
创建的对象都放在spring容器中。
4)声明Service对象,把3)的中dao赋值给service属性
9.测试dao访问数据库
1.创建maven项目
2.MySQL 创建数据库 springdb,新建表 Student
3.在pom.xml中添加依赖
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-contextartifactId>
<version>5.2.5.RELEASEversion>
dependency>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-txartifactId>
<version>5.2.5.RELEASEversion>
dependency>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-jdbcartifactId>
<version>5.2.5.RELEASEversion>
dependency>
<dependency>
<groupId>org.mybatisgroupId>
<artifactId>mybatisartifactId>
<version>3.5.1version>
dependency>
<dependency>
<groupId>org.mybatisgroupId>
<artifactId>mybatis-springartifactId>
<version>1.3.1version>
dependency>
<dependency>
<groupId>mysqlgroupId>
<artifactId>mysql-connector-javaartifactId>
<version>5.1.9version>
dependency>
<dependency>
<groupId>com.alibabagroupId>
<artifactId>druidartifactId>
<version>1.1.12version>
dependency>
添加插件:
<build>
<resources>
<resource>
<directory>src/main/javadirectory>
<includes>
<include>**/*.propertiesinclude>
<include>**/*.xmlinclude>
includes>
<filtering>falsefiltering>
resource>
resources>
build>
4.创建实体类(domain包)---- Stuent
定义属性、列名,生成set、get、toString方法。
5.创建Dao接口(dao包)------StudentDao
写两个方法:
6.不用生成实现类,写mapper文件----mybatis-mapper.xml
7.主配置文件:mybatis-config.xml
8.创建service类
实现接口类:
9.Spring配置文件
Druid 是阿里的开源数据库连接池。是 Java 语言中最好的数据库连接池。
Druid 能够提供强大的监控和扩展功能。
Druid 与其他数据库连接池的最大区别是提供数据库的
官网
使用地址
SqlSession.getMapper(StudentDao.class)
MapperScannerConfigurer
作用是:循环basePackage所表示的包,把包中的每个接口都找到,调用SqlSession.getMapper
。把每个dao接口都创建出dao对象 ,dao代理对象放在容器中。
ApplicationContext ctx = ....
SqlSessionFactory sqlSessionFactory = ctx.getBean("factory");
SqlSession session = sqlSessionFactory.openSession();
for(接口: com.bjpowernode.dao){
接口 对象 = session.getMapper(接口)
springMap.put(接口名的首字母小写, 对象)
}
在dao包下的所有接口创建出dao代理对象放在spring容器中
测试:查看对象名称及类型
新建OrderDao及其配置文件
测试:默认创建对象名为接口名首字母小写
插入数据:
刷新数据库:
10.使用外部属性配置文件
数据库信息有一个单独的属性配置文件.properties
然后在Spring主配置文件中:
<context:property-placeholder location="classpath:jdbc.properties"/>