标签:文件 ram 事务管理器 zab 建立 exce ltm init dcl
MyBatis 是一个可以自定义SQL、存储过程和高级映射的持久层框架。MyBatis 摒除了大部分的JDBC代码、手工设置参数和结果集重获。MyBatis 只使用简单的XML 和注解来配置和映射基本数据类型、Map 接口和POJO 到数据库记录。相对Hibernate和Apache OJB等“一站式”ORM解决方案而言,Mybatis 是一种“半自动化”的ORM实现。
需要使用的Jar包:mybatis-3.0.2.jar(mybatis核心包)。mybatis-spring-1.0.0.jar(与Spring结合包)。
下载地址:
http://ibatis.apache.org/tools/ibator
http://code.google.com/p/mybatis/
1,建立maven的web项目;
2,加入Spring框架、配置文件;
3,在pom.xml中加入所需要的jar包(spring框架的、mybatis、mybatis-spring、junit等);
4,更改web.xml和spring的配置文件;
5,添加一个jsp页面和对应的Controller;
6,测试。
可参照:http://limingnihao.iteye.com/blog/830409。使用Eclipse的Maven构建SpringMVC项目
建立一个学生选课管理数据库。
表:学生表、班级表、教师表、课程表、学生选课表。
逻辑关系:每个学生有一个班级;每个班级对应一个班主任教师;每个教师只能当一个班的班主任;
使用下面的sql进行建数据库,先建立学生表,插入数据(2条以上)。
更多sql请下载项目源文件,在resource/sql中。
Sql代码
创建连接MySql使用的配置文件mysql.properties。
Mysql.properties代码
顺序随便,现在的顺序是因为可以尽量的少的修改写好的文件。
Java代码
Student类对应的dao接口:StudentMapper。
Java代码
Student类的sql语句文件StudentMapper.xml
resultMap标签:表字段与属性的映射。
Select标签:查询sql。
Xml代码
在src/main/resource中创建MyBatis配置文件:mybatis-config.xml。
typeAliases标签:给类起一个别名。com.manager.data.model.StudentEntity类,可以使用StudentEntity代替。
Mappers标签:加载MyBatis中实体类的SQL映射语句文件。
Xml代码
主要是添加SqlSession的制作工厂类的bean:SqlSessionFactoryBean,(在mybatis.spring包中)。需要指定配置文件位置和dataSource。
和数据访问接口对应的实现bean。通过MapperFactoryBean创建出来。需要执行接口类全称和SqlSession工厂bean的引用。
Xml代码
也可以不定义mapper的bean,使用注解:
将StudentMapper加入注解
Java代码
对应的需要在dispatcher-servlet.xml中加入扫描:
Xml代码
使用SpringMVC测试,创建一个TestController,配置tomcat,访问index.do页面进行测试:
Java代码
使用Junit测试:
Java代码
MyBatis学习 之 一、MyBatis简介与配置MyBatis+Spring+MySql
MyBatis学习 之 二、SQL语句映射文件(1)resultMap
MyBatis学习 之 二、SQL语句映射文件(2)增删改查、参数、缓存
61
顶
11
踩
MyBatis学习 之 二、SQL语句映射文件(1 ... | SpringFlex框架搭建 之 二、配置使用Spri ...
参考知识库
Java EE知识库17380 关注 | 1301 收录
评论
28 楼 saybar 2017-01-05
哪里有源代码啊,?能否发一份?还有就是 ClassEntity 是什么类?怎么不一样啊?我邮箱:411038060@qq.com
27 楼 liangzulin 2016-12-05
classentity是啥?哪个包的类啊?
这教程并不完整啊!
26 楼 di1984HIT 2014-10-22
写的很好啊~
25 楼 mojito515 2013-05-05
引用
<bean id="studentMapper" class="org.mybatis.spring.MapperFactoryBean">
<property name="mapperInterface" value="com.manager.data.StudentMapper" />
<property name="sqlSessionFactory" ref="sqlSessionFactory" />
MapperFactoryBean的路径写错了,应该是org.mybatis.spring.mapper.MapperFactoryBean
24 楼 大猫熊 2013-02-16
你好,可以把源代码发到343816974@qq.com邮箱好吗?
23 楼 xvsfeo 2012-12-20
你好,可以把源代码发到410742933@qq.com邮箱好吗?
22 楼 hdwmp123 2012-06-13
附件哪里下载呢?
21 楼 phoenixsfans 2012-06-10
您好,我也正在学MyBatis想看看您的上面例子的源码,如果可以的话麻烦发到我邮箱 kissinglinux@gmail.com 谢谢
20 楼 hao_evolution 2012-04-10
limingnihao 写道
hao_evolution 写道
为啥加两次 @Transactional ,在service层加不就可以了?
你说的两次,第二次指的是在junit里边吧。在junit里面加@Transactional可以使在测试增删改后进行数据回滚,保证数据和测试之前的一样,不加也没问题。
@Repository
@Transactional
public interface StudentMapper {
}
个人觉得这里没必要加事务,在service层去加事务控制
19 楼 limingnihao 2012-04-09
hao_evolution 写道
为啥加两次 @Transactional ,在service层加不就可以了?
你说的两次,第二次指的是在junit里边吧。在junit里面加@Transactional可以使在测试增删改后进行数据回滚,保证数据和测试之前的一样,不加也没问题。
18 楼 hao_evolution 2012-04-09
为啥加两次 @Transactional ,在service层加不就可以了?
17 楼 xiaoqiS 2012-02-20
不错的入门教程
16 楼 幸福人生 2011-07-25
我的配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
<!-- Scans the classpath of this application for @Components to deploy as beans -->
<context:component-scan base-package="com.myproject" />
<!-- 定义受环境影响易变的变量 -->
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
<property name="ignoreResourceNotFound" value="true" />
<property name="locations">
<list>
<!-- 本地开发环境配置 -->
<value>classpath:jdbc.local.properties</value>
<value>classpath:sys_config.properties</value>
</list>
</property>
</bean>
<!-- 数据源配置,使用应用内的DBCP数据库连接池 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close" lazy-init="false">
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url_mex}"/>
<property name="username" value="${jdbc.username_mex}"/>
<property name="password" value="${jdbc.password_mex}"/>
<!-- Connection Pooling Info -->
<property name="maxIdle" value="${dbcp.maxIdle}" />
<property name="maxActive" value="${dbcp.maxActive}" />
<property name="timeBetweenEvictionRunsMillis" value="3600000" />
<property name="minEvictableIdleTimeMillis" value="3600000" />
<property name="defaultAutoCommit" value="${jdbc.defaultAutoCommit}" />
</bean>
<!-- 事务管理器配置,单数据源事务 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="configLocation" value="classpath:ibatis-config.xml" />
<property name="dataSource" ref="dataSource" />
</bean>
<!-- mapper bean -->
<bean id="StudentMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
<property name="mapperInterface" value="com.myproject.report.dao.StudentMapper" />
<property name="sqlSessionFactory" ref="sqlSessionFactory" />
</bean>
<bean name="stringHttpMessageConverter"
class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/plain;charset=UTF-8</value>
</list>
</property>
</bean>
</beans>
启动后报错:
Related cause: org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘StudentMapper‘ defined in ServletContext resource [/WEB-INF/spring/appServlet/app-config.xml]: Cannot resolve reference to bean ‘sqlSessionFactory‘ while setting bean property ‘sqlSessionFactory‘; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘sqlSessionFactory‘ defined in ServletContext resource [/WEB-INF/spring/appServlet/app-config.xml]: Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: org.apache.ibatis.builder.xml.XMLConfigBuilder.<init>(Ljava/io/InputStream;Ljava/lang/String;Ljava/util/Properties;)V
不知什么原因,请各位予以解答,谢谢!
15 楼 limingnihao 2011-03-11
xiaojianhx 写道
xiaojianhx 写道
事务怎么加?
哦,写错了.....
是"事务怎么处理"
使用Spring的@Transactional注解,一般写在Service层的接口方法上。
14 楼 xiaojianhx 2011-03-11
xiaojianhx 写道
事务怎么加?
哦,写错了.....
是"事务怎么处理"
13 楼 xiaojianhx 2011-03-11
事务怎么加?
12 楼 小金哥 2010-11-26
小金哥 写道
xiaojianhx 写道
我eclipse 启动tomcat的时候报错,怎么回事啊
严重: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘sqlSessionFactory‘ defined in class path resource [applicationContext.xml]: Initialization of bean failed; nested exception is java.lang.reflect.MalformedParameterizedTypeException
代码:
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="configLocation">
<value>classpath:mybatis-config.xml</value>
</property>
<property name="dataSource">
<ref bean="dataSource" />
</property>
</bean>
遇到相同的问题,调试了一晚上没有找到原因,不知7楼是否已经解决该问题了?若解决了,请不吝赐教!
终于弄明白了,原来是spring版本的问题,MyBatis-Spring只能在spring3.0版本上使用,如果用spring3.0以下版本就会出现该问题,建议将spring升级为3.0或改用ibatis2.0!
11 楼 JavaScape 2010-11-09
resultType 与resultMap 不能同时使用。
官方使用手册里好像有这么一句,但是你的配置文件中同时配置了这两个属性:
<!-- 查询学生,根据id -->
13. <select id="getStudent" parameterType="String" resultType="StudentEntity" resultMap="studentResultMap">
请楼主解释一下?
10 楼 小金哥 2010-10-31
xiaojianhx 写道
我eclipse 启动tomcat的时候报错,怎么回事啊
严重: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘sqlSessionFactory‘ defined in class path resource [applicationContext.xml]: Initialization of bean failed; nested exception is java.lang.reflect.MalformedParameterizedTypeException
代码:
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="configLocation">
<value>classpath:mybatis-config.xml</value>
</property>
<property name="dataSource">
<ref bean="dataSource" />
</property>
</bean>
遇到相同的问题,调试了一晚上没有找到原因,不知7楼是否已经解决该问题了?若解决了,请不吝赐教!
源码来源: minglisoft.cn/technology
MyBatis简介与配置MyBatis+Spring+MySql
标签:文件 ram 事务管理器 zab 建立 exce ltm init dcl
原文地址:http://www.cnblogs.com/angelhu123/p/6707994.html