• mybatis映射文件mapper.xml的写法(collections...)


    转自:https://blog.csdn.net/two_people/article/details/51759881

    在学习mybatis的时候我们通常会在映射文件这样写:

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper
    PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="com.qbd.mapper.StudentMappers">
        <select id="findbyid" parameterType="Integer" resultMap="StudentResult">
            select *from student where id=#{id}
        </select>
        
        <select id="findbygradeid" parameterType="Integer" resultMap="StudentResult">
            select *from student where gid=#{gid}
        </select>
        
        <resultMap type="Student" id="StudentResult">
            <id property="id" column="id"/>
            <result property="name" column="name"/>
            <result property="age" column="age"/>
            <association property="address" column="addid" select="com.qbd.mapper.AddressMappers.findbyid">    
            </association>
            <association property="grade" column="gid" select="com.qbd.mapper.GradeMappers.findbyid">    
            </association>
        </resultMap>
    </mapper>

    来读取配置文件

    另一种方法就是:

    直接在mapper.xml中的这一部分写成dao<mapper namespace="com.qbd.mapper.StudentMappers">如下

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper
    PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="com.qbd.ssm.dao.UserDao">
        <!-- 定义缓存  一般是一级缓存,如果用同一个sqlsession 那么相同查询直接会从缓存中查找 
        <cache size="1024" flushInterval="60000" eviction="LRU" readOnly="false"></cache>
        -->
        <!-- 查找所有 -->
        <select id="find" parameterType="Map" resultMap="StudentResult">
            select * from user
            <where>
                <if test="uname!=null and uname!='' ">
                    and uname like #{uname}
                </if>
            </where>
            <if test="start!=null and size!=null">
                limit #{start},#{size}
            </if>
        </select>
        
        <select id="getTotal" parameterType="Map" resultType="Long">
            select count(*) from user
            <where>
                <if test="uname!=null and uname!='' ">
                    and uname like #{uname}
                </if>
            </where>
        </select>
        <!-- 按照用户名和密码查找 -->
        <select id="getUser" resultMap="StudentResult" parameterType="Map">
            select *from user where uname=#{uname} and upassword=#{upassword}
        </select>
        <!-- 删除 -->
        <delete id="delete" parameterType="Map">
            delete from user where uid=#{uid}
        </delete>
        <!-- 修改 -->
        <update id="update" parameterType="User">
            update user
            <set>
                <if test="uname!=null">
                     uname=#{uname},
                </if>
                <if test="upassword!=null">
                    upassword=#{upassword},
                </if>
                <if test="upower!=null">
                    upower=#{upower},
                </if>
            </set>
            where uid=#{uid}
        </update>
        <!-- 增加 -->
        <insert id="add" parameterType="User">
            insert into user values(null,#{uname},#{upassword},#{upower})
        </insert>
        <resultMap type="User" id="StudentResult">
            <id property="uid" column="uid"/>
            <result property="uname" column="uname"/>
            <result property="upassword" column="upassword"/>
        </resultMap>
    </mapper>

    那么就不用写dao的实现在service中就能掉用       mybatis默认会把mapper.xml映射为dao的实现

  • 相关阅读:
    if 语句运用
    c#语言基础
    关于条件运算符的应用
    Could not open Hibernate Session for transaction;
    node to traverse cannot be null!
    Struts2文件下载中文名乱码
    Spring MVC框架下的第一个Hello World程序
    strtus2中的defaultactionref无效的解决方法
    c 笔记
    工具系列1
  • 原文地址:https://www.cnblogs.com/hahajava/p/9755511.html
Copyright © 2020-2023  润新知