SSM框架Mybatis之Mapper代理开发

来源:互联网 发布:saas平台多租户 mysql 编辑:程序博客网 时间:2024/05/16 12:59

 MyBatis可以自动生成Mapper接口的代理对象(即Mapper实现类),我们可以利用这一点来简化原始DAO开发的代码。 

  在Mapper代理开发DAO时,需要遵循以下四条开发规范:

  • Mapper.xml中的namespace是Mapper接口的全路径地址;
  • Mapper接口中的方法名和Mapper.xml文件中statement的id相同;
  • Mapper接口中方法的输入参数类型和Mapper.xml中statement的parameterType相同;
  • Mapper接口中方法的返回值类型和Mapper.xml中statement的resultType相同。

  以下是代码:

  Mapper.xml中的namespace代码:

<mapper namespace="com.itgungnir.hellomybatis.mapper.EmployeeMapper">        ……</mapper>

  Mapper接口中的代码:

复制代码
public interface EmployeeMapper {    Employee findEmployeeById(int empNo) throws Exception;    List<Employee> findEmployeeByName(String name) throws Exception;    void insertEmployee(Employee employee) throws Exception;    void updateEmployee(Employee employee) throws Exception;    void deleteEmployee(int empNo) throws Exception;}
复制代码

  测试代码:

复制代码
public class EmployeeMapperTest {    private SqlSessionFactory factory;    // 此方法在执行下面的所有方法之前执行    @Before    public void setUp() throws Exception {        // 创建SqlSessionFactory        // MyBatis配置文件        String resource = "SqlMapConfig.xml";        // 得到配置文件流        InputStream is = Resources.getResourceAsStream(resource);        // 创建会话工厂,传入MyBatis配置文件的信息        factory = new SqlSessionFactoryBuilder().build(is);    }    @Test    public void testFindEmployeeById() throws Exception {        SqlSession session = factory.openSession();        EmployeeMapper mapper = session.getMapper(EmployeeMapper.class);        Employee employee = mapper.findEmployeeById(7369);        session.close();        System.out.println(employee);    }}
复制代码

  由于Mapper代理方式简单,又避免了代码的硬编码,因此现在通常都使用这种方式。

在spring配置文件中需要配置一下内容:

</bean><!-- SqlSessionFactory --><!-- 让spring管理sqlsessionfactory 使用mybatis和spring整合包中的 --><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">   <!-- 数据库连接池 -->   <property name="dataSource" ref="dataSource" />   <!-- 加载mybatis的全局配置文件 -->   <property name="configLocation" value="classpath:mybatis/SqlMapConfig.xml" />   <property name="mapperLocations" value="classpath:com/vastsum/dao/*.xml"/></bean><!-- Mapper映射文件的包扫描器 --><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">   <property name="basePackage" value="com.vastsum.dao" /></bean>

注意:红色字体部分是表示扫描mapper.xml文件。

如果使用intellij idea开发工具,你会发现在Service层依赖注入Mapper时会报错,这时需要再dao接口层加上@Rrpository注解。

最后还要注意spring、mybatis、mybatis-spring这三者之间的版本。

如下这个版本是可以通过测试的

spring:4.3.7

mybaits:3.4.2

mybatis-spring:1.3.1






原创粉丝点击