MyBatis3 接口绑定方案实现

第一节(接口绑定)

什么是接口绑定

了解

 

要遵循的规范

掌握

 

参数传递问题

掌握

  1. 什么是接口绑定     
  • 接口绑定, 是MyBatis中提供的一种比较灵活的数据库操作方案. 用于解决方法调用不灵活, 参数传递不灵活的问题. 通过接口绑定, 还可以像之前使用dao一样去使用MyBatis.
  • 和dao不同的是, 在MyBatis的接口绑定实现过程中, 程序员只需要提供接口, 不需要提供实现类. 但是, 需要提供与接口匹配的映射配置文件. 前提是程序员需要遵循特定的规范.
  • 使用接口绑定后, 可以简化方法的调用和参数的传递.

   2.实现接口绑定需要遵循的规范

  1. 必要规范: 必须遵循的规范
  • 映射配置文件中, mapper的namespace属性必须和接口的全限定路径一致
  • 操作数据库的标签的id属性必须和接口中对应方法的名称一致
  1. 可选规范: 选择遵循, 如果遵循, 还可以进一步简化(在核心配置文件中可以使用package标签进行映射文件的统一扫描)
  • 映射文件的命名和接口命名一致
  • 映射文件和接口放在同一个目录

 3.接口绑定中获取接口类型对象的方式

    SqlSession对象中提供了一个方法, 用于获取接口类型的对象, 叫: getMapper(接口的Class对象)

4.接口绑定方案中参数传递问题

  1. 可以传递简单类型, 和之前一样
  2. 可以传递Map集合, 只能通过key获取
  3. 可以传递POJO对象, 只能通过getter方法对应的属性获取
  4. 多值传递:
    1. 不使用注解, 可以通过param1, param2, ...或arg0, arg1, ...的方式获取
    2. 使用注解, 使用@Param注解, 由MyBatis将参数封装为Map集合, 可以通过key获取, 也可以通过param1, param2,...获取, 不能通过arg0, arg1,...方式获取.
  5. 代码实现   
public interface UserMapper {
    List<User> selAll();

    User sel4Login(@Param("name") String username, @Param("pwd") String password);

    User sel4Login2(Map<String, String> params);
}
<?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">
<mapper namespace="com.bjsxt.mapper.UserMapper">
    <select id="selAll" resultType="user">
        select * from tb_user
    </select>

    <select id="sel4Login" resultType="user">
        select * from tb_user where username=#{name} and password=#{pwd}
    </select>

    <select id="sel4Login2" resultType="user">
        select * from tb_user where username=#{name} and password=#{pwd}
    </select>
</mapper>
@Test
public void test1() {
    SqlSession session = MyBatisUtil.getSession();

    UserMapper mapper = session.getMapper(UserMapper.class); 
    User user = mapper.sel4Login("zhangsan", "123");

    session.close();
}

需要解决问题和获取学习资料可以加群 272112643 :我经常在群里面解决问题 分享学习视频和资料 共同成长!!。 

发布了320 篇原创文章 · 获赞 152 · 访问量 64万+

猜你喜欢

转载自blog.csdn.net/hello_word2/article/details/104780483