把mybatis和spring框架集成在一起,像一个框架一样使用。
用的技术是:IOC
为什么ioc能把spring和mybatis集成在一起?是因为ioc能创建对象,可以把mybatis创建的对象交给spring统一创建,开发人员从spring中获取对象。开发人员不用同时面对两个或多个框架了,就面对一个spring就行了。
mybatis使用步骤:我们会使用独立的连接池类替换掉mybatis中自带的连接池,把连接池类也交给spring创建
spring需要创建的对象有:
- 独立的连接池类的对象,使用阿里的druid连接池
- SqlSessionFactory对象
-
创建dao对象
spring和mybatis集成 步骤 1.新建maven项目 2.加入依赖 spring依赖 mybatis依赖 mysql驱动 spring的事务依赖 mybatis和spring集成的依赖(SqlSessionFactory) 3.创建实体类 4.创建dao接口和mapper文件 5.创建mybatis主配置文件 6.创建service接口和实现类,属性是dao 7.创建spring的配置文件:声明mybatis的对象交给spring创建 1.数据源 dataSource 2.SqlSessionFactory 3.Dao对象 4.声明自定义的service 8.创建测试类,获取service对象,通过service调用dao完成数据库的访问
spring配置文件:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!--声明数据源DataSource,作用是连接数据库的--> <bean id="myDataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"> <!--set注入给DruidDataSource提供连接数据库信息--> <property name="url" value="jdbc:mysql://localhost:3306/MySql ?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT"/><!--setUrl注入--> <property name="username" value="root"/> <property name="password" value="131138"/> <property name="maxActive" value="20"/> </bean> <!--声明的是mybatis中提供的SqlSessionFactoryBean类,这个类内部创建SqlSessionFactory--> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <!--set注入,把数据库连接池付给了dataSource--> <property name="dataSource" ref="myDataSource"/> <!--mybatis主配置文件的位置 configLocation属性是Resource类型,读取配置文件 它的赋值,使用的是value,指定路径的文件,使用 classpath:表示文件的位置 --> <property name="configLocation" value="classpath:mybatis.xml"/> </bean> <!--创建dao对象,使用SqlSession的getMapper(studentDao.class) MapperScannerConfigurer:在内部调用getMapper()生产每个dao接口的代理对象。 --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <!--指定sqlSessionFactory对象的id--> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/> <!--指定包名,包名是dao接口所在的包名 MapperScannerConfigurer会扫描这个包中的所有接口,把每个接口都执行一次getMapper方法 得到每个接口的dao对象,创建好的dao对象放入到spring容器中 --> <property name="basePackage" value="cqutlc.dao"/> </bean> <!--声明service--> <bean id="studentService" class="cqutlc.service.Impl.StudentServiceImpl"> <property name="studentDao" ref="studentDao"/> </bean> </beans>
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> <!--日志--> <settings> <setting name="logImpl" value="STDOUT_LOGGING"/> </settings> <!--设置别名--> <typeAliases> <!--name所在包的路径--> <package name="cqutlc.domain"/> </typeAliases> <!--sql mapper映射文件的位置--> <mappers> <!--name是包名--> <package name="cqutlc.dao"/> </mappers> </configuration>
测试下:
package cqutlc; import cqutlc.dao.studentDao; import cqutlc.domain.Student; import cqutlc.service.Impl.StudentServiceImpl; import cqutlc.service.StudentService; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import java.util.List; public class test1 { @Test public void test(){ String config="applicationContext.xml"; ApplicationContext ac=new ClassPathXmlApplicationContext (config); //获取spring容器中dao对象 studentDao studentDao=(studentDao) ac.getBean ("studentDao"); Student student=new Student (1005,"lc","444@qq.com",20); int nums=studentDao.insertStudent (student); //spring和mybatis整合在一起使用,事务是自动提交的,无需执行SqlSession.commit(); System.out.println (nums); } @Test public void test2(){ String config="applicationContext.xml"; ApplicationContext ac=new ClassPathXmlApplicationContext (config); StudentService studentService=(StudentService) ac.getBean ("studentService"); Student student=new Student (1006,"jkl","555@qq.com",20); int nums=studentService.addStudent (student); System.out.println (nums); } @Test public void test3(){ String config="applicationContext.xml"; ApplicationContext ac=new ClassPathXmlApplicationContext (config); StudentService studentService=(StudentService) ac.getBean ("studentService"); List<Student> students =studentService.queryStudents (); for (Student student : students) { System.out.println (student); } } }标签:集成,创建,Spring,mybatis,studentDao,Student,spring,MyBatis,import From: https://blog.csdn.net/m0_52064839/article/details/144648157