mybatis.xml相关语法总结

大纲

1.#{} 和 ${} 的区别: #{}为常用的,在程序编译时会将字符串添加“”处理。

2.插入数据后将对应的id返回到返回数据中:使用自增的方式设置数据库列id,并将值设置到传入的对象user.uid属性中

      useGeneratedKeys="true"   keyColumn="id"   parameterType="User"   keyProperty="uid"

3.delete

4.update

5.insert

6.select

7.There is no getter for property named 'XXXXX' in 'XXXXXXXX'

8.resultType

9.<if test=""></if>配置文件中的if判断:

         <if test="ssnr != null and ssnr != ''"></if>        <if test="sslm != null and sslm >0 "></if>

10.<foreach item="item" index="index" collection="array" open="(" separator="," close=")">便利语法

       案例: id in (1,2,3)   集合便利插入语法

 

 

 

1.#{} 和 ${} 的区别

        #{}在编译时,会将内部的参数添加“”,进而可以防止如sql注入等情况;属于最常用的,一般用于设置对应的参数;

       ${}在编译时,会将对应的字符串直接拼接,会导致sql注入等情况;一般用于如程序中产生特定的sql输入到mybatis.xml中;

    <!-- 获取网店截图  在java中根据对应的网店类型拼接了对应的sql,例:(sc.imgsort=1 or sc.imgsort=2 )-->
    <select id="QueryChopChat" resultType="ShopChat">
        select chatimg from shopschat sc where sc.sid=#{sid} AND isFalseDel != 1 and ${imgsort} order by sc.id
    </select>

    <!-- 获取某网店的信誉信息 -->
    <select id="QueryShopRate" parameterType="Long" resultType="ShopRate">
        select * from shopsrate sr where sr.shopId = #{id} limit 1
    </select>

2.insert数据后将对应的id返回到返回数据中

useGeneratedKeys使用数据库自动增长的方式,设置对应数据库表的主键列id(keyColumn指定)的数据,并将对应的数据设置到传入的参数对象(parameterType)的成员变量id(keyProperty)里面。即将id返回到返回值User的成员变量。

<!-- 插入用户 -->
<insert id="insertUser"   useGeneratedKeys="true"   keyColumn="id"   parameterType="User"   keyProperty="id">
    insert into users(loginName,loginPwd,userName)
    values(#{loginName},#{loginPwd},#{userName});
</insert>

public int insertUser(User user) throws Exception;     插入后使用user.getId()即可获取对应的id

3.删除语法

    <delete id="deleteScShop" parameterType="ShopParam">
        delete from collection where id in (${scid}) and userName=#{userName}
    </delete>

4.更新语法

    <update id="Master_UpdShopRec" parameterType="Shops">
        update shops set sp_title=#{spTitle} where id=#{id}
    </update>

5.插入语法

    <insert id="CollectShop" parameterType="ShopParam">
        insert into collection(shops_id,userName) values(#{id},#{userName})
    </insert>

6.查询语法

    <select id="GetSalerPart" parameterType="string" resultType="Sales">
        select id,qq,qqNum from sales where realname=#{realname} limit 1
    </select>

7.There is no getter for property named 'XXXXX' in 'XXXXXXXX'​​​​​​​

    当parameterType为单个入参时,如Integer,String,java.lang.Integer,java.lang.String时,如果在if判断力使用了入参的参数对象名,则产生 There is no getter for property named 'langId' in 'class java.lang.Integer'错误。故建议在为单个入参时,直接使用mybatis内置参数_parameter。在不需要if判断时,可以直接使用入参的参数对象名。

    <select id="getNoticeDetail" resultType="NoticeBean" parameterType="String">
        select n.* where n.ntype=s.id and s.sort_flag='sitenotice' 
        <if test="nid!=null and nid!=''"> and n.id=#{nid} </if>
    </select>    There is no getter for property named 'nid' in

    <select id="getNoticeDetail" resultType="NoticeBean" parameterType="string">
        select n.* where n.ntype=s.id and s.sort_flag='sitenotice' 
        <if test="_parameter!=null and _parameter!=''"> and n.id=#{_parameter} </if>
    </select>

 

8.resultType

      基本类型  :resultType=基本类型

      List类型:   resultType=List中元素的类型 ---------> 如List<User> 则resultType="User"

      Map类型    单条记录:resultType =map

                          多条记录:resultType =Map中value的类型

 

9.<if test=""></if>

<select id="getFriendLinkList" resultType="FriendLinkBean" parameterType="map">
        select * from friendlinks where 1=1
        <if test="ssnr != null and ssnr != ''">
            and sitename like '%${ssnr}%'             <!--$包含的参数则不加引号,此处用于模糊搜索-->
        </if>
        <if test="sslm != null and sslm >0 ">
            and flsort= #{sslm}                               <!--#包含的参数,系统会自动添加引号,可防止sql注入-->
        </if>
        order by siteorder asc,addtime asc limit #{paging.startPage},#{paging.lineSize};
   </select>

map.put('ssnr',ssnr值);map.put('ssnr',sslm值);map.put('ssnr',paging值);

10.<foreach>便利语法

            collection :有list、array、map三种,即实质的参数

    item : 表示在迭代过程中每一个元素的别名   index :表示在迭代过程中每次迭代到的位置(下标)

    open :前缀   close :后缀   separator :分隔符

public ArrayList<YileiList> QueryYileiList(String [] idStrArray) throws Exception;   

  sql ---->   select * from yileilist where id in ('1','2','3','4','5')  

     <select id="QueryYileiList"  resultType="YileiList">
           select * from yileilist where id in 
               <foreach item="item"   index="index"   collection="array"  open="("   separator=","   close=")">
                        #{item}
                </foreach>
    </select>

public int insertInterviewPic(List<InterviewPicBean> list) throws Exception;  

    <insert id="insertInterviewPic"  useGeneratedKeys="true" parameterType="java.util.List">
        insert into user_intervwpic (ivId,ivImg,ismob) values
        <foreach collection="list" item="item" index="index" separator="," close=";">
          (#{item.ivId}, #{item.ivImg}, #{item.ismob})
        </foreach>
    </insert>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 




 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值