MyBatis作为持久化层的一个ORM实现,完成了对象模型到关系数据模型之间的转换,协调了对象模型和关系模型之间的不协调,其减少了以往以jdbc编程的大部分代码量,使得应用开发者将注意力集中到业务逻辑层代码的编写,大大提高了工作效率。
MyBatis是一种半自动化的持久层框架,除了常规的配置文件外,域对象的映射文件了,还有通过插件完成最终SQL映射的辅助功能,如分页拦截插件,映射文件中定义了一系列的动态SQL,每个预定义的SQL语句之上都有相应的入参和最终的返回结果,根据运行时的传入的参数,判断其属性便可以动态完成SQL语句的生成,进而产生需要的结果集。
从域对象到最终的返回,需要定义结果集映射,SQL映射,结果集映射中定义了域对象和关系数据行之间的映射关系,确定的定义了基于java对象的属性和基于关系模型的数据列之间的映射,以便于在检索出原始的结果集后,利用反射技术将其精确合成目标实体对象;
动态SQL的定义,也是约定大于配置的方式,MyBatis映射文件中关于映射文件中的元素的DTD声明中规定了在其映射文件中只能以以下顺序定义约定数量的元素,如可以定义0个或者多个resultMap及其它提及元素。
如 一个常见的MyBatis映射文件如下:
假定域对象模型为:
public class DomainData{ private Integer id; private String name; private java.util.Date birthday; private AuthUser createBy; //省略setters and getters }
<mapper namespace="DomainData"> <resultMap id="DomainData_Result" type="DomainData"> <result property="id column="ID" jdbcType ="NUMERIC" /> <result property="name" column="NAME" jdbcType="VARCHAR" /> <result property="birthday" column="BIRTHDAY" jdbcType="TIMESTAMP"/> <association property="createBy" column="CREATE_BY" select="AuthUser.queryById"/> </resultMap> <!-- 新增 --> <insert id="insert" parameterType="DomainData"> <selectKey resultType="java.lang.Integer" keyProperty="id" order="BEFORE"> SELECT SEQ_DOMAIN_DATA.nextual from dual </selectKey> insert into DOMAIN_DATA( ID, NAME, BIRTHDAY, CREATE_BY ) VALUES ( #{id,jdbcType=NUMERIC}, #{title,jdbcType=VARCHAR}, #{birthday,jdbcType=TIMESTAMP}, #{createBy.id,jdbcType=NUMERIC} ) </insert> <!-- 修改 --> <update id="update" parameterType="DomainData"> update DOMAIN_DATA <set> <if test="name!=null"> NAME=#{name,jdbcType=VARCHAR}, </if> <if test="birthday!=null"> BIRTHDAY = #{birthday,jdbcType=TIMESTAMP}, </if> <if test="createBy != null and createBy.id != null" > CREATE_BY=#{createBy.id,jdbcType=NUMERIC}, </if> </set> WHERE ID = #{id,jdbcType=NUMERIC} </update> <!-- 物理删除 --> <delete id="delete" parameterType="java.lang.Integer"> delete from DOMAIN_DATA where ID = #{id,jdbcType=NUMERIC} </delete> <!-- 逻辑删除 --> <delete id="logicDelete" parameterType="java.lang.Integer"> update DOMAIN_DATA set ENABLE_FLAG=0 where ID = #{id,jdbcType=NUMERIC} </delete> <!-- 查询全部 --> <select id="query" parameterType="FeedbackData" resultMap="FeedbackData_Result"> SELECT * FROM DOMAIN_DATA <where> <if test="id != null" > AND ID=#{id,jdbcType=NUMERIC} </if> <if test="name != null" > AND NAME like CONCAT(CONCAT('%', #{name}), '%') </if> <if test="birthday != null" > AND BIRTHDAY=#{birthday,jdbcType=TIMESTAMP} </if> <if test="isHandle != null" > AND CREATE_BY=#{createBy,jdbcType=VARCHAR} </if> </where> </select> </mapper>
映射文件示例完毕,下来演示Spring对其的整合;
1、在Spring的配置文件中,配置数据源,BasicDataSource,DriverManagerDataSource
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName"> <value>${jdbc.driverClassName}</value> </property> <property name="url"> <value>${jdbc.url}</value> //该值来自于placeHolder </property> <property name="username"> <value>${jdbc.username}</value> </property> <property name="password"> <value>${jdbc.password}</value> </property> </bean>
2、配置SqlSessionFactoryBean
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <!-- 指定sqlMapConfig总配置文件,订制的environment在spring容器中不在生效--> <property name="configLocation"> <value>classpath:SqlMapConfig.xml</value> //mybatis的配置文件路径 其中是对MyBaits性能的一些调优和设置加载项,以及插件的配置(分页插件) </property> <property name="typeAliasesPackage"> //别名的java实体包路径 <value> com.demo.www.test.bo </value> </property> <!-- 读取mybatis配置文件 --> <property name="mapperLocations"> //映射文件的路径 <list> <value>classpath*:mapper/**/*.xml</value> </list> </property> </bean>
3.配置MyBatis持久层操作模板类(采用构造及进行注入)
<bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate"> <constructor-arg index="0" ref="sqlSessionFactory" /> </bean>
4。事务的配置 (采用声明式事务,将核心业务逻辑和事务处理逻辑剥离,高内聚、低耦合)
<!-- 事务配置 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> </bean> <tx:annotation-driven transaction-manager="transactionManager" /> <!-- 强制使用cglib代理 如果为false则spring会自动选择--> <aop:aspectj-autoproxy proxy-target-class="true" /> <!-- 使Spring关注Annotation --> <context:annotation-config/>
5、持久层Mybatis操作模板引用的注入完成相关DAO任务
相关推荐
mybatis与spring整合时所依赖的jar包,包括: 1.Mybatis所需的jar包括: ant-1.9.6.jar ant-launcher-1.9.6.jar asm-5.2.jar cglib-3.2.5.jar commons-logging-1.2.jar javassist-3.22.0-CR2.jar log4j-...
以上就是关于“mybatis与spring整合的全部jar包”的详细知识点,这些组件共同构建了一个灵活且易于维护的Java Web应用程序。通过理解这些概念和技术,开发者可以更好地理解和使用SSM框架来开发复杂的企业级应用。
这个“mybatis与spring整合全部jar包”包含了这三个框架整合所需的所有依赖库,使得开发者可以快速搭建SSM项目。 首先,让我们深入了解一下这三个组件: 1. **Spring**:Spring 是一个全面的Java企业级应用开发...
mybatis-spring 整合jar包,Spring和MyBatis环境整合mybatis-spring-1.1.1
将Spring与Mybatis整合,可以充分利用两者的优点,构建出高效、灵活的Web应用。 1. **Spring整合Mybatis的基本步骤** - **引入依赖**: 在项目的pom.xml中添加Spring和Mybatis的相关依赖。 - **配置数据源**: ...
mybatis与spring整合全部jar包,mybatis与spring整合全部jar包,mybatis与spring整合全部jar包,mybatis与spring整合全部jar包,mybatis与spring整合全部jar包,
MyBatis-Spring 整合包是专门为将MyBatis持久层框架与Spring应用框架集成而设计的一个组件。这个包的出现旨在简化MyBatis在Spring环境中的配置和使用,使得开发者可以充分利用两者的优点,实现更加灵活和方便的数据...
在Java开发领域,Spring框架和MyBatis框架的整合是常见的数据访问技术组合。Spring作为一个全面的开源应用框架,提供依赖注入(DI)和面向切面编程(AOP)等功能,而MyBatis则是一个轻量级的持久层框架,专注于SQL...
### MyBatis与Spring的整合知识点详解 #### 一、MyBatis-Spring简介 **1.1 什么是MyBatis-Spring?** MyBatis-Spring是一个专门为简化MyBatis与Spring框架集成而设计的工具包。通过该工具包,开发者能够轻松地将...
在IT行业中,MyBatis和Spring是两个非常重要的框架,它们分别专注于持久层操作和依赖注入及应用上下文管理。将这两个框架整合在一起可以提供一个高效、灵活且易于维护的开发环境。本压缩包"mybatis3+spring4完美整合...
MyBatis 3.0.6 是一个流行的Java持久层框架,它简化了与数据库的交互,而Spring 3.0则是一个全面的企业级应用框架,提供了依赖注入、AOP(面向切面编程)、事务管理等功能。将这两个框架整合在一起可以实现更高效、...
在IT行业中,Mybatis与Spring的整合是常见的开发模式,特别是在构建Web项目时。这种整合提供了灵活的数据访问层,使得数据库操作与业务逻辑更加解耦。以下是对"Mybatis与Spring整合创建Web项目"这一主题的详细说明:...
【Mybatis2.3与Spring3.2.8整合(带注解)】 在Java Web开发中,Mybatis和Spring的整合是常见的实践,尤其是在基于注解的开发环境中。本篇将详细介绍如何将Mybatis 3.2.7与Spring 3.2.8进行整合,同时提供了一个...
3. **Spring与MyBatis整合**:整合MyBatis和Spring主要是为了利用Spring的IoC容器管理MyBatis的SqlSessionFactory和SqlSessionTemplate,以及Mapper接口和Mapper XML文件。通过Spring的`SqlSessionFactoryBean`和`...
`mybatis-spring-1.1.1.jar` 是 MyBatis 与 Spring 框架的整合包,它使得 MyBatis 能够无缝地融入到 Spring 的 IoC 容器中,提供了以下功能: 1. 事务管理:Spring 提供的声明式事务管理可以应用于 MyBatis 的数据...
MyBatis与Spring的整合通常涉及到以下几个关键步骤: 1. **配置Spring的ApplicationContext**:在Spring的配置文件中,我们需要声明MyBatis的SqlSessionFactoryBean,指定数据源和MyBatis的配置文件。 2. **定义...
在"Spring3+SpringMVC+MyBatis"的整合过程中,通常会使用Spring的ApplicationContext来加载配置,管理所有组件。SpringMVC的配置需要定义DispatcherServlet,配置视图解析器如InternalResourceViewResolver,以及...
在IT行业中,Spring框架与Mybatis的整合是常见的企业级应用开发模式,它结合了Spring的强大功能和Mybatis的灵活性,使得数据访问更加高效。本文将深入探讨如何进行"Spring整合Mybatis"的基础搭建,以及涉及到的相关...
这个依赖包集还包含了其他可能的开发工具包,如MyBatis-Spring,它提供了更便捷的Spring与MyBatis整合方式,例如MapperScannerConfigurer自动扫描并注册Mapper接口,以及SqlSessionTemplate和SqlSessionDaoSupport等...