Mybatis

Mybatis

@param_mybatis的参数绑定

Mybatis提供了一个注解@Param:参数绑定
Param("将指定的参数绑定到这个注解中,起一个名称")
Student findStudentByNameAndAddress(@Param("name") String name,@Param("addr") String address) ;
实体类的别名包扫描,别名就是默认当前类名(类名不区分大小写,建议使用小写)
    <package name="包名">
    例如:
    <select id="findStudentByNameAndAddress"
            resultType="student">
        select * from student where name = #{name} and
        address = #{addr}
    </select>
复杂参数类型Map:
    Map就是实体<K,V>,添加任何实体信息    

实体类的属性名称和表中的字段不对应的情况

方式1:在查询的时候不要使用*,而且给出具体的字段名称,别名和实体类的属性名称一直即可
方式2:mybatis的高级输出映射
        resultMap:首先在映射文件中定义resultMap,然后在具体的增删改,查询语句中将reusltMao引入 ,resultMap里面就是可以将每一个字段和实体类的属性一一映射!
        什么使用它? 1)当实体类属性和字段一样 2)mybatis多表查询的时候可以用 
定义resultMap
            id:resultMap它的标识id
            type:就是实体类的全限定名称/别名  (返回值类型)  
 <resultMap id="myMap" type="student">
        <id property="stuId" column="id"></id>
        <!--普通字段和实体类的其他属性名称一一对应-->
        <result property="stuName" column="name"></result>
        <result property="stuAge" column="age"></result>
        <result property="stuAddress" column="address"></result>
        <result property="stuBirthday" column="birthday"></result>
    </resultMap>  
配置主键字段: 表中主键字段 id 和 实体类的属性 id一致
            property:实体类的属性名称 stuId
            column:表中字段列的名称 主键id

动态SQL

where

mybatis 提供动态的where 标签,代替 where关键字,简化sql书写
此时后面的条件进行判断 当前这些属性不为null的时候才能查询
           mybatis提供了常用的动态sql语句,if标签
                    test属性:判断当前实体类型的属性是否满足条件,true还是false,true则执行,
                    否则不执行
<select id="findStudentByConditon"  resultMap="myMap">
        <include refid="mySelectSql"/>  
         <where>
             <if test="stuName!=null">
                 name = #{stuName}
             </if>
             <if test="stuAddress!=null">
                and  address = #{stuAddress}
             </if>

         </where>
    </select>
                    

foreach

对集合进行遍历
<select id="selectPostIn" resultType="domain.blog.Post">
  SELECT *
  FROM POST P
  WHERE ID in
  <foreach item="item" index="index" collection="list"
      open="(" separator="," close=")">
        #{item}
  </foreach>
</select>
      foreach 允许指定一个集合,声明可以在元素体内使用的集合项(item)和索引(index)变量。允许指定开头与结尾的字符串以及集合项迭代之间的分隔符。这个元素不会错误地添加多余的分隔符.
foreach标签里面有一些属性
            collection:当前实体类中封装的集合属性名称
            open:使用子查询 in(x,x,x) 以什么格式开始查询现在"id in ("
                        separator:分割符号,隔开
                       close:以什么格式结束")"
                       item:循环遍历过程中的变量名称
                       foreach中间的内容 #{item里面指定的变量名称}

通过id查询用户—在查询所有账户的时候,将账户从属于的某个用户查询出来

//UserMapper接口
  /**
     * 要通过id查询用户
     * @param id
     * @return
     */
    User findUserById(Integer id) ;
//UserMapper.xml
 <!--通过用户id查询用户实体
        User findUserById(Integer id) ;
    -->
    <select id="findUserById" parameterType="java.lang.Integer"
    resultType="user">
        <include refid="userSelectSql"/>
        <where>
            <if test="id !=null">
                id = #{id}
            </if>
        </where>
    </select>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值