MyBatis 接口绑定 session.getMapper( ) 和 多参数传递

MyBatis 接口绑定方案 session.getMapper( )

作用:创建一个接口后,由 mybatis 把 mapper.xml 生成接口的实现类,通过调用接口对象就可以获取 mapper.xml 中编写的 sql.

mybatis 和 spring 整合时使用的是该方案.

实现步骤:

  1. 创建一个接口
    1.1 接口包名和接口名与 mapper.xml 中< mapper namespace=" ">相同
    在 com.xxacker.mapper 下新建接口 ( UserMapper.java )
    public interface UserMapper {
    	List<User> selAll();
    	}
    
    1.2 接口中方法名和 mapper.xml 标签的id 属性相同
    在 com.xxacker.mapper 新建一个 ( LogMapper.xml )
    1.2.1 namespace 必须和 接口全限定路径 ( 包名 + 类名 ) 一致
    1.2.2 id 值 必须和 接口中方法名 相同
    1.2.3 如果接口中方法为多个参数,可以省略 parameterType
<mapper namespace="com.xxacker.mapper.UserMapper">
	<select id="selAll" resultType="user">
		select * from t_user
	</select>
</mapper>
  1. 在 mybatis.xml 中使用< package>进行扫描接口和 mapper.xml
<mappers>
	<package name="com.xxacker.mapper"/>
</mappers>
  1. 业务层逻辑
InputStream is = Resources.getResourceAsStream("mybatis.xml");			//加载配置文件
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);	//创建session工厂
SqlSession session = factory.openSession();		//创建session

//底层使用了 JDK动态代理设计模式 
UserMapper userMapper = session.getMapper(UserMapper.class);	//获取mapper
List<User> list = userMapper.selAll();		//调用sql语句
for(User user : list){
	System.out.println(user);
}

session.close();

多参数传递

方式一:

<!-- 当多参数时,不需要写 parameterType 
	  #{}中使用 0,1,2 或 param1,param2
-->
<select id="selByAccInAccout" resultType="log" >
	select * from log where accin=#{0} and accout=#{1}
</select>

方式二:

  1. 在接口中使用注解方式
/**
* mybatis 把参数转换为 map 了,其中@Param("key") 参数内容就是 map 的 value
*/
List<Log> selByAccInAccout(@Param("accin") String accin123,
							@Param("accout") String accout3454235);
  1. #{ } 里面写 @Param(“内容”) 参数中内容
<!-- 当多参数时,不需要写 parameterType -->
<select id="selByAccInAccout" resultType="log" >
	select * from t_user where accin=#{accin} and accout=#{accout}
</select>

猜你喜欢

转载自blog.csdn.net/Xxacker/article/details/85939384
今日推荐