mybatis学习1

一、mybatis步骤

1、根据xml配置文件(全局配置文件)创建一个SqlSessionFactory对象 有数据源一些运行环境信息
2、sql映射文件;配置了每一个sql,以及sql的封装规则等。
3、将sql映射文件注册在全局配置文件中
4、写代码:
   1)、根据全局配置文件得到SqlSessionFactory;
   2)、使用sqlSession工厂,获取到sqlSession对象使用他来执行增删改查
     一个sqlSession就是代表和数据库的一次会话,用完关闭
   3)、使用sql的唯一标志来告诉MyBatis执行哪个sql。sql都是保存在sql映射文件中的。

二、settings部分设置参数(全局配置文件中)

三.参数值的获取

#{}:可以获取map中的值或者pojo对象属性的值;
${}:可以获取map中的值或者pojo对象属性的值;


select * from tbl_employee where id=${id} and last_name=#{lastName}
Preparing: select * from tbl_employee where id=2 and last_name=?
  区别:
    #{}:是以预编译的形式,将参数设置到sql语句中;PreparedStatement;防止sql注入
    ${}:取出的值直接拼装在sql语句中;会有安全问题;
    大多情况下,我们去参数的值都应该去使用#{};

    原生jdbc不支持占位符的地方我们就可以使用${}进行取值
    比如分表、排序。。。;按照年份分表拆分
      select * from ${year}_salary where xxx;
      select * from tbl_employee order by ${f_name} ${order}

#{}:更丰富的用法:
  规定参数的一些规则:
  javaType、 jdbcType、 mode(存储过程)、 numericScale、
  resultMap、 typeHandler、 jdbcTypeName、 expression(未来准备支持的功能);

  jdbcType通常需要在某种特定的条件下被设置:
    在我们数据为null的时候,有些数据库可能不能识别mybatis对null的默认处理。比如Oracle(报错);

    JdbcType OTHER:无效的类型;因为mybatis对所有的null都映射的是原生Jdbc的OTHER类型,oracle不能正确处理;

    由于全局配置中:jdbcTypeForNull=OTHER;oracle不支持;两种办法
    1、#{email,jdbcType=OTHER};
    2、jdbcTypeForNull=NULL
      <setting name="jdbcTypeForNull" value="NULL"/>

四、OGNL

原文地址:https://www.cnblogs.com/djdjfj/p/9620460.html