框架学习之mybatis整合spring
来源:互联网 发布:查看php fpm端口号 编辑:程序博客网 时间:2024/05/29 18:23
mybatis核心原理
mybatis是一个持久层的应用框架,它省略了数据库操作dao层的实现类,利用动态代理的原理生成我们需要的实现类操作数据库,并且可以定制化sql语句,不存在很繁琐的注解配置
mybatis整合spring配置
导入整合的架包(maven搭建项目实现导包)
application.xml配置
- 与spring整合hibernate相比,数据源不会改变配置,只是多加一个:
<property name="validationQuery" value="select now();" />
- 配置会话工厂
<!-- 由mybatis提供的整合Spring的,MyBatis自己的SqlSessionFactory的实现 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="configLocation" value="classpath:mybatis/config.xml" /> <!-- 加载MyBatis的配置文件(settings、typeAliases) --> <property name="mapperLocations" value="classpath*:mybatis/mapper/**/*.xml" /> <!-- 加载MyBatis的Mapper映射文件 --> </bean>
说明:这是mybatis自己提供的会话工厂实现类,依赖于数据源,依赖的其他属性是要去扫描所有与mybatis配置相关的文件(config.xml和XxxMapper.xml)
3. 配置spring将Mapper接口放入容器的条件
<!-- 基于sqlSessionFactory对象,分析出xxxMapper.xml文件,根据指定的XxxMaper接口,反射动态生成XXXMapper接口的实例,并放入容器中 --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" /> <property name="basePackage" value="com.bwf.term14.book.mapper" /> </bean>
说明:依赖于会话工厂,需要配置需要实现的具体的接口路径
config.xml配置
基于mybatis的实体类配置:
<configuration> <typeAliases> <package name="实体类的包名路径" /> </typeAliases></configuration>
说明:这些实体类的别名采用默认的。例如,包名 . Book–Book
XxxMapper.xml配置
<mapper namespace="com.bwf.term14.book.mapper.AdminMapper"> <resultMap id="adminResultMap" type="Admin" > <id column="AID" property="id" /> <result column="ALoginID" property="loginId" /> <result column="ALoginPsw" property="loginPsw" /> <result column="AName" property="name" /> </resultMap> <select id="getAdminByLoginId" resultMap="adminResultMap"> select AID , ALoginID, ALoginPsw, AName from admininfo where ALoginID = #{loginId} </select> <select id="getAdminNameDetails" resultType="map"> select CHAR_LENGTH(AName) as nameLength, count(*) as adminCount, count(char_length(ALoginID)) as loginidLength from admininfo group by CHAR_LENGTH(AName) order by nameLength desc </select> <select id="getAllAdmins" resultType="Admin"> select AID id, ALoginID loginId, ALoginPsw loginPsw, AName name from admininfo </select> <insert id="add"> insert into admininfo values (null, #{admin.loginId}, #{admin.loginPsw}, #{admin.name}) </insert> </mapper>
说明:
1. 命名空间就是借口类的路径
2. 在里面配置数据库操作的数据库增删改查标签
3. 可以使用include标签,提高复用性:
<sql id="header"> select AID as id, ALoginID as loginId, ALoginPsw as loginPsw, AName as name from admininfo</sql><select id="getAdminByLoginId" resultType="Admin"> <include refid="header"/> where ALoginID = #{loginId}</select>
说明:
a. getAdminByLoginId是具体的方法名,Admin是对应的返回类型
b. “#{loginId}”表示传递的参数
c. 如果借口传递的是引用,则需要注解声明:@param(“…”),在xml中可以当作对象来使用
d. resultType是在数据库表和实体类的字段名对应上了才会有用,否则返回的数据将是null;这个时候就需要用resultMap来作映射,就像hibernate注解一样,只不过在xml文件中配置:
<select id="getBooks" resultMap="bookResultMap"> ......</select><resultMap type="Book" id="bookResultMap"> <id property="id" column="BID"/>(配主键用id) <result property="title" column="BTitle"/> <result property="author" column="BAuthor"/> <result property="price" column="BPrice"/> <result property="publisher" column="BPublisher"/> <result property="photo" column="BPhoto"/> <association property="category" javaType="Category"> <id property="id" column="CID"/> <result property="name" column="CName"/> </association> </resultMap>
动态sql语句
在进行增删改查的标签配置下还可以动态生成sql语句,具体的标签使用这里不再赘述,百度搜索很多的
声明式事务配置
<!-- 在整合MyBatis时,使用spring-jdbc.jar中的基于JDBC普通数据源的事务管理器 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> </bean>
说明:其他的配置同spring整合hibernate一致,需要配置具体的通知(连接点)、切入点,具体请参照:声明式事务
缓存
同样的,基于mybatis持久层框架的缓存也是有两个级别的:
- SqlSession级别的,针对于同一次会话缓存有效
- SqlSessionFactory级别的,如果要启用需要在对应的XxxMapper.xml文件中配置
<cache />
,同时导入相应整合的cache的架包
阅读全文
1 0
- 框架学习之mybatis整合spring
- Spring + Spring MVC + Mybatis 框架整合学习
- 框架整合之Spring + Struts2 + MyBatis
- MyBatis-Spring框架整合
- MyBatis框架的学习(六)——MyBatis整合Spring
- mybatis学习之与Spring整合
- Spring+Mybatis整合学习
- mybatis+spring+struts2框架整合
- mybatis+spring+struts2框架整合
- struts2+mybatis+spring框架整合
- mybatis+spring+struts2框架整合
- struts,spring,mybatis框架整合
- Spring、SpringMVC、Mybatis框架整合
- mybatis+spring+struts2框架整合
- spring mvc + mybatis 整合框架
- Struts2+spring+Mybatis框架整合
- spring+SpringMVC+Mybatis框架整合
- Mybatis-SpringMVC-Spring框架整合
- NYOJ460 项链(环形区间DP)
- CCF CSP 201609-1 最大波动(Java-100分)
- jquery的autocompelete()自动完成事件以及后追加的页面元素无法绑定事件
- cookie保存用户浏览记录
- QS Network
- 框架学习之mybatis整合spring
- static总结
- Spring Boot之旅:Java安全框架Apache Shiro基本配置(一)
- linux笔记
- 八 iOS之 图片加水印
- S7200目录
- class.getResource("XXX").getPath()返回路径空格变成了 异常解决
- Spark1.5堆内存分配
- 【Java笔记】网络编程基础