Mybatis动态代理_mapper.xml详解_动态sql

一、mapper动态代理
通常的架构中的持久层:dao接口,daoImpl实现类。
MyBatis持久成:dao接口,dao实现类(获取会话,调用sqlSession方法进行操作数据库)还有mapper.xml映射文件。
       Mybatis持久层演变成mapper接口(dao接口)和mapper.xml映射文件。

**mapper动态代理开发的规范要求:
       1、映射文件mapper.xml名字和接口名字一致。
       2、映射文件的namespace要和接口的路径一致。
       3、映射文件中的Statement的id要与接口的方法名一致。
       4、映射文件的输入参数的类型:paramterType和接口的参数类型一致。
       5、映射文件的输出结果 类型和接口的返回类型一致。
配置批量加载mapper的映射文件


	
	

二、mapper.xml详解
parameterType:输入参数类型:Java基本类型、实体类对象、hashMap
map传参:通过#{map的key}设置值,如果找不到key,不会报错,取值为null


多参数:无需指定参数类型
       方法一:使用#{index}来取值,从0开始。


       方法二:接口参数使用@Param(“key”),然后通过#{key}的方式取值。原理:把当前的参数封装到一个map中。

/**
* 
 * 方法描述:第一种多参数的查询
 * @param sex
 * @param address
 * @return
 */
public List selectByParams(@Param("sex")String sex, @Param("addr")String address);
--------------------------------------------------------

resultType:输出结果类型:Java基本类型、实体类对象、hashMap
实体类中属性名和数据库字段名不匹配问题
       解决方法一:给sql查询的结果起别名
       SELECT carId,name AS carName,userId FROM car
       解决方法二:resultMap,可以解决属性名和字段名不一致问题;解决映射复杂类型的实体类问题。


	
	
	
	
	
	



if条件判断
当判断条件为整数类型时


条件 :会去除多余的and、or


会去除多余的逗号


	UPDATE user   
	
		
			address=#{address},
		
		
			username=#{username},
		
	
	 WHERE id=#{id}

循环
collection:传递过来的参数,可以是list、array(数组)、map的key、实体类中的属性
item:循环中的当前元素
index:当前元素的下标
open:循环的开始,以什么开始
close:循环的结束
separator:分隔符


	DELETE FROM user WHERE id IN
	
		#{id}
	

你可能感兴趣的:(SSM框架)