spring和mybatis的整合开发(基于MapperFactoryBean的整合开发(方便简单不复杂))
MapperFactoryBean是mybati-spring团队提供的一个用于根据mapper接口生成mapper对象的类。
在spring配置文件中可以配置以下参数:
1.mapperInterface:用于指定接口
2.sqlSessionFactory:用于指定SqlSessionFactory。
3.sqlSessionTemplate:用于指定SqlSessionTemplate。如果和sqlSessionFactory同时配置,则只会启用sqlSessionTemplate。
例如:
/*
* 客户持久化类
*/ public class Customer {
private Integer id;
private String username;
private String jobs;
private String phone;
setter/getter
toString()
}
CustomerMapper接口
public interface CustomerMapper {
public Customer findCustomerById(Integer id);
}
映射文件:namespace命名空间有包名加接口名
<mapper namespace="com.itheima.po.mapper.CustomerMapper">
<select id="findCustomerById" parameterType="Integer" resultType="customer">
select * from t_customer where id=#{id}
</select>
</mapper>
在applicationContext.xml中的配置
<!--基于MapperFactoryBean开发-->
<bean id="customerMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
<property name="mapperInterface" value="com.itheima.po.mapper.CustomerMapper"/>
<property name="sqlSessionFactory" ref="sqlSessionFactory"/>
</bean>
在mybatis-config.xml中的配置
<!--引入mapper文件位置-->
<mappers>
<mapper resource="com/itheima/po/mapper/CustomerMapper.xml"/>
</mappers>
测试
public class FindCustomerByIdTest {
@Test
public void findCustomerById() {
ApplicationContext applicationContex = new ClassPathXmlApplicationContext("applicationContext.xml");
CustomerMapper customerMapper = applicationContex.getBean(CustomerMapper.class);
Customer customer = customerMapper.findCustomerById(1);
System.out.println(customer);
}
}
结果:
Customer{id=1, username='jason', jobs='java', phone='123456'}
使用基于mapperFactoryBean来使mybatis和spring的整合开发与传统的Dao方式开发相比,比较简单,没有重复代码,出错也更容易发现。 使用mapper接口编程需要遵守以下编程规范:
mapper接口编程方式只需要编写一个接口,然后由mybatis框架根据接口的定义创建接口的动态代理对象。
1.mapper的接口名称和对应的mapper.xml映射文件的名称必须一致。
2.mapper.xml文件中的namespace与mapper接口的类路径相同(也就是接口文件和映射文件需要放在一个包中)。
3.mapper接口中的方法名和mapper.xml中定义的每个执行语句的id相同。
4.mapper接口中方法的输入参数类型要和mapper.xml中定义的每个sql的parameterType的类型相同。
5.mapper接口方法的输出参数类型要和mapper.xml中定义的每个sql的resultType的类型相同。 使用mapper接口开发虽然简单,但是有个问题就是,当接口过多,会导致映射文件也过多,这样配置文件就会显得比较杂乱和臃肿。
这就要采用另外一种方式整合。基于MapperScannerConfigurer的整合可以解决这个问题。
spring和mybatis的整合开发(基于MapperFactoryBean的整合开发(方便简单不复杂))的更多相关文章
- spring和mybatis的整合开发(基于MapperScannerConfigurer的整合开发(适用于复杂项目,接口较多的情况))
在实际项目中,Dao层会包含很多接口,这样会导致spring配置文件过于臃肿.这时就需要采用扫描包的形式来配置mybaits中的映射器. 采用MapperScannerConfigurer来实现. M ...
- Spring+SpringMvc+Mybatis框架集成搭建教程三(框架整合测试程序开发)
框架整合测试程序开发 (1).在mysql数据库中创建t_user表,sql语句如下 CREATE TABLE `t_user` ( `id` bigint(20) NOT NULL AUTO_INC ...
- java:Mybatis框架2(基于mapper接口的开发,多种查询,复合类型查询,resultMap定义,多表联查,sql片段)
1.mybatis02: mybatis-config.xml: <?xml version="1.0" encoding="UTF-8"?> &l ...
- php 微信公众号+微商城开发 基于Thinkphp3.2框架开发
说明:本教程是自己自学+自己的理解+扩展(包括学习过程中遇到的一些问题) 参考教程:麦子学院--李忠益--http://www.maiziedu.com/u/70409/ 微盟: http://www ...
- spring和mybatis的整合开发(传统Dao开发方式)
spring和mybatis整合开发有三种整合方式1.传统DAO方式的开发整合(现在基本上不会用这种方式了,不推荐使用这种方式),2.mapper接口方式的开发整合(基于MapperFactoryBe ...
- 【SpringMVC学习04】Spring、MyBatis和SpringMVC的整合
前两篇springmvc的文章中都没有和mybatis整合,都是使用静态数据来模拟的,但是springmvc开发不可能不整合mybatis,另外mybatis和spring的整合我之前学习mybati ...
- (转)SpringMVC学习(四)——Spring、MyBatis和SpringMVC的整合
http://blog.csdn.net/yerenyuan_pku/article/details/72231763 之前我整合了Spring和MyBatis这两个框架,不会的可以看我的文章MyBa ...
- 搭建Spring + SpringMVC + Mybatis框架之三(整合Spring、Mybatis和Spring MVC)
整合Spring和SpringMVC 之前已经整合了spring和mybatis,现在在此基础上整合SSM. 项目目录: 思路:SpringMVC的配置文件独立,然后在web.xml中配置整合. (1 ...
- SSM框架——Spring+SpringMVC+Mybatis的搭建教程
一:概述 SSM框架在项目开发中经常使用到,相比于SSH框架,它在仅几年的开发中运用的更加广泛. Spring作为一个轻量级的框架,有很多的拓展功能,最主要的我们一般项目使用的就是IOC和AOP. S ...
随机推荐
- IDEA 相关整理
插件部分 Lombok 日志不定义
- golang web实战之一(beego,mvc postgresql)
想写个小网站,听说MVC过时了,流行MVVM,但是看了一下gin+vue+axios方式,发现还有一堆知识点要掌握,尤其是不喜欢nodejs和javascript方式的写法.算了,还是用beego来写 ...
- (五)Cluster Health
Let’s start with a basic health check, which we can use to see how our cluster is doing. We’ll be us ...
- python之shutil
''' shutil 用来处理 文件 文件夹 压缩包 的模块 ''' import shutil # 拷贝文件内容 shutil.copyfileobj(open('old.xml', 'r'), o ...
- sigsuspend()阻塞:异步信号SIGIO为什么会被截胡?
关键词:fcntl.fasync.signal.sigsuspend.pthread_sigmask.trace events. 此文主要是解决问题过程中的记录,内容有较多冗余.但也反映解决问题中用到 ...
- C# 之 static的用法详解
有的东西你天天在用,但未必就代表你真正了解它,正如我之前所了解的 static . 一.静态类 静态类与非静态类的重要区别在于静态类不能实例化,也就是说,不能使用 new 关键字创建静态类类型的变量. ...
- SQL SERVER数据库修改是否区分大小写(转载)
昨天去客户,发现程序无法应用,跟踪错误提示,提示的大致意思是“数据库表名和数据库字段名不存在”.查询后发现是SQL Server数据库设置了区分大小写的缘故(一般安装时,Oracle的正确安装下是默认 ...
- springboot- logback 可切换不同环境
在resources下新建一个logback文件夹和一个logback.xml logback.xml <?xml version="1.0" encoding=" ...
- Python——threading模块(线程)
一.threading模块的对象 Thread:表示一个执行线程的对象 Lock:锁 Rlock:可重入锁对象 Condition:条件变量对象,使得一个线程等待另一个线程满足特定的“条件” Even ...
- 关于申请GMS认证来使用谷歌的一些服务应用及闭源API
房间内的主要大象正在获取Google移动服务(GMS)的许可证.这是指预先选择的谷歌应用程序阵列,它将谷歌本身的精髓包含在其配置中 - Google搜索,YouTube,Gmail,Chrome,G ...