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关联映射根据部门查询部门下的所有用户信息–[代码例子]