Mybatis与Spring的mapper代理整合方法
1、配置环境
2、UserMapper.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"> <!-- namespace命名空间,作用就是对sql进行分类化管理,理解sql隔离 注意:使用mapper代理方法开发,namespace有特殊重要的作用 --> <mapper namespace="cn.byr.ssm.mapper.UserMapper"> <!-- 在 映射文件中配置很多sql语句 --> <!-- 需求:通过id查询用户表的记录 --> <!-- 通过 select执行数据库查询 id:标识 映射文件中的 sql 将sql语句封装到mappedStatement对象中,所以将id称为statement的id parameterType:指定输入 参数的类型,这里指定int型 #{}表示一个占位符号 #{id}:其中的id表示接收输入 的参数,参数名称就是id,如果输入 参数是简单类型,#{}中的参数名可以任意,可以value或其它名称 resultType:指定sql输出结果 的所映射的java对象类型,select指定resultType表示将单条记录映射成的java对象。 --> <select id="findUserByLoginname" parameterType="String" resultType="cn.byr.ssm.po.User"> SELECT * FROM t_user WHERE loginname=#{value} </select> </mapper>
3、UserMapper接口文件
package cn.byr.ssm.mapper; import cn.byr.ssm.po.User; public interface UserMapper { //根据用户名查询用户信息 public User findUserByLoginname(String loginname) throws Exception; }
4、applicationContext.xml文件加入
<bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean"> <property name="mapperInterface" value="cn.byr.ssm.mapper.UserMapper"></property> <property name="sqlSessionFactory" ref="sqlSessionFactory"></property> </bean>
5、测试
6、改进一下 使用spring的mapper扫描器
使用mapper扫描器 此方法即mapper接口开发方法,只需定义mapper接口,不用编写mapper接口实现类。只需要在spring配置文件中定义一个mapper扫描器,自动扫描包中的mapper接口生成代代理对象。 1、 mapper.xml文件编写, 2、 定义mapper接口 注意mapper.xml的文件名和mapper的接口名称保持一致,且放在同一个目录 3、 配置mapper扫描器 <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="mapper接口包地址"></property> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/> </bean> basePackage:扫描包路径,中间可以用逗号或分号分隔定义多个包 4、 使用扫描器后从spring容器中获取mapper的实现对象 如果将mapper.xml和mapper接口的名称保持一致且放在一个目录 则不用在sqlMapConfig.xml中进行配置
1.1.1 使用mapper扫描器
此方法即mapper接口开发方法,只需定义mapper接口,不用编写mapper接口实现类。只需要在spring配置文件中定义一个mapper扫描器,自动扫描包中的mapper接口生成代代理对象。
1、 mapper.xml文件编写,
2、 定义mapper接口
注意mapper.xml的文件名和mapper的接口名称保持一致,且放在同一个目录
3、 配置mapper扫描器
<beanclass="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="mapper接口包地址"></property>
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
</bean>
basePackage:扫描包路径,中间可以用逗号或分号分隔定义多个包
4、 使用扫描器后从spring容器中获取mapper的实现对象
如果将mapper.xml和mapper接口的名称保持一致且放在一个目录则不用在sqlMapConfig.xml中进行配置