Mapper编写有哪几种方式?
第一种:接口实现类继承SqlSessionDaoSupport;使用此种方法需要编写mapper接口,mapper接口实现类、mapper.xml文件。
- 在sqlMapConfig.xml中配置mapper.xml的位置
<mappers> <mapper resource="mapper.xml文件的地址" /> <mapper resource="mapper.xml文件的地址" /> </mappers>
1
2
3
4 - 定义mapper接口
- 实现类集成SqlSessionDaoSupport mapper方法中可以this.getSqlSession()进行数据增删改查。
- spring 配置
<bean id=" " class="mapper接口的实现"> <property name="sqlSessionFactory" ref="sqlSessionFactory"></property> </bean>
1
2
3
- 在sqlMapConfig.xml中配置mapper.xml的位置
第二种:使用org.mybatis.spring.mapper.MapperFactoryBean:
- 在sqlMapConfig.xml中配置mapper.xml的位置,如果mapper.xml和mappre接口的名称相同且在同一个目录,这里可以不用配置
<mappers> <mapper resource="mapper.xml文件的地址" /> <mapper resource="mapper.xml文件的地址" /> </mappers>
1
2
3
4 - 定义mapper接口:
- mapper.xml中的namespace为mapper接口的地址
- mapper接口中的方法名和mapper.xml中的定义的statement的id保持一致
- Spring中定义
<bean id="" class="org.mybatis.spring.mapper.MapperFactoryBean"> <property name="mapperInterface" value="mapper接口地址" /> <property name="sqlSessionFactory" ref="sqlSessionFactory" /> </bean>
1
2
3
4
- 在sqlMapConfig.xml中配置mapper.xml的位置,如果mapper.xml和mappre接口的名称相同且在同一个目录,这里可以不用配置
第三种:使用mapper扫描器:
- mapper.xml文件编写: mapper.xml中的namespace为mapper接口的地址; mapper接口中的方法名和mapper.xml中的定义的statement的id保持一致; 如果将mapper.xml和mapper接口的名称保持一致则不用在sqlMapConfig.xml中进行配置。
- 定义mapper接口: 注意mapper.xml的文件名和mapper的接口名称保持一致,且放在同一个目录
- 配置mapper扫描器:
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="mapper接口包地址"></property> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/> </bean>
1
2
3
4 - 使用扫描器后从spring容器中获取mapper的实现对象。