sql映射文件

来源:互联网 发布:风暴大陆坐骑进阶数据 编辑:程序博客网 时间:2024/06/05 22:45


列举SQL映射文件的几个顶级元素
mapper:映射文件的跟元素节点,只有一个属性namespace(命名空间).其作用如下:
用于区分不同的mapper,全局唯一
绑定DAO接口,即面向接口编程。当namespace绑定某一接口之后,可以不用写该接口的实现类,MyBatis会通过接口的完整限定名查找到对应的mapper配置文件来执行SQL语句。因此namespace的命令必须要跟接口同名


cache:配置给定命名空间的缓存


cache-ref:从其他命名空间引用缓存配置


resultMap:用来描述数据库结果集和对象的对应关系

sql:可以重用SQL块,也可以被其他语句引用


insert:映射插入语句
resultType和resultMap的区别是什么
返回类型可以用resultType也可以用resultMap
resultType是直接表示返回类型
resultMap则是对外部ResultMap的引用
两者不能同时存在




MyBatis多参数入参如何处理?有几种方式
一、#{参数索引}
1.        DAO层
Mapper接口类
User logon(String user_name,Stringpassword);
Mapper.xml文件
<select id="logon" resultMap="UserResultMap" >
    select
    <include refid="Base_Column_List"/>
    from sys_user
    WHERE user_name = #{0} and password = #{1}
</select>
这里用的是#{参数索引}


2.        Service层
Service接口类
User logon(String user_name,String password);
Service实现类
@Override
public User logon(String user_name, String password) {
   return userMapper.logon(user_name,password);
}


二、Map传参数
1.        DAO层
Mapper接口类
User logon(Map map);
Mapper.xml文件
<select id="logon" resultMap="UserResultMap" >
    select
    <include refid="Base_Column_List"/>
    from sys_user
    where user_name = #{user_name,jdbcType=VARCHAR} and password = #{password,jdbcType=VARCHAR}
</select>
这里接口方法传入的map
2.        Service层
Service接口
User logon(String user_name,String password);
Service实现类
@Override
   public User logon(String user_name, String password) {
      Map paramMap=new HashMap();
      paramMap.put("user_name",user_name);
      paramMap.put("password",password);
      User user=userMapper.logon(paramMap);
      return user;
   }
Service层实现了要将参数与map绑定


三、注解方法传参数
1.        DAO层
Mapper接口类
User logon(@Param("user_name")String user_name,@Param("password")String password);
Mapper.xml文件
<select id="logon" resultMap="UserResultMap" >
    select
    <include refid="Base_Column_List"/>
    from sys_user
    where user_name = #{user_name,jdbcType=VARCHAR} and password = #{password,jdbcType=VARCHAR}
    </select>
这里主要注意接口传入参数前面加了@Param注解
2.        Service层
Service接口
User logon(String user_name,String password);
Service实现类
@Override
   public User logon(String user_name, String password) {
      return userMapper.logon(user_name,password);
   }




mapper元素的namespace属性的作用是什么
 namespace决定了action的访问路径,默认为"",可以接受所有路径的action


不同的SQL映射文件,元素的ID必须不同吗


谈谈你对association和collection元素的理解
public class A{
    private B b1;
    private List<B> b2;
}
在映射b1属性时用association标签, 映射b2时用collection标签,分别是一对一,一对多的关系
原创粉丝点击