spring整合mybatis dao为什么是空的
发布网友
发布时间:2022-04-08 21:40
我来回答
共1个回答
热心网友
时间:2022-04-08 23:10
因spring3发布时mybatis还没有出正式版本,所以spring没有整合最新的mybatis.不过社区倒是开发了一个中间件。
需要的jar包
mybatis-3.0.6.jar
mybatis-spring-1.0.2.jar
要点:
1.在spring中配置mybatis工厂类
2.在层使用spring注入的的工具bean对数据进行操作
整合时,可以有四种方式来使用mybatis进行数据处理。
spring 中必须的配置。
spring的配置文件中加入以下内容
<!-- MyBatis配置 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="c3p0DataSource" />
<property name="configLocation" value="/WEB-INF/config/db/MyBatisConfiguration.xml" />
<property name="mapperLocations" value="/WEB-INF/config/db/*Mapper.xml" />
<property name="typeAliasesPackage" value="${mybatis.alias.basepackage}" />
</bean>
1.SqlSessionFactoryBean (必需)
就是中间件所需的处理类
2.dataSource (必需)
spring中数据源引用
3.configLocation (可选)
Mybatis自身的配置文件,一般用来声明别名
4.mapperLocation (可选)
mybatis的映射文件
5.typeAliasesPackage (可选)
要映射类的包路径,如果使用了这种方式,则configLocation中不必再进行声明
使用mybatis进行数据处理的四种方式(SqlSessionTemplate/SqlSessionDaoSupport/MapperFactoryBean/MapperScannerConfigurer)
不同方式的特点
SqlSessionTemplate 这个需要写配置文件,在实现类中注入sqlsession,再使用sqlsession,是细颗粒控制
SqlSessionDaoSupport 这个只需要在实现类中继承特殊类就可以使用sqlsession
MapperFactoryBean 这个要写配置文件,把对应的所有接口在配置文件中引用即可,无需写实现类
MapperScannerConfigurer 这个要写配置文件,只要给出接口所在的包即可,会自动把包中的接口引入,无需写实现类
SqlSessionTemplate
配置文件加入新配
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="sqlSessionFactory" />
<constructor-arg index="1" value="BATCH" /><!--- 如果想要进行批量操作可加入这个属性 ->
</bean>
注入sqlsession()
@Reasource //使用spring3的注解注入
private SqlSession sqlSession;
使用sqlsession来进行操作
public User getUser(String userId) {
return (User) sqlSession.selectOne("org.mybatis.spring.sample.mapper.UserMapper.getUser", userId);
}
SqlSessionDaoSupport(sqlSessionFactory会被spring自动装配,不需要手动注入)
继承SqlSessionDaoSupport类
public class UserDaoImpl extends SqlSessionDaoSupport implements UserDao {
}
使用getSqlSession()方法取sqlSession来进行数据处理
public User getUser(String userId) {
return (User) getSqlSession().selectOne("org.mybatis.spring.sample.mapper.UserMapper.getUser", userId);
}
MapperFactoryBean
写配置文件,引入每个DAO接口
<bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
<property name="mapperInterface" value="org.mybatis.spring.sample.mapper.UserMapper" />
<property name="sqlSessionFactory" ref="sqlSessionFactory" />
</bean>
在业务层可直接注入的接口进行操作
MapperScannerConfigurer
写配置文件,配置包名将自动引入包中的所有接口
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="org.mybatis.spring.sample.mapper" />
</bean>
在业务层可直接注入DAO接口操作,注入时使用的是接口名,其首字母小写
注意:如果有别的实现类,其提供的名称如果是接口名,且首字母小写,则会在启动时出现冲突错误
mybatis 与spring集成的时候为什么dao接口为空
因spring3发布时mybatis还没有出正式版本,所以spring没有整合最新的mybatis.不过社区倒是开发了一个中间件。需要的jar包 mybatis-3.0.6.jar mybatis-spring-1.0.2.jar 要点:1.在spring中配置mybatis工厂类 2.在dao层使用spring注入的的工具bean对数据进行操作 整合时,可以有四种方式来使用mybat...
springboot 整合 mybatis dao一直自动注入失败怎么办?
一、可能出现问题的原因 1.sqlmapConfig.xml文件头写错 2.namespace写错 3.包在工程中放错层级,也会报这个错误.因为Springboot,是通过main方法启动工程的,要求是,通过main项目入口启动的模块,必须和他同级或是它的子包,不能放到他外面,否则,会报错 二、会导致,报,dao注入失败 1.学习springboot整合myb...
Spring MVC配置多个数据源可能遇到的坑
mappedStatements为空的原因是由于在spring容器启动时,会解析spring配置文件,这时将去加载资源文件,解析并以key,value的形式缓存在mappedStatements中。而在实际情况下,发现打包时*Mapper.xml并没有自动复制到class输出目录的mapper类包下。从而导致mappedStatements为空。Mapper interface和xml文件的定义对应不...
Spring MVC+Mybatis报错,dao层的方法为什么找不到映射文件中的sql
BoardDao、ForumService、BoardController有没有set方法或者相应的注解
请教Mybatis和Spring结合的配置问题
一看就知是Mapper配置出错了。仔细检查过了,1、我是用:<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="cn.xxxx.mail.webmail.dao.mapper"/> </bean>让spring自动加载mapper配置的,这个没错。2、UserMapper.java接口和UserMapper.xml同名,...
SpringBoot报找不到 dao 问题
使用 mybatis + springboot 进行开发,执行时报找不到 dao 文件 如上,在 @MapperScan 注解中添加 dao 文件对应的路径,这个路径是 java 下面类型为 interface 的 dao 文件的包路径。再次运行,可以正常找到 dao 文件。
spring和mybatis整合怎么将事务在service层关闭?使用xml配置
首先事务不是根据是不是service层而关闭的,而是你开启的session什么时候用完 在哪个层用完就关闭。而一般情况下都是在事务配置文件里的前缀方法名 如:<tx:method name="save*" propagation="REQUIRED"/> 这种在service层调用saveXXX方法时候 这个方法就被事务管理,这个save方法里 再调用dao层查询了你...
Spring整合mybatis运行报错,错误信息如下。
配置datasource数据源的时候,需要指定注入 相关 数据库的用户名密码等等。但是看你好像没有注入。
spring框架和mybatis?
如何整合spring和mybatis框架spring主要用来管理对象关系的,mybatis是链接数据库的。这两个单独也可以使用的,整合是因为现在sshssi比较流行也就是springStruts2hibernatemybatis也叫ibatis。springmvc和mybatis框架的不同1、mybatis是一个持久层框架,是apache下的开源项目,前身是itbatis,是一个不完全的ORM...
spring与mybatis整合出现下面的错误
检查 这个classpath:mybatis-config.xml 里面涉及到的XML 文件是否有问题