[转] Mybatis 示例之 SelectKey】的更多相关文章

SelectKey在Mybatis中是为了解决Insert数据时不支持主键自动生成的问题,他可以很随意的设置生成主键的方式. 不管SelectKey有多好,尽量不要遇到这种情况吧,毕竟很麻烦. selectKey Attributes 属性 描述 keyProperty selectKey 语句结果应该被设置的目标属性. resultType 结果的类型.MyBatis 通常可以算出来,但是写上也没有问题.MyBatis 允许任何简单类型用作主键的类型,包括字符串. order 这可以被设置为…
参考:http://blog.csdn.net/isea533/article/details/21153791 SelectKey在Mybatis中是为了解决Insert数据时不支持主键自动生成的问题,他可以很随意的设置生成主键的方式. 不管SelectKey有多好,尽量不要遇到这种情况吧,毕竟很麻烦. selectKey Attributes 属性 描述 keyProperty selectKey 语句结果应该被设置的目标属性. resultType 结果的类型.MyBatis 通常可以算出…
SelectKey在Mybatis中是为了解决Insert数据时不支持主键自动生成的问题,他可以很随意的设置生成主键的方式. 不管SelectKey有多好,尽量不要遇到这种情况吧,毕竟很麻烦. selectKey Attributes 属性 描述 keyProperty selectKey 语句结果应该被设置的目标属性. resultType 结果的类型.MyBatis 通常可以算出来,但是写上也没有问题.MyBatis 允许任何简单类型用作主键的类型,包括字符串. order 这可以被设置为…
MyBatis 的动态 SQL 包括以下几种元素: 详细的使用参考官网文档:http://www.mybatis.org/mybatis-3/zh/dynamic-sql.html 本章内容简单描述这些动态 SQL 在使用的过程中需要注意的地方. choose, when, otherwise 比如我们要实现如下功能: 当学生姓名不为空,则只用学生姓名作为条件查询 当学生性别不为空,则只用学生性别作为条件查询 当学生姓名和学生性别都为空,则要求学生学生证件号不为空 针对这种情况,MyBatis…
测试类:com.yjw.demo.PrimaryKeyTest 自增长列 数据库表的主键为自增长列,在写业务代码的时候,经常需要在表中新增一条数据后,能获得这条数据的主键 ID,MyBatis 提供了实现的方法. StudentMapper.xml <insert id="insertByAutoInc" parameterType="studentDO" keyProperty="id" useGeneratedKeys="tr…
Mybatis示例专栏:http://blog.csdn.net/column/details/mybatis-sample.html Mybatis的复杂属性,Mybatis的这个特点很少被提及,但是有些时候确实又有用.Mybatis的复杂属性指的什么呢? 有如下两个对象: 在User对象中有一个字段password,类型是EncryptedString,这个类只有一个字段encrypted. Mybatis的复杂属性指的就是User中password这样的属性.如果我们不用复杂属性这个特性来…
body { font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI",Tahoma,Helvetica,Sans-Serif,"Microsoft YaHei", Georgia,Helvetica,Arial,sans-serif,宋体, PMingLiU,serif; font-size: 10.5pt; line-height: 1.5;…
一.创建Maven项目 在pom.xml中,添加mybatis依赖,mysql-jdbc依赖,把编译版本改为1.8 你问,为啥mybatis不会自动依赖mysql-jdbc,需要手动写明?答:因为mysql驱动是通过字符串动态加载的,这是一种"动态依赖",Maven只能推导出"静态依赖"."动态依赖"是一种更加灵活的依赖. Maven默认的Java版本是1.6,无法使用lambda表达式(1.8)和钻石运算符(1.7). 代码片段:pom.xml…
映射器的主要元素: 本章介绍 select 元素中传递多个参数的处理方式. 测试类:com.yjw.demo.MulParametersTest 使用 Map 传递参数(不建议使用) 使用 MyBatis 提供的 Map 接口作为参数来实现. StudentDao /** * 使用 Map 传递参数 * * @param params * @return */ List<StudentDO> listByMap(Map<String, String> params); Studen…
MyBatis 提供了很多默认类型处理器,参考官网地址:链接,除了官网提供的类型处理器,我们也可以自定义类型处理器. 具体做法为:实现 org.apache.ibatis.type.TypeHandler 接口, 或继承 org.apache.ibatis.type.BaseTypeHandler 类 , 然后可以选择性地将它映射到一个 JDBC 类型. 测试类:com.yjw.demo.TypeHandlerTest 比如我们要自定义一个性别的枚举类型处理器,实现步骤如下所示: 创建类型处理器…
简介 为了全面熟悉 MyBatis 的使用,整理一个 MyBatis 的例子,案例中包含了映射器.动态 SQL 的使用.本章先介绍项目结构和配置. 项目地址:链接 数据库表的模型关系:链接 项目结构 项目框架:Spring Boot.MyBatis.Mybatis-PageHelper.Druid.Swagger: db 目录存放数据库 SQL 文件,项目中使用的表可以通过该 SQL 创建: com.yjw.demo.mybatis.biz 目录存放业务相关的类: com.yjw.demo.my…
简介 MyBatis 提供了两种联合查询的方式,一种是嵌套查询,一种是嵌套结果.先说结论:在项目中不建议使用嵌套查询,会出现性能问题,可以使用嵌套结果. 测试类:com.yjw.demo.JointQueryTest,提供了对嵌套查询和嵌套结果的测试. 数据库表模型关系 学生信息级联模型关系:链接 学生信息级联模型关系是一个多种类型关联关系,包含了如下几种情况: 其中学生表是我们关注的中心,学生证表和它是一对一的关联关系: 而学生表和课程成绩表是一对多的关系,一个学生可能有多门课程: 课程表和课…
MyBatis 提供两种类型的缓存,一种是一级缓存,另一种是二级缓存,本章通过例子的形式描述 MyBatis 缓存的使用. 测试类:com.yjw.demo.CacheTest 一级缓存 MyBatis 默认开启一级缓存.一级缓存是相对于同一个 SqlSession 而言的,所以在参数和 SQL 完全一样的情况下,我们使用同一个 SqlSession 对象调用同一个 Mapper 的方法,往往只执行一次 SQL,因为使用 SqlSession 第一次查询后,MyBatis 会将其放在缓存中,以后…
简介 利用 MyBatis Plugin 插件技术实现分页功能. 分页插件实现思路如下: 业务代码在 ThreadLocal 中保存分页信息: MyBatis Interceptor 拦截查询请求,获取分页信息,实现分页操作,封装分页列表数据返回: 测试类:com.yjw.demo.PageTest 插件开发过程 确定需要拦截的签名 MyBatis 插件可以拦截四大对象中的任意一个,从 Plugin 源码中可以看到它需要注册签名才能够运行插件,签名需要确定一些要素. 确定需要拦截的对象 Exec…
转:https://www.cnblogs.com/caizhen/p/9186608.html mybatis中使用selectKey,返回结果一直是1,结合这个问题,笔记一下selectKey标签以及问题的原因 先说需求,向数据库插入一条记录,表的id是自增的,插入以后返回插入记录的id 下面是xml文件中的插入的sql 1 <insert id="insertCompete" parameterType="CompetesWithBLOBs"> 2…
转:https://mybatis.github.io/mybatis-3/zh/sqlmap-xml.html 对于不支持自动生成类型的数据库或可能不支持自动生成主键 JDBC 驱动来说,MyBatis 有另外一种方法来生成主键. 这里有一个简单(甚至很傻)的示例,它可以生成一个随机 ID(你最好不要这么做,但这里展示了 MyBatis 处理问题的灵活性及其所关心的广度): <insert id="insertAuthor"> <selectKey keyPrope…
foreach一共有三种类型,分别为List,[](array),Map三种. foreach的第一篇用来将List和数组(array). 下面表格是我总结的各个属性的用途和注意点. foreach属性 属性 描述 item 循环体中的具体对象.支持属性的点路径访问,如item.age,item.info.details.具体说明:在list和数组中是其中的对象,在map中是value.该参数为必选. collection 要做foreach的对象,作为入参时,List<?>对象默认用list…
基于Maven的Spring+SpringMVC+Mybatis的一个小项目的搭建,由于使用Maven3.1.0管理,所以Spring等都将使用的是时下(2013/9/8)最新的版本.即从http://search.maven.org/ 得到最新的POM文件. 以下是我的一步一步实现步骤: 1, cmd 下面输入 mvn archetype:generate -DgroupId=com.vanceinfo.javaserial -DartifactId=ssme -DarchetypeArtif…
<insert id="insert" parameterType="com.lls.model.Employee"> <!-- selectKey 标签表示子查询中主键的提取问题 resultType表示返回主键的数据类型 keyProperty表示将属性设置到某个列中 此处为id order="AFTER表示在插入语句之后执行 resultType="long"表示返回值得类型为long类型 -->    …
存储过程在数据库中比较常见,虽然大多数存储过程比较复杂,但是使用 MyBatis 调用时,用法都一样,因此我们这一节使用一个简单的存储过程来了解 MyBatis 中存储过程的使用方法. 基本准备 存储过程涉及表 sys_user,建表语句如下. DROP TABLE IF EXISTS `sys_user`; CREATE TABLE `sys_user` ( `id` ) NOT NULL AUTO_INCREMENT COMMENT '用户ID', `) DEFAULT NULL COMME…
@Insert(" insert into table(c1,c2) " + " values (#{c1},#{c2}) ") @SelectKey(resultType = long.class,keyColumn = "id",before = false,statement = "SELECT LAST_INSERT_ID() AS id",keyProperty = "id") int addQu…
前面三篇博客我们已经多次涉及到映射器的使用了,增删查基本上都用过一遍了,但是之前我们只是介绍了基本用法,实际上mybatis中映射器可以配置的地方还是非常多,今天我们就先来看看映射器还有哪些需要配置的地方,用好这些配置,可以让我们的mybatis变得非常灵活.如果小伙伴对于mybatis尚不了解可以先参考前面三篇博客(初识mybatis/初识mybatis(二)/mybatis常用配置)否则小伙伴可能不太容易理解本文的内容,老司机请略过. 映射器中的元素还是非常多的,比如select.inser…
Mybatis基于代理Dao实现CRUD操作 使用要求: 1.持久层接口和持久层接口的映射配置必须在相同的包下 2.持久层映射配置中mapper标签的namespace属性取值必须是持久层接口的全限定类名 3.SQL语句的配置标签<select>,<insert>,<delete>,<update>的id属性必须和持久层接口的方法名相同. 持久层接口 /** * * 用户的持久层接口 */ public interface IUserDao { /** *…
有时候新增一条数据,知道新增成功即可,但是有时候,需要这条新增数据的主键,以便逻辑使用,再将其查询出来明显不符合要求,效率也变低了. 这时候,通过一些设置,mybatis可以将insert的数据的主键返回,直接拿到新增数据的主键,以便后续使用. 这里主要说的是selectKey标签 设计表的时候有两种主键,一种自增主键,一般为int类型,一种为非自增的主键,例如用uuid等. 自增类型的主键 1  映射xml中添加如下代码,注释写的很清楚了,不多做赘述. <!--新增信息,并拿到新增信息的表主键…
MyBatis.NET的前身为IBatis,是JAVA版MyBatis在.NET平台上的翻版,相对NHibernate.EntityFramework等重量级ORM框架而言,MyBatis.NET必须由开发人员手动写SQL,相对灵活性更大,更容易保证DB访问的性能,适用开发团队里有SQL熟手的场景. 下面是使用步骤: 1.到官网http://code.google.com/p/mybatisnet/ 下载相关dll和文档 Doc-DataAccess-1.9.2.zip Doc-DataMapp…
MyBatis 真正的力量是在映射语句中.这里是奇迹发生的地方.对于所有的力量,SQL 映射的 XML 文件是相当的简单.当然如果你将它们和对等功能的 JDBC 代码来比较,你会发现映射文件节省了大约 95%的代码量.MyBatis 的构建就是聚焦于 SQL 的,使其远离于普通的方式. SQL 映射文件有很少的几个顶级元素(按照它们应该被定义的顺序): cache – 配置给定命名空间的缓存. cache-ref – 从其他命名空间引用缓存配置. resultMap – 最复杂,也是最有力量的元…
目录 0. 文章目录 1. Mybatis映射文件 1.1 输入映射 1.2 输出映射 1.3 resultMap 2. 动态SQL 2.1 if和where 2.2 foreach循环 2.3 sql片段 sql+include 2.4 set 4. 关联查询 4.1 商品订单数据模型 4.2 一对一查询 4.3 一对多查询 0. 文章目录 Mybatis映射文件 动态SQL 关联查询 1. Mybatis映射文件 映射文件中select的两个参数重要参数:parameter和resultTy…
下面就是 insert,update 和 delete 语句的示例: <insert id="insertAuthor" parameterType="domain.blog.Author"> insert into Author (id,username,password,email,bio) values (#{id},#{username},#{password},#{email},#{bio}) </insert> 如前所述,插入语句…
本节内容: Mybatis介绍 使用jdbc编程问题总结 Mybatis架构 Mybatis入门程序 Dao的开发方式 SqlMapConfig.xml文件说明 一.Mybatis介绍 MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis .2013年11月迁移到Github. MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使…
MyBatis 真正的力量是在映射语句中.这里是奇迹发生的地方.对于所有的力量,SQL 映射的 XML 文件是相当的简单.当然如果你将它们和对等功能的 JDBC 代码来比较,你会发现映射文件节省了大约 95%的代码量.MyBatis 的构建就是聚焦于 SQL 的,使其远离于普通的方式. SQL 映射文件有很少的几个顶级元素(按照它们应该被定义的顺序): cache – 配置给定命名空间的缓存. cache-ref – 从其他命名空间引用缓存配置. resultMap – 最复杂,也是最有力量的元…