Mybatis示例之SelectKey的应用
SelectKey在Mybatis中是为了解决Insert数据时不支持主键自动生成的问题,他可以很随意的设置生成主键的方式。
不管SelectKey有多好,尽量不要遇到这种情况吧,毕竟很麻烦。
SelectKey需要注意order属性,像Mysql一类支持自动增长类型的数据库中,order需要设置为after才会取到正确的值。
像Oracle这样取序列的情况,需要设置为before,否则会报错。
下面是一个xml和注解的例子,SelectKey很简单,两个例子就够了:
<insert id="insert" parameterType="map"> insert into table1 (name) values (#{name}) <selectKey resultType="java.lang.Integer" keyProperty="id"> CALL IDENTITY() </selectKey> </insert>
上面xml的传入参数是map,selectKey会将结果放到入参数map中。用POJO的情况一样,但是有一点需要注意的是,keyProperty对应的字段在POJO中必须有相应的setter方法,setter的参数类型还要一致,否则会报错。
@Insert("insert into table2 (name) values(#{name})") @SelectKey(statement="call identity()", keyProperty="nameId", before=false, resultType=int.class) int insertTable2(Name name);
上面是注解的形式。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。如果你想了解更多相关内容请查看下面相关链接
相关推荐
-
MyBatis Map结果的Key转为驼峰式
MyBatis 配置文件中,支持下面这几种配置: properties, settings, typeAliases, typeHandlers, objectFactory, objectWrapperFactory, reflectorFactory, plugins, environments, databaseIdProvider, mappers 我们使用objectWrapperFactory来解决这个问题. 配置这个属性时,必须遵守上面属性配置的顺序进行配置(在objectFact
-
MyBatis-Spring配置的讲解
MyBatis-Spring配置简单了解 SqlSessionFactoryBean配置 在基本的 MyBatis 中,session 工厂可以使用 SqlSessionFactoryBuilder 来创建.而在 MyBatis-Spring 中,则使用 SqlSessionFactoryBean 来替代. 示例 <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean&qu
-
深入了解MyBatis二级缓存
一.创建Cache的完整过程 我们从SqlSessionFactoryBuilder解析mybatis-config.xml配置文件开始: Reader reader = Resources.getResourceAsReader("mybatis-config.xml"); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); 然后是: XMLConfigBuilder
-
MyBatis直接执行SQL的工具SqlMapper
可能有些人也有过类似需求,一般都会选择使用其他的方式如Spring-JDBC等方式解决. 能否通过MyBatis实现这样的功能呢? 为了让通用Mapper更彻底的支持多表操作以及更灵活的操作,在2.2.0版本增加了一个可以直接执行SQL的新类SqlMapper. 我们来了解一下SqlMapper. SqlMapper提供的方法 SqlMapper提供了以下这些公共方法: Map<String,Object> selectOne(String sql) Map<String,Object&
-
Mybatis工具类JdbcTypeInterceptor运行时自动添加jdbcType属性
JdbcTypeInterceptor 运行时自动添加 jdbcType 属性 拦截器签名 @Intercepts({ @Signature( type = ParameterHandler.class, method = "setParameters", args = {PreparedStatement.class}) }) 这类拦截器很少见,所以和其他拦截器(如分页插件)等搭配使用时不需要考虑顺序. 这个插件最适合的场景可能就是 Oracle 数据库,可以自动给所有方法添加 jd
-
MyBatis通过BATCH批量提交的方法
很多人在用 MyBatis 或者 通用 Mapper 时,经常会问有没有批量插入和批量更新的方法. 实际上许多时候没必要用<foreach> 去实现特别复杂的批量操作.直接通过 MyBatis 的 BATCH 方式执行增删改方法即可. 下面是一个批量用法的例子: @Autowired private SqlSessionFactory sqlSessionFactory; @Transactional(rollbackFor = Exception.class) @Override publi
-
MyBatis常用的jdbcType数据类型
MyBatis 通过包含的jdbcType类型 BIT FLOAT CHAR TIMESTAMP OTHER UNDEFINED TINYINT REAL VARCHAR BINARY BLOB NVARCHAR SMALLINT DOUBLE LONGVARCHAR VARBINARY CLOB NCHAR INTEGER NUMERIC DATE LONGVARBINARY BOOLEAN NCLOB BIGINT DECIMAL TIME NULL CURSOR Mybatis中javaT
-
MyBatis通用Mapper实现原理及相关内容
MyBatis通用Mapper实现原理 本文会先介绍通用 Mapper 的简单原理,然后使用最简单的代码来实现这个过程. 基本原理 通用 Mapper 提供了一些通用的方法,这些通用方法是以接口的形式提供的,例如. public interface SelectMapper<T> { /** * 根据实体中的属性值进行查询,查询条件使用等号 */ @SelectProvider(type = BaseSelectProvider.class, method = "dynamicSQL
-
Spring Boot集成MyBatis的方法
Spring Boot 集成MyBatis 在集成MyBatis前,我们先配置一个druid数据源. Spring Boot 集成druid druid有很多个配置选项,使用Spring Boot 的配置文件可以方便的配置druid. 在application.yml配置文件中写上: spring: datasource: name: test url: jdbc:mysql://192.168.16.137:3306/test username: root password: # 使用drui
-
深入了解MyBatis参数
深入了解MyBatis参数 相信很多人可能都遇到过下面这些异常: "Parameter 'xxx' not found. Available parameters are [...]" "Could not get property 'xxx' from xxxClass. Cause: "The expression 'xxx' evaluated to a null value." "Error evaluating expression '
随机推荐
- 用javascript替换URL中的参数值示例代码
- 在Ubuntu 14.04上部署 PHP 环境及 WordPress
- js实现跨域的几种方法汇总(图片ping、JSONP和CORS)
- javascript数据结构之双链表插入排序实例详解
- 一份很全的路由器默认初始密码集合
- Java 替换空格
- .net jMail邮件发送(含抄送、密送、多发、日志记录)实例代码
- 返回上一页并自动刷新的JavaScript代码
- YII2自动登录Cookie总是失效的解决方法
- PHP strtotime函数详解
- Lua中调用C++函数实例
- Android学习教程之九宫格图片展示(13)
- $.ajax()方法进行网页间传值示例
- Js获取asp页面返回的值(加载值)实现代码
- 原生js和jQuery写的网页选项卡特效对比
- WINDOWS 2003 安全设置(伪装篇)
- Spring MVC---数据绑定和表单标签详解
- Android应用中仿今日头条App制作ViewPager指示器
- Android 仿微信自定义数字键盘的实现代码
- 完美解决手机浏览器顶部下拉出现网页源或刷新的问题