• 动态SQL语句怎么写


    廖万里的博客:廖万里的博客

    1 复习

    动态sql   

     多条件查询   if  where   重点!!

    双向关联  

    多对一 一对一 

    一对多  stud where gid

    resultMap 映射级别  

    列名和实体类属性不一样  

    Grade   student 

    Id主键          主键id   外键 gid

    Select s.id   gid.id  gid  from student s inner join grade g on g.id=s.gid

    二级缓存

    总配置文件中 设置开启

    映射文件中  设置缓存容量

    查询语句中  开启缓存

    choose

    类似 switch  只能选一个

    3 foreach  

    In 动态

    // SELECT * FROM student WHERE  gid IN (1,2,3)
     // 接口
    List getc(List gids);

    Mapper

    <select id="getc"  resultType="Student" >
        select from student where gid
        in
        <foreach collection="list"
                 item="gids"
                 open="(" close=")"
                 separator=","
        >
            #{gids}

        foreach>

    select>

    测试

    4 更新 set 

    不是更新所有的列,只更新改变的列

    动态更新  省去根据id查询,可以不用更新所有列

    int myupdate(Student student);

    <update id="myupdate" parameterType="Student">
        UPDATE `j78`.`student`
            <set>
              <if test="sname!=null">
                  `sname` = #{sname},
              if>
            <if test="tel!=null">
                `tel` = #{tel},
            if>
            <if test="age!=null">
                `age` = #{age},
            if>
            <if test="gid!=null">
                `gid` = #{gid} 
            if>

            set>
            WHERE `sid` = #{sid}
    update>

    5 动态增加

    目标 sql语句可以 判断 是否执行  可以为null列  ,不用写sql语句

    <insert id="addstudent" parameterType="Student">
        INSERT INTO `j78`.`student`
            (
            <if test="sname!=null">
                `sname` ,
            if>
            <if test="tel!=null">
                `tel` ,
            if>
            <if test="age!=null">
                `age`,
            if>
            <if test="gid!=null">
                `gid`
            if>
           )
        VALUES (
            <if test="sname!=null">
                 #{sname},
            if>
            <if test="tel!=null">
                 #{tel},
            if>
            <if test="age!=null">
                 #{age},
            if>
            <if test="gid!=null">
                #{gid}
            if>

        )

    insert>

    测试

    //接口
    StudentMapper sm=session.getMapper(StudentMapper.class);
    Student s=new Student();
     s.setGid(1);
     int n=sm.addstudent(s);
     System.out.println(n);

    trim

    6.1 trim查询

    6.2 set

    <update id="myupdate" parameterType="Student">
        UPDATE `j78`.`student`
        <trim prefix="set" suffix="  WHERE `sid` = #{sid}" suffixOverrides=",">  
              <if test="sname!=null">
                  `sname` = #{sname},
              if>
            <if test="tel!=null">
                `tel` = #{tel},
            if>
            <if test="age!=null">
                `age` = #{age},
            if>
            <if test="gid!=null">
                `gid` = #{gid},
            if>
        trim>
    update>

    7 总结

    动态sql语句

    1 动态查询

       多条件查询, and(if)   

       单选   choose

       In  foreach 

    2 动态更新

       Set +if

    3 动态增加

       If 

    4 trim 优化 动态sql     ,  and  

  • 相关阅读:
    智能客服,还有多少AI泡沫?
    SystemVerilog-逻辑运算符
    CRUSE: Convolutional Recurrent U-net for Speech Enhancement
    百度百科人物创建要求是什么?
    事务操作(详细讲解)
    Linux进程间通信【消息队列、信号量】
    前端跨域解决方案
    python中如何画语谱图
    病情预测:指示病情程度、预测病情指标(深度学习和Python)
    Threejs_05 几何体顶点索引
  • 原文地址:https://blog.csdn.net/kkkliao1/article/details/127682909