MyBatis

作者: 维乾 | 来源:发表于2017-10-08 09:17 被阅读95次

    简介

    1.什么是MyBatis

    MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、结果集检索等jdbc繁杂的过程代码。

    Mybatis通过xml或注解的方式将要执行的各种statement(statement、preparedStatemnt、CallableStatement)配置起来,并通过java对象和statement中的sql进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射成java对象并返回。

    2,为什么需要MyBatis

    MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。

    3.如何使用MyBatis

    需要导入两个包

    1.创建mybatis-config.xml文件,在该文件中完成和数据库的连接设置操作

    首先需要创建xml文件,再导入dtd文档类型定义。

    写配置文件需要安装一定的顺序。

    有四种引入映射文件的方法。

    类路径、本地文件路径、接口类路径、包名引入。

    新的方法  会将test.cwq.shop.model 包中的POJO类一首字母小写的非限定类名作为别名。  不过,Mybatis 的别名不区分大小写。

    2.根据数据表创建相应的实体类

    3.创建mapper文件完成对实体类的映射,该文件同样是xml文件

    <SQL>元素

    4.创建SQLSessionFactory  根据factory获取Session   直接根据Session 来执行相应的操作


    5.insert,update,delete,select

    insert标签表示添加相应的对象信息,paramterType表示添加的对象类型


    update表示更新操作,delete表示删除操作   select表示查询操作,可以查询列表或者单个对象

    相应的调用方式


    6.xml中两种的引用

    1、#{xxx}这种方式会自动将这个值替换为PreparedStatment中?来使用,如果是字符串会自动加上引号,对于排序而言就无法操作

    2、${xx}这种方式叫做完全替换,直接将字符串完整的替换到这个位置,完全替换的方式可能会出现SQL注入的安全隐患。建议在参数中不要使用这种方式。但是如果使用在排序中没有任何影响


    update表示更新操作,delete表示删除操作

    7.也可以用annotation 

    就不需要类的xml文件 只要写一个类接口 

    8.SQL动态查询

    只要test属性为true 就会执行元素中的条件

    9.constructor

    MyBatis使用参数类型来标记构造器,将结果注入构造器。Java无法通过发射获取参数名称,所以在创建constructor元素时,要确保参数按顺序传递、并且指定正确的参数类型。

    注意事项(如果问题向mybatis官网找答案。

    1.注意不同的xml类型的文件 dtd 不同。

    2.configuration配置文件的节点顺序是不能改变的。

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

    ${} 无法防止注入问题。

    4.collection和association的区别

    api解释

    Mybatis处理“一对多”的关系时,需要用到associasion元素。处理”多对一“用collection元素来实现(这两个元素在之前mapper文件中提到过)。

    association的用法。


    主键关联。一对一关系,通过主键查询一个结果集,将结果集封装成addressMap。而只能用javaType=address  没有为什么 这是一种规定。如果是collection只能用ofType.

    collection的用法


    列表关联。一对多关系,将通过id查找一个或多个结果集。将结果集封装成userMap。而数据类型只能用 ofType表示。

    相关文章

      网友评论

        本文标题:MyBatis

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