Mybatis2

会有一股神秘感。 提交于 2020-04-02 09:26:49

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"/>

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!