MyBatis中Mapper的文件配置讲解二 (四)

MyBatis中Mapper的文件配置讲解

学习要点

sql的使用
parameters参数的使用
ResultMaps

sql的使用

sql元素标签可以被用来定义可复用的sql语句,可以包含在其他的语句中,它可以被静态的(在加载参数时)参数化,不同的属性值通过包含的实例发生变化。
<!--统计使用-->
<sql id="sqlcont">
          select count(*)
</sql> 
    
<!--查询全部使用-->
<sql id="sqlall">
        select *
</sql>

<!--查询表名-->       
<sql id="sqltable">
        from USER
</sql>

<select id="sqlSelectByAny" resultType="map">
    <include refid="sqlall"></include>
    <include refid="sqltable"></include>
</select>

parameters参数的使用

我们前面也举过很多的例子,比如查询的时候设置的入参类型int,传入的id来进行查询,下面就来看看MyBatis的简单参数传递的方式:

1:简单基本数据类型传递,这个就是设置一个int型,然后传递的id就被设置为int类型传递过去,当然如果这时候我们传递的参数是String类型,就会报转型错误
<select id="selectUserByDiffProperties" resultType="com.pkk.entity.User1" parameterType="int">
           SELECT id,username as name,password FROM USER where id = #{id}
</select>

2.传递实体类型,这样下面的参数username,password就会从user实体类中获取属性值。
<update id="updateUserById1" timeout="10" flushCache="false" parameterType="com.pkk.entity.User">
        <if test="id!=null">
            UPDATE USER u SET u.username = #{username,jdbcType=VARCHAR} , u.password = #{password,jdbcType=VARCHAR}
            where
            u.id = #{id}
      </if>
</update>

ResultMaps/ResultType的使用

ResultMaps是Mybatis中最强大的元素之一,他的作用是从数据库取出的数据与想要的实体做相对应,即把数据库的数据转换为实体的属性值。

1.使用场景1(单表数据库字段与实体属性不一)
数据库字段与实体属性不一致如何映射–[代码例子]

<!--添加User1的关联映射-->
    <resultMap id="user1" type="com.pkk.entity.User1">
        <id column="id" property="id"/>
        <!--column为数据库的字段名property是java实体的属性名-->
        <result column="username" property="name"/>
        <result column="password" property="password"/>
    </resultMap>

    属性解析:
        1.resultMap 级别的id是resultMap的唯一标识,引用时候使用
        2.type:resultMap 实际实际返回数据类型
            1.子元素id:数据库的主键id,column:数据库字段,property实体属性。
            2.子元素:result 表示普通列,column:数据库字段,property实体属性。

2.使用场景2(关联映射根据外键查询相关信息)
MyBatis关联映射根据依靠外键多表关联映射查询相关信息–[代码例子]

3.使用场景3(关联映射根据一方查询多方的信息)
MyBatis关联映射根据部门查询部门下的所有用户信息–[代码例子]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值