Mybatis动态标签

作者: hahahehe123 | 来源:发表于2017-11-29 19:46 被阅读0次

    大家好,我是IT修真院,一枚正直纯洁善良的如刚入门的Java程序员,今天试着给大家分享一下关于mybaits动态标签的内容


    背景介绍

    mybatis是什么?说起用JDBC访问数据库,除了需要自己写SQL之外,还要操作Connection, Statment, ResultSet 这些手辅助性质的代码;

    访问不同的表,还会写很多雷同的代码,繁琐和枯燥。而用Mybatis,只需要提供关键性的SQL语句,其他的工作,像加载驱动,建立连接,Statement,

    JDBC相关的一些动作交给Mybatis,减少重复性的工作,更多的关注在增删改查等操作层面上,把技术细节封装在底层


    知识剖析

    传统的使用JDBC的方法,有时候需要组合复杂的的SQL语句,还需要去拼接,稍不注意什么空格,引号;都会导致错误。Mybatis的动态SQL功能正是为了解决这种问题,

    其通过 if, choose, when, otherwise, trim, where, set, foreach标签,可组合成非常灵活的SQL语句,从而提高开发人员的效率。


    编码实战

    最大的问题就是不会用,直接看代码吧,小demo

    常用

    更多讨论

    1;mybatis中sql语句的#{}占位符和${}占位符有什么区别?

    ${}是Properties文件中的变量占位符,它可以用于标签属性值和sql内部,属于静态文本替换,比如${driver}会被静态替换为com.mysql.jdbc.Driver。#{}是sql的参数占位符,Mybatis会将sql中的#{}替换为?号,在sql执行前会使用PreparedStatement的参数设置方法,按序给sql的?号占位符设置参数值,

    2;MyBatis中的标签和where子句的区别?

    一个是标签,一个是sql语句,二者可以达到同样的效果,但是前者更灵活

    3;set和if 两个都可以判断两个条件是不是空,这两个有啥区别 ?

    一个用于update;另一个if更准确的说是where,适用于select

    4;Mybatis是如何将sql执行结果封装为目标对象并返回的?

    通过设置返回值类型,resulttype/resultmap

    5;当实体类中的属性名和表中的字段名不一样 ,怎么办 ?

    会查询出null;这个时候可以再开头设置号map;对应字段;类似于起别名

    6;数据库字段有下划线?

    同上;

    7;动态标签和动态sql???

    不一个概念;一个是标签;一个是注解的sql语句

    8;set的时候我传一个Student进去,都不为null,但是我只想改他的体重字段能不能办到,按照if !=null的话,三个字段都会update吧?

    你传进去三个,但是只接受俩.......

    9;type和map???

    MyBatis中在查询进行select映射的时候,返回类型可以用resultType,也可以用resultMap,resultType是

    直接表示返回类型的,而resultMap则是对外部ResultMap的引用,但是resultType跟resultMap不能同时存在。

    在MyBatis进行查询映射时,其实查询出来的每一个属性都是放在一个对应的Map里面的,其中键是属性名,值则是其对应的值。①当提供的返回类型属性是resultType时,MyBatis会将Map里面的键值对取出赋给resultType所指定的对象对应的属性。

    所以其实MyBatis的每一个查询映射的返回类型都是ResultMap,只是当提供的返回类型属性是resultType的时候,MyBatis对自动的给把对应的值赋给resultType所指定对象的属性。②当提供的返回类型是resultMap时,

    因为Map不能很好表示领域模型,就需要自己再进一步的把它转化为对应的对象,这常常在复杂查询中很有作用。


    参考文献

    http://blog.csdn.net/jpzhu16/article/details/52810747

    https://www.cnblogs.com/dongying/p/4092662.html

    https://www.cnblogs.com/zkongbai/p/5336015.html

    http://how2j.cn/k/mybatis/mybatis-tutorial/1087.html?p=13495


    PPT

    视频

    欢迎加入java任务体系


    多多指教,错误之处!!!

    相关文章

      网友评论

        本文标题:Mybatis动态标签

        本文链接:https://www.haomeiwen.com/subject/mhppbxtx.html