Spring和MyBatis框架整合
Spring集成MyBatis
使用MyBatis,需要创建MyBatis框架中的某些对象,使用这些对象,就能使用mybatis提供的功能了。
- 需要有Dao接口的代理对象,例如StudentDao接口,需要一个他的代理对象,使用
SqlSession.getMapper(StudentDao.class)
,得到dao代理对象。 - 需要由SqlSessionFactory,创建SqlSessionFactory才能使用openSession得到SqlSession对象。
- 在处理大型项目的时候,MyBatis提供的数据源(PooledDataSource)难以满足项目需求,通常会更换一个连接池对象。
Spring容器 (面对Spring开发,从Spring中获得对象) |
---|
DataSource对象,数据源 SqlSessionFactory对象 dao接口的代理对象1~n 注:以上对象都由Spring使用IOC创建好对象。 |
实现步骤:
使用msyql数据库,使用学生表student(id int 主键列 自动增长,
name varchar(80) ,
age int )。
创建maven项目
加入依赖:spring依赖,mybatis依赖,mysql驱动,junit依赖,mybatis-spring依赖(mybatis网站上提供的,用来在spring项目中创建mybatis对象),spring事务相关的依赖。
创建实体类Student
创建Dao接口和Mapper文件写SQL语句
写mybatis主配置文件
创建service接口其实现类
创建spring的配置文件
- 声明数据源DataSource,使用阿里的Druid连接池
- 声明SqlSessionFactoryBeanlei,在这个类内部创建的是SqlSessionFactory对象
- 声明MapperScannerConfiguration类,在内部创建dao代理对象,创建的对象都放在spring容器中。
- 声明service对象,将上一步中的dao赋值给service属性,让其进行业务层的操作
测试dao访问数据库
操作
自己建表,三个属性(id(主键),name,age)
创建maven项目(IDEA)
具体依赖:
junit (单元测试)
spring-context (spring依赖)
spring-tx ,spring-jdbc(spring事务的依赖)
mybatis(mybatis依赖)
mybatis-spring(mybatis和spring集成的依赖)
mysql-connector-java(msyql驱动)
druid(阿里连接池)
<!-- resource插件 -->
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>
创建实体类
public class Student {
private Integer id;
private String name;
private Integer age; public Integer getId() {
return id;
} @Override
public String toString() {
return "Student{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
'}';
} public void setId(Integer id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public Integer getAge() {
return age;
} public void setAge(Integer age) {
this.age = age;
}
}
创建Dao接口和mapper文件
public interface StudentDao { int insertStudent(Student student); List<Student> selectStudents(); }
<!-- -->
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--定义为当前的命名空间-->
<mapper namespace="com.wang.dao.StudentDao"> <insert id="insertStudent">
insert into student(name,age) values(#{name},#{age})
</insert> <select id="selectStudents" resultType="com.wang.domain.Student">
select id,name,age from student
</select> </mapper>
写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> <typeAliases>
<package name="com.wang.domain"/>
</typeAliases> <!--MyBatis的SQL语句和映射配置文件,指定其他Mapper文件的位置-->
<!-- 找到相应的sql语句-->
<mappers>
<mapper resource="com/wang/dao/StudentDao.xml"/>
</mappers>
</configuration>
创建service接口和实现类
public interface StudentService { int addStudent(Student student); List<Student> queryStudent(); }
public class StudentServiceImpl implements StudentService { private StudentDao studentDao; public void setStudentDao(StudentDao studentDao){
this.studentDao = studentDao;
} @Override
public int addStudent(Student student) {
int i = studentDao.insertStudent(student);
return i;
} @Override
public List<Student> queryStudent() {
List<Student> students = studentDao.selectStudents();
return students;
}
}
创建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"> <!-- 声明数据源-->
<bean id="myDataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
<property name="url" value="jdbc:mysql://localhost:3306/learnjdbc" />
<property name="username" value="root" />
<property name="password" value="wang" />
</bean> <!-- 声明SqlSessionFactoryBean-->
<bean id="factory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 指定数据源 -->
<property name="dataSource" ref="myDataSource"/> <!-- 指定MyBatis主配置文件 -->
<property name="configLocation" value="classpath:MyBatisConfig.xml" /> </bean> <!-- 声明MapperScannerConfiguration
SqlSession.getMapper(StudentDao.class);
MapperScannerConfigurer作用是:
循环basePackage所表示的包,把保重的每一个接口都找到,调用SqlSession.getMapper()把每个
dao接口都创建出dao对象,dao代理对象放在容器中。
-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!-- 指定SqlSessionFactory对象名称 -->
<property name="sqlSessionFactoryBeanName" value="factory"/>
<!-- 指定基本包,dao接口所在的包名 -->
<property name="basePackage" value="com.wang.dao"/>
</bean> <!-- 声明service-->
<bean id="studentService" class="com.wang.service.impl.StudentServiceImpl">
<property name="studentDao" ref="studentDao"/>
</bean>
</beans>
接下来就可以通过junit进行测试了。
结尾:
- 该过程中的一部分可以使用注解的方式进行(略)
- MyBatis通常使用配置文件的方式,spring通常使用注解的方式
- ssm框架的整合实际上就是MyBatis和spring框架的整合
- 接下来再添加springMvc后,在控制层调用相应的业务处理层即是service的方法就可以实现ssm框架的运行。
Spring和MyBatis框架整合的更多相关文章
- SSM(Spring,SpringMVC,Mybatis)框架整合项目
快速上手SSM(Spring,SpringMVC,Mybatis)框架整合项目 环境要求: IDEA MySQL 8.0.25 Tomcat 9 Maven 3.6 数据库环境: 创建一个存放书籍数据 ...
- SSM(Spring+SpringMVC+MyBatis)框架整合开发流程
回忆了 Spring.SpringMVC.MyBatis 框架整合,完善一个小demo,包括基本的增删改查功能. 开发环境 IDEA MySQL 5.7 Tomcat 9 Maven 3.2.5 需要 ...
- 框架整合——Spring与MyBatis框架整合
Spring整合MyBatis 1. 整合 Spring [整合目标:在spring的配置文件中配置SqlSessionFactory以及让mybatis用上spring的声明式事务] 1). 加入 ...
- Spring+SpringMVC+Mybatis框架整合流程
一:基本步骤 新建Maven项目,导入相关依赖.(推荐) ————–Mybatis配置 —————- 新建entity包,并根据数据库(表)新建相关实体类. 新建dao包,并根据业务创建必要的mapp ...
- SSM Spring SpringMVC Mybatis框架整合Java配置完整版
以前用着SSH都是老师给配好的,自己直接改就可以.但是公司主流还是SSM,就自己研究了一下Java版本的配置.网上大多是基于xnl的配置,但是越往后越新的项目都开始基于JavaConfig配置了,这也 ...
- Spring + Spring MVC + MyBatis框架整合
---恢复内容开始--- 一.Maven Web项目创建 如有需要,请参考:使用maven创建web项目 二.Spring + Spring MVC + MyBatis整合 1.Maven引入需要的J ...
- Spring+Spring MVC+Mybatis 框架整合开发(半注解半配置文件)
项目结构: (代码里面都有注释) 一.在pom文件中依赖jar包 因为我这里分了模块,所以有父子级的共两个pom文件 父级: <?xml version="1.0" enco ...
- Spring+SpringMVC+mybatis框架整合
1.jdbc.properties 1 driverClassName=com.mysql.jdbc.Driver 2 url=jdbc\:mysql\://127.0.0.1\:3306/slsal ...
- spring+springMVC+mybatis框架整合——配置文件说明
如下图 web.xml配置说明: spring配置文件说明-1: spring配置文件说明-2: spring配置助记: 扫注(base) 读配(loc) 数据源(和comb(使用c3p0数据源)) ...
随机推荐
- 稳住,传输层里的TCP与UDP协议
传输层协议 1.TCP协议介绍及报文格式 2.TCP三次握手三次挥手 3.UDP协议介绍 1.传输层有两个协议:TCP(传输控制协议) UDP(用户数据协议) . TCP是面向连接的,可靠的进程到进 ...
- LAMP以及各组件的编译安装
LAMP以及各组件的编译安装 目录 LAMP以及各组件的编译安装 一.LAMP 1. LAMP概述 2. 各组件的主要作用 3. 平台环境的安装顺序 二.编译安装apache httpd 1. 关闭防 ...
- Feign的异步调用或者MQ调用与Security的问题处理;
两大踩坑点: 一:部分框架自带有查询当前登录人的信息工具,无需各种本地线程栈ThreadLocals取Request啥的折磨自己: 二:Security自带有uri匹配的工具,没事多翻翻源码,原创方法 ...
- linux_4
自建yum仓库,分别为网络源和本地源 编译安装http2.4 linux命令练习 列出ubuntu软件管理工具apt的一些用法(自由总结)
- pm2 部署 vue
链接:我整理了一个网站, 用来介绍一些有意思和实用工具的网站, 我没有打包, 直接甩上去了 因为vue是用 npm run dev 来运行的, 你用pm2 npm run dev 是错误的 需要加上- ...
- 适用于小白:VSCode搭建Vue项目,最详细的搭建步骤哦
在vscode上搭建一个vue项目---初学总结. 1.假设Vscode.nodejs等已经安装好了. 2.全局安装vue-cli,vue-cli可以帮助我们快速构建Vue项目. 安装命令: npm ...
- 《操作系统导论》第14章 | 内存操作API
内存类型 在运行一个C程序的时候,会分配两种类型的内存.第一种称为栈内存,它的申请和释放操作是编译器来隐式管理的,所以有时也称为自动内存.假设需要在func()函数中为一个整形变量x申请空间,我们只需 ...
- 『无为则无心』Python面向对象 — 51、私有成员变量(类中数据的封装)
目录 1.私有成员变量介绍 (1)私有成员变量概念 (2)私有成员变量特点 (3)私有成员变量体验 2.属性私有化工作原理 3.定义成员变量的标识符规范 4.私有成员变量的获取和设置方式 1.私有成员 ...
- unittest测试框架,HTMLTestReportCN模块生成的测试报告中展示用例说明的配置方法
1.前言 想要生成的html测试报告中展示每个测试用例的说明信息,方便了解测试案例的测试点或者其他信息,目前知道的有2种 2.方法介绍 * 方法1: 要添加说明的测试用例,将说明信息用3个引号包裹起来 ...
- 内网流量操控---pingtunnel建立icmp隧道
一.pingtunnel工作原理 在上面的实验环境中,我们将分别在攻击机kali 2020和webserver上部署pingtunnel工具,在量太主机之间实现icmp隧道,再在kali2020上监听 ...