mybatis 基础(二) xml文件中的其他知识点

时间:2023-03-09 03:16:22
mybatis 基础(二) xml文件中的其他知识点

mybatis xml文件中一些标签的使用

  1. 此标签主要用作 配置 "别名"

    如果实体类与数据库中字段名在不区分大小写的情况下相同的话,

    那就不需要配置resultMap,因为mysql数据库不区分大小写,所以可以直接映射上

    但是如果实体类与数据库中字段名不相同的话,我们可以由三个解决方案

    1. 直接修改数据库字段名,使之与实体类对应上
    2. 在程序中配置文件中对sql语句改造,起别名,使之与实体类映射上 (直接操作sql语句效率更高)

      如: select gender as usergender,age as userage from user;
    3. 写配置文件 resultMap,使之映射上,但是需要修改resultType="com.mybatis.entry.User" 为 resultMap="userMap" (方便)
 <resultMap id="userMap" type="com.mybatis.entry.User">
<!--首先配置主键对应-->
<id column="uid" property="userUid"></id>
<!--其他属性配置-->
<result column="username" property="userName"></result>
<result column="gender" property="userGender"></result>
<result column="age" property="userAge"></result>
</resultMap>

2.typeAliases 标签

主要作用是起别名, 便于开发中简化一些文字

其中typeAlias的作用 :type指定类,alias指定别名

如这里修改了User.class的名字为user,  则在User.xml中的com.mybatis.entry.User全部可以改成user  或者 他的任意大小写形式,这里不区分大小写的
package的作用: 指定包,该包下所有的类都建立的别名,别名默认为该类的小写形式,同样不区分大小写
    <typeAliases>
<!-- <typeAlias type="com.mybatis.entry.User" alias="user"></typeAlias>-->
<package name="com.mybatis.entry"></package>
</typeAliases>

3.

<mappers>
<mapper resource="com/mybatis/dao/IUserDao.xml"></mapper>
<!--package 指定dao接口所在的包,当指定后不需要再写mapper以及resource或者class了-->
<!-- <package name="com.mybatis.dao"></package>-->
</mappers>

4.假如包含多个条件时,可以使用标签的方式进行条件查询, 当包含出基本实体类的其他条件时,可以新建一个实体类,将所需的条件全部放入其中,用新的实体类去进行条件的获取

<select id="findByCondition" parameterType="user"  resultType="user">
select * from user
<!-- 这里的userName 对应的也是实体类中的属性-->
<where>
<if test="userName!=null">
username=#{userName}
</if>
<if test="gender!=null">
and gender=#{gender}
</if>
</where>
</select> <!--多个id,新建实体类,传入id集合,并用foreach标签遍历ids-->
<select id="findByIds" parameterType="vo" resultType="user">
select * from user
<!-- 这里的userName 对应的也是实体类中的属性-->
<where>
<if test="ids !=null and ids.size()>0">
<foreach collection="ids" open=" uid in (" close=")" item="uid" separator=",">
#{uid}
</foreach>
</if>
</where>
</select>

5.当某sql语句重复出现,可以使用标签提取sql. 然后再语句中使用包含进来

 <!--提取sql语句,避免重复-->
<sql id="defaultUser" >
select * from user
</sql>
<!--获得所有用户列表-->
<!--<select id="getUsers" resultMap="userMap">-->
<select id="getUsers" resultType="com.mybatis.entry.User">
<include refid="defaultUser"></include>
// select * from user
</select>

相关文章