Spring3集成Mybatis3
来源:互联网 发布:windows intune 编辑:程序博客网 时间:2024/05/21 09:34
刚把Spring3与Mybatis3集成起,记录一下.本文只为了Spring与Mybatis集成,没有太复杂的应用,配置相对简单,如果有需求,可以根据自己需求添加更详细配置.
jar准备
MyBatis-3.1.1.jarMybatis-spring-1.1.1.jarmysql-connector-java-5.1.1.21Commons-dbcp-1.4.jarCommons-pool-1.6.jarCommons-logging-1.1.1.jarorg.springframework.beans-3.1.2.RELEASE.jarorg.springframework.core-3.1.2.RELEASE.jarorg.springframework.context-3.1.2.RELEASE.jarorg.springframework.tx-3.1.2.RELEASE.jar
1 编写实体
package com.ywxm.bean;public class Type {private int id;private String name;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}}
2 编写application.properties
jdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/ywxmjdbc.username=rootjdbc.password=root3编写Spring的配置文件applicationContext.xml
<!-- 使用注解自动注入bean --><context:component-scan base-package="com.ywxm" /><context:property-placeholder location="classpath*:/application.properties" /><!--数据源配置 --><bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"><property name="driverClassName" value="${jdbc.driver}" /><property name="url" value="${jdbc.url}" /><property name="username" value="${jdbc.username}" /><property name="password" value="${jdbc.password}" /></bean><!-- MyBatis配置 --><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource" /><property name="configLocation" value="classpath:mybatis.xml" /> <property name="mapperLocations" value="classpath:mapper/*_mapper.xml" /></bean> <!-- 事务管理 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> </bean> <tx:annotation-driven transaction-manager="transactionManager" />
4 编写Mybatis的配置文件 mybatis.xml(其实这个配置可以什么都不用配置)
<?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><typeAlias type="com.ywxm.bean.Type" alias="type" /></typeAliases></configuration>5 编写mapper.xml文件
<?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="Type"><resultMap type="com.ywxm.bean.Type" id="Type"><id column="id" property="id" /><result column="name" property="name" /></resultMap><insert id="save" parameterType="type">insert intotype(id,name)values(#{id},#{name})</insert> <!-- ibatis 配置id=#id# ,mysqlbatis 配置id=#{id}--><select id="get" parameterType="int" resultType="type">select * from type where id=#{id}</select></mapper>6 Dao编写
package com.ywxm.dao;import org.mybatis.spring.SqlSessionTemplate;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Component;import com.ywxm.bean.Type;@Componentpublic class TypeDao {@Autowiredprivate SqlSessionTemplate sqlSessionTemplate;public void setSqlSessionTemplate(SqlSessionTemplate sqlSessionTemplate) {this.sqlSessionTemplate = sqlSessionTemplate;}public Type get(int id){return sqlSessionTemplate.selectOne("Type.get", id);}public void save(Type type) {sqlSessionTemplate.insert(".save", type);}}
请注意上图中insert("sava",user) 中没有使用namespace值(mapper.xml中),那么必须保证所有mapper文件中"save"是唯一的.我就是犯了这种错误,结果就是数据库操作不成功,但不报错. 浪费了很多时间. 这让我感觉Mybatis测试有点困难.如果使用namespace值( 例:selectOne("Type.get", id))那么不同mapper 文件中有相同的"get" ,那么无所谓.
7 service编写
package com.ywxm.service;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Component;import org.springframework.transaction.annotation.Transactional;import com.ywxm.bean.Type;import com.ywxm.dao.TypeDao;@Component@Transactionalpublic class TypeManager {@Autowiredprivate TypeDao type;public void setType(TypeDao type) {this.type = type;}public void save(Type type) {this.type.save(type);}public void get(int id){ Type t=type.get(id); }}
在上面配置中dao继承SqlSessionDaoSupport,如果不想使用继承,我们可以稍作改动在Spring的配置文件applicationContext.xml中增加
<!-- 配置sqlSessionTemplate --> <bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate"><constructor-arg index="0" ref="sqlSessionFactory" /> </bean>
在把dao修改如下即可
package com.ywxm.dao;import org.mybatis.spring.SqlSessionTemplate;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Component;import com.ywxm.bean.Type;@Componentpublic class TypeDao {@Autowiredprivate SqlSessionTemplate sqlSessionTemplate;public void setSqlSessionTemplate(SqlSessionTemplate sqlSessionTemplate) {this.sqlSessionTemplate = sqlSessionTemplate;}public Type get(int id){return sqlSessionTemplate.selectOne("Type.get", id);}public void save(Type type) {sqlSessionTemplate.insert("Type.save", type);}}
那为何可以这样呢,通过查看SqlSessionDaoSupport类 发现有这样一段话
" This class needs a SqlSessionTemplate or a SqlSessionFactory. If both are set the SqlSessionFactory will be ignored."
也就是需要SqlSessionTemplate或SqlSessionFactory. 看它源码 SqlSessionFactory作为参数传给SqlSessionTemplate.无论是SqlSessionTemplate还是SqlSessionFactory.最终都是获得SqlSessionTemplate实例.通过SqlSessionTemplate进行数据库操作.因此给它个SqlSessionTemplate实例.从而不使用SqlSessionDaoSupport使用SqlSessionTemplate也能成功
- Spring3集成Mybatis3
- Spring3.05简单集成MyBatis3.03
- Spring3与MyBatis3.2的集成
- Spring3+Mybatis3+Mysql+ivy+liquibase 集成
- struts2.2.3 + spring3.1.0 + mybatis3.1.0集成简单demo
- 使用Mybatis3.10+spring3.10集成发生的错误
- struts2.2.3 + spring3.1.0 + mybatis3.1.0集成简单demo
- struts2.2.3 + spring3.1.0 + mybatis3.1.0集成简单demo
- struts2.2.3 + spring3.1.0 + mybatis3.1.0集成简单demo
- MyBatis3与Spring3无缝集成-从iBatis平滑过渡
- MyBatis3与Spring3无缝集成-从iBatis平滑过渡
- MyBatis3整合Spring3、SpringMVC3
- MyBatis3+Spring3+Struts2配置文件
- MyBatis3整合Spring3、SpringMVC3
- Spring3 整合 Mybatis3
- MyBatis3整合Spring3、SpringMVC3
- MyBatis3整合Spring3、SpringMVC3
- MyBatis3整合Spring3、SpringMVC3
- 网页设计对图片的选择应用
- 控制计算机声卡波形音量
- IPhone4S与蓝牙耳机连接
- GNU make参数详解
- 动态语言应该有多动态?
- Spring3集成Mybatis3
- linux下分区对应关系
- bash: ./adb: No such file or directory
- 数据结构--二叉树---由二叉树的先序和中序序列建树(二叉树的存储)
- 批处理文件(bat文件)注册dll批量注册dll
- 检测用户输入密码强度的效果代码
- 设置MyEclipse jquery自动提示功能
- 跨平台的 C++ 代码移植要点
- 交叉编译tslib1.4过程详述,配合QT4.5.3成功在Mini2440运行成功