插入记录并返回主键
往数据库插入数据后,返回数据主键信息。有两种方法。
一种:使用insert标签中的useGeneratedKeys属性和keyProperty属性组合使用获取主键信息。
一种:使用子元素selectKey标签执行sql语句获取。
<!-- 插入用户
useGeneratedKeys="true"
表示返回生成的主键
keyProperty 表示把返回的key注入到返回值的哪个属性中
keyProperty="id" 表示把返回的id主键值注入到返回对象的id属性中
-->
<selectKey> 标签的使用
selectKey 通过前置或后置操作,返回数据的 主键值。
插入记录并返回主键主要是在<insert>标签中添加一个<selectKey>
<selectKey>的作用主要就是为了返回插入记录后,自动生成的主键信息
order 表示执行的顺序。
AFTER 表示在插入之后执行。
BEFORE 在插入之前执行。
keyProperty 属性设置对象的哪个属性接收
resultType 属性设置返回值类型。
selectKey 返回Oracle的序列自增主键
<selectKey order="BEFORE" resultType="int" keyProperty="id">
select 序列名.nextval as id fromdual
</selectKey>
mybatis的核心配置之properties
创建jdbc.properties
一般在实际的项目中。数据库的连接信息。会存放在一个jdbc.properties的属性配置文件中
username=root
password=root
driverClass=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis
在mybatis-config.xml中修改引入properties资源
<!-- properties 配置一些属性。使用的时候,用${name} 进行输出
resource指定属性的位置
-->
<properties resource="jdbc.properties">
<!-- 也可以在properties配置中定义一些属性。当然并不推荐 -->
<property name="username"value="root"/>
<property name="password"value="root"/>
</properties>
特别说明:引入的jdbc.properties属性文件中的信息,会覆盖掉原来使用property标签定义的属性值。
修改原来数据库连接的信息。
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<!-- 配置数据库连接信息 -->
<property name="driver"value="${driverClass}"/>
<property name="url"value="${url}"/>
<property name="username"value="${username}"/>
<property name="password"value="${password}"/>
</dataSource>
</environment>
</environments>
mybatis的核心配置之settings
这是MyBatis 中极为重要的调整设置,它们会改变 MyBatis 的运行时行为。下表描述了设置中各项的意图、默认值等。
所有mybatis的settings设置选项
设置参数 |
描述 |
有效值 |
默认值 |
cacheEnabled |
该配置影响的所有映射器中配置的缓存的全局开关。 |
true | false |
true |
lazyLoadingEnabled |
延迟加载的全局开关。当开启时,所有关联对象都会延迟加载。 特定关联关系中可通过设置fetchType属性来覆盖该项的开关状态。 |
true | false |
false |
aggressiveLazyLoading |
当启用时,对任意延迟属性的调用会使带有延迟加载属性的对象完整加载;反之,每种属性将会按需加载。 |
true | false |
true |
multipleResultSetsEnabled |
是否允许单一语句返回多结果集(需要兼容驱动)。 |
true | false |
true |
useColumnLabel |
使用列标签代替列名。不同的驱动在这方面会有不同的表现, 具体可参考相关驱动文档或通过测试这两种不同的模式来观察所用驱动的结果。 |
true | false |
tru |