MyBaits框架基础

  1. Sql映射文件

    (1)Sql映射文件是MyBatis框架最具有特色部分,功能强大使用简单

    (2)Sql映射文件中的几个顶级元素有,mapper、cache、cache-ref、resultMap、sql、insert、update、delete、select。

  2. MyBatis框架的条件查询

    (1)多参数查询

    //接口代码
    List<StorageRecord> getByIdList(@Param("goodsName")String goodsName,@Param("supplierId")Integer supplierId,@Param("payStatus")Integer payStatus);
    
    //Sql映射文件代码
    <select id="getByIdList" resultType="StorageRecord">
        select * from t_storage_record where goodsName like concat('%',#{goodsName},'%') and supplierId=#{supplierId} and payStatus=#{payStatus}
        </select>
    

    (2)单一查询   

//接口代码
    List<User> getUsersByRealName(String Name);

//Sql映射代码

    <select id="getUsersByRealName" resultType="User">
        select * from t_sys_user where realName like concat('%',#{name},'%')
    </select>

 (3)框架结果映射

MyBatis框架会自动获取结果集中的列名称并查找具有相同名称的属性

(4)使用resultMap元素自定义结果映射

//接口代码
List<User> getUserListWithRoleName(User user);

//Sql映射代码
    <select id="getUsersByRealName" resultType="User">
        select * from t_sys_user where realName like concat('%',#{name},'%')
    </select>

(5)嵌套结果映射

使用连接查询的时候,结果集中往往会包含多个实体类的相关信息,此时可以使用嵌套结果映射

       associtation元素:assoctiation元素用来处理一对一或多对一的结果

//接口代码
    List<User> getUserListByRoleId(@Param("roleId")Integer roleId);

//Sql映射代码

    <resultMap id="userWithSysRole" type="User">
        <id property="id" column="id"/>
        <result property="realName" column="realName"/>
        <association property="sysRole" javaType="sysRole">
            <result property="code" column="code"/>
            <result property="roleName" column="roleName"/>
        </association>
    </resultMap>
    <select id="getUserListByRoleId" parameterType="int" resultMap="userWithSysRole">
        select u.*,r.id as rid,r.code,r.roleName from t_sys_user u,t_sys_role r where u.roleId=#{roleId} and u.roleId=r.id
    </select>

       property:实体类中用来映射结果子集的属性

       javaType:property指定的属性数据类型

     collection元素:表达的是一对多的关系

//接口代码
    List<User> getUserAndAddressesByUserId(@Param("userId")Integer userId);

//Sql映射代码

   <resultMap id="userWithAddresses" type="User">
        <id property="id" column="id"/>
        <result property="account" column="account"/>
        <result property="realName" column="realName"/>
        <collection property="addressList" ofType="address">
            <id property="id" column="aid"/>
            <result property="contact" column="contact"/>
            <result property="addressDesc" column="addressDesc"/>
            <result property="postCode" column="postCode"/>
            <result property="tel" column="tel"/>
        </collection>
    </resultMap>
    <select id="getUserAndAddressesByUserId" parameterType="int" resultMap="userWithAddresses">
        select u.*, a.id as aid, a.contact, a.addressDesc, a.postCode, a.tel
        from t_sys_user u,
             t_address a
        where u.id = a.userId
          and u.id = #{userId}
    </select>

         property:实体类中用来映射结果子集的集合属性

         ofType:指定的集合属性中的元素数据类型

  1. resultType与resultType小结

 resultMap的自动映射行为

NONE:禁用自动映射

PARTIAL:默认属性,对没有嵌套的使用自动映射,而对于没有嵌套的不使用

FULL:全部使用自动映射

  • 增删改操作
    //接口代码
    //增加
    int add(User user);
    //修改
    int updatePwd(@Param("id")Integer id,@Param("password")String pwd);
    //删除
    int deleteUserById(@Param("id")Integer id);
    
    //Sql映射代码
    //增加
     <insert id="add" parameterType="User">
            insert into t_sys_user(account,realName,password,sex,birthday,phone,address,roleId,createdUserId,createdTime) values (#{account},#{realName},#{password},#{sex},#{birthday},#{phone},#{address},#{roleId},#{createdUserId},#{createdTime})
        </insert>
    //修改
    <update id="updatePwd" >
            update t_sys_user set password=#{password} where id=#{id}
        </update>
    //删除
    <delete id="deleteUserById" >
            delete from t_sys_user where id=#{id}
        </delete>

    MyBatis框架缓存

  • 一级缓存

  • 二级缓存

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值