zoukankan      html  css  js  c++  java
  • Mybatis2

    Mybatis配置文件中的各个属性

    1、mybatis可以使用properties来引入外部properties配置文件的内容

                   resource:引入类路径下的资源

                   url:引入网络路径或者磁盘路径下的资源

    例子:

    dbConfig.properties(mysql)

    jdbc.driver=com:mysql.jdbc.driver

    jdbc.url=jdbc:mysql://localhost:3306//mybatis

    jdbc.username=root

    jdbc.password=123456

    dbConfig.properties(oracle)

    orcl.driver=oracle.jdbc.OracleDriver

    orcl.url=jdbc:oracle:thin:@localhsot:1521:orcl

    orcl.username=scott

    orcl.password=123456

    在全局配置文件引入dbConfig.properties

    <properties   resource="dbConfig.properties"/>

    2、Settings(改变mybatis的运行时行为)

    mapUnderscoreToCamelcase:是否开启驼峰命名规则(camel  case)映射(从经典数据库列名A_COLUMN到经典Java属性名aColumn的类似映射)

    <settings>

                   <setting  name="mapUnderscoreToCamelcase"  value="true"  />

    </settings>

    3、typeAliases:别名处理器,可以为Java类型起别名,不区分大小写

            <!--

                   typeAliases:为某个Java类型起别名

                   type:指定要起别名的类型全类名,默认别名是类名小写

                   alias:指定新的别名

                   package:为某个包下的所有类起别名,name=指定包名

    -->

    <typeAliases>

                   <typeAliases    type="com.taotao.Bean.Employee" />      

    </typeAliases>

    批量起别名的情况下,使用@Aliases注解为某个类型指定新的别名

    4、typeHandler(类型处理器)可根据需求重写类型处理器或创建定义处理器

         步骤:1、实现org.apache.ibatis.type.TypeHandler接口或继承org.apache.ibatis.BeanTypeHandler

                     2、指定映射某个JDBC类型

                     3、在mybatis全局配置文件中注册

    5、environments:环境们,mybatis可以配置多种环境   default  指定默认数据项

                environment:配置一个具体的环境信息,必须有两个标签,id代表当前环境唯一标识

                transactionManager:事务管理器   type:JDBC|MANAGER

                datasource数据源:UNPOOLED|POOLED|JNDI

    6、databaseIdProvider:支持多数据库厂商的

               type="DB_VENDOR":VendorDatabaseIdProvider:得到数据库厂商的标识

    7、mapper:将sql映射注册到全局配置中

                mapper:注册一个sql映射(配置文件)

                resource:引用类路径下的sql映射文件

                 url:引用网络路径

    mybatis映射文件:映射文件指导着mybatis如何进行数据库的增删改查

                 cache----->命名空间的二级缓存配置

                 cache----->其他命名空间缓存配置的引用

                 resultMap--------->自定义结果集映射

                 sql--------->抽取可重用语句块

                 insert-------->映射插入

                 update-------->映射更新

                 delete--------->映射删除

                 select--------->映射查询

    1、mybatis运行void、boolean、Integer、Long类型返回值

    2、需要手动提交数据

    sqlSessionFactory.openSession();------------>手动提交数据

    sqlSessionFactory.openSession(true);----------->自动提交数据

    mybatis支持自增主键,自增主键的获取,mybatis也是利用statement.getGenereatedKeys();

    useGeneratedkeys="true":使用自增主键获取主键的策略

    keyProperty:指定对应的主键属性,mybatis获取到主键值以后,将这个值封装给javaBean的哪个属性

    keyProperty:查出的主键值封装给javaBean的哪个id属性

    order="BEFORE":当前插入在插入sql之前运行

    AFTER:当前sql在插入sql之后运行

    resultType:查出数据的返回值类型

    运行顺序:先运行selectkey查出id的sql,查出id值封装给javaBean的id属性

    在运行插入的sql:就可以取出id属性(BEFORE)

    先运行插入的sql(从序列中取出新值作为id),再运行selectKey查出id的sql(AFTER)

    Oracle不支持自增:oracle使用序列来模拟自增

    每次插入的数据的主键是从序列中拿到的值

    单个参数:mybatis不会做特殊处理      #{参数名}:取出参数值

    多个参数:mybatis  会做特殊处理        多个参数会被封装成一个map        key:param1。。。。。paramn

                                                                        #{}从map中获取指定的key的值  value:传入的参数的值

    命名参数:明确指定封装参数的map的key:@Param(“id‘)

                                                                     多个参数会被封装成一个map

                                                                     key:使用@Param注解指定的值

                                                                     value:参数值                   #{指定的值}:取出key的值

    例子:(@Parm(”id“)Integer  id,@Param(”lastName“)String      lastname);

    ParamNameResolver解析参数封装的map

    1、获取每个标了param注解的参数的@Param的值:id,lastName,赋值给name

    2、每次解析一个参数给map中保存信息:(key:参数索引,value:name的值)   

    总结:参数多时会封装map,为了不混乱,使用@Param来指定封装时使用的key

    #{key}就可以取出map中的值

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

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

    区别:#{ }:以预编译的形式,将参数设置到sql语句中

                 ${  }:取出的值,直接拼装在sql语句中,会有安全问题

    原生jdbc不支持占位符的地方,可以使用${ }进行取值

    jdbcType需要在某种特定的条件下设置(有些数据库可能不能识别mybatis对null的默认处理)

    JdbcType  other:无效的类型(因为mybatis对所有的null都映射的是原生Jdbc的OTHER类型)

    1、#{参数,jdbcType=OTHER};

    2、jdbcTypeForNull=null

    全局设置中<setting  name="jdbcTypeForNull"   value="null"/>

  • 相关阅读:
    JavaWeb 之 表单重复提交问题
    JavaWeb 之 验证码
    JavaScript 之 AJAX 请求
    JavaWeb 之 i18N 国际化
    JavaWeb 之 Gson 的使用
    JavaScript 之 JSON 对象
    JavaWeb 之 由 Tomcat 展示友好的错误信息页面
    【LeetCode-动态规划】完全平方数
    【LeetCode-递归】至少有K个重复字符的最长子串
    【LeetCode-设计】常数时间插入、删除和获取随机元素
  • 原文地址:https://www.cnblogs.com/cye9971-/p/11143862.html
Copyright © 2011-2022 走看看