MyBatis从入门到精通:insert用法
2.4.1 简单的insert方法
1.接口类中的方法:
int insert(SysUser sysUser);
2.映射文件中的修改:
<!-- insert标签包含如下的属性: id: parameterType:即将传入的语句参数的完全限定类名或别名。这个属性是可选的, 因为MyBatis可以推断出传入语句的具体参数,因此不建议配置该属性。(这个 就是接口方法的形式参数!!!) flushCache:默认值为true,任何时候只要语句被调用,都会清空一级二级缓存 timeout:设置在抛出异常之前,驱动程序等待数据库返回请求结果的秒数 ========================这个对应与JDBC的statement===================== statementType:对于STATEMENT,PREPARED,CALLABLE,MyBatis会分别使用 对应的Statement、PreparedStatement、CallableStatement,默认值为PREPARED ==================================================================== ===============================这两个是一组的========================= useGeneratedKeys:默认值是false,如果设置为true,MyBatis会使用JDBC的get GeneratedKeys方法来取出由数据库内部生成的主键 keyProperty:MyBatis通过GeneratedKeys获取主键值后将要赋给的属性名。如果希望 得到多个数据库自动生成的列,属性值也可以是以逗号分割的属性名列表。 ==================================================================== ================================不懂================================= keyColumn:仅对INSERT和UPDATE有用,通过生成的键值设置表中的别名,这个设置仅在某些 数据库中是必须的。 databaseId:如果配置了databaseIdProvider,Mybatis会加载所有的不带databaseId的 或者匹配当前databaseId的语句。 ===================================================================== 为了放置出错,对于一些特殊的数据类型,建议指定具体的jdbcType值。例如headImg指定BLOB类型 createTime指定TIMESTAMP类型。BLOB对应的类型是ByteArrayInputStream,就是二进制数据流 由于数据库区分date、time、datetime类型,但是Java中一般都使用java.util.Date类型。因此 为了保证数据类型的正确,需要手动指定日期类型,date,time,datetime对应JDBC类型分别为DATE ,TIME,TIMESTAMP。 分析:BLOB那个没看懂,但是date、time、datetime看懂了点,就是说你定义类型时,如果 用了Date类型定义变量,则你插入的时候,最好用jdbcType属性说明一下你插入的究竟是数据 库中的哪种类型。 数据库中的datetime类型可以储存date和timestamp类型这两种类型的值,但是不能存储time类型 的时间。 --> <insert id="insert"> INSERT INTO sys_user (id,user_name,user_password,user_email,user_info,head_img,create_time) VALUES (#{id},#{userName},#{userPassword},#{userEmail},#{userInfo},#{headImg,jdbcType=BLOB},#{createTime,jdbcType=TIMESTAMP}) </insert>
2.4.2 使用JDBC方式返回主键自增的值
1.接口类中增加的方法:
int insert2(SysUser sysUser);
2.映射文件增加的代码:
<insert id="insert2" useGeneratedKeys="true" keyProperty="id"> INSERT INTO sys_user (id,user_name,user_password,user_email, user_info,head_img,create_time) VALUES (#{id},#{userName},#{userPassword},#{userEmail}, #{userInfo},#{headImg,jdbcType=BLOB},#{createTime,jdbcType=TIMESTAMP}) </insert>
2.4.3 使用selectKey返回主键的值
1.接口类中增加的方法:
int insert3(SysUser sysUser);
2.映射文件增加的代码:
<insert id="insert3"> INSERT INTO sys_user (id,user_name,user_password,user_email, user_info,head_img,create_time) VALUES (#{id},#{userName},#{userPassword},#{userEmail}, #{userInfo},#{headImg,jdbcType=BLOB},#{createTime,jdbcType=TIMESTAMP}) <!-- selectKey标签的属性: keyColumn: keyProperty: resultType: order:该属性与数据库有关。在MySQl中,为after值 --> <selectKey keyColumn="id" resultType="long" keyProperty="id" order="AFTER"> SELECT LAST_INSERT_ID() </selectKey> </insert>
MyBatis从入门到精通:insert用法的更多相关文章
- MyBatis从入门到精通(二):MyBatis XML方式的基本用法之Select
最近在读刘增辉老师所著的<MyBatis从入门到精通>一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸! 1. 明确需求 书中提到的需求是一个基 ...
- MyBatis从入门到精通(四):MyBatis XML方式的基本用法之增删改
最近在读刘增辉老师所著的<MyBatis从入门到精通>一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸! 1. insert用法 1.1 简单的 ...
- MyBatis从入门到精通(三):MyBatis XML方式的基本用法之多表查询
最近在读刘增辉老师所著的<MyBatis从入门到精通>一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸! 1. 多表查询 上篇博客中,我们示例的 ...
- MyBatis从入门到精通(五):MyBatis 注解方式的基本用法
最近在读刘增辉老师所著的<MyBatis从入门到精通>一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸! 1. @Select 注解 1.1 使 ...
- MyBatis从入门到精通(六):MyBatis动态Sql之if标签的用法
最近在读刘增辉老师所著的<MyBatis从入门到精通>一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸! 本篇博客主要讲解如何使用if标签生成动 ...
- MyBatis从入门到精通(七):MyBatis动态Sql之choose,where,set标签的用法
最近在读刘增辉老师所著的<MyBatis从入门到精通>一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸! 本篇博客主要讲解如何使用choose, ...
- MyBatis从入门到精通(八):MyBatis动态Sql之foreach标签的用法
最近在读刘增辉老师所著的<MyBatis从入门到精通>一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸! 本篇博客主要讲解如何使用foreach ...
- MyBatis从入门到精通(第9章):Spring集成MyBatis(中)
MyBatis从入门到精通(第9章):Spring集成MyBatis(中) 框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法.应该将应用自身的设计和具体 ...
- MyBatis从入门到精通(第5章):MyBatis代码生成器
jdk1.8.MyBatis3.4.6.MySQL数据库5.6.45.Eclipse Version: 2019-12 M2 (4.14.0) MyBatis从入门到精通(第5章):MyBatis代码 ...
- MyBatis从入门到精通(一):MyBatis入门
最近在读刘增辉老师所著的<MyBatis从入门到精通>一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸! 1. MyBatis简介 2001 ...
随机推荐
- Windows 10开发基础——文件、文件夹和库(二)
主要内容: 使用选取器打开和保存文件 关于文件.文件夹和库,如果深究其实还是有比较多的内容,我们这一次来学习一下选取器就收了.还有上篇博文中读写文本文件的三种方式可以细细体会一下. 文件选取器包含文件 ...
- QT在release版本产生pdb文件
##环境说明 QtCreator QtLibrary 编译器 Qt Creator 2.7.0 4.8.4-msvc msvc9.0(VS2008) ##背景说明 >项目中需要对发布版本追踪崩溃 ...
- Oracle报错:不是单组分组函数
报错:不是单组分组函数 实例:select sum(HWJZ) ,rq from JcChargeInfo 原因: 1.如果程序中使用了分组函数,则有两种情况可以使用: 程序中存在group by, ...
- 2015元旦第一弹——WP8.1应用程序栏(C#后台代码编写)
//第一次写博文,以后还请各位道友互相关照哈.废话不多说,直接进入正题. 相信大家对于如何在XAML添加应用程序栏应该很清楚,不清楚的话,可以打开新建个Pviot应用 就有系统自带的菜单栏. 本文主要 ...
- java基础之super关键字
一.在java里面,对于super关键字通常有两种用法: 1. 用在子类的构造方法里(初始化用),主要是调用父类的默认构造方法,如果父类有不止一个构造方法,可以通过super指定具体的构造函数,比如 ...
- Qt使用windows API获取程序运行时占用内存 good
使用的是psapi.h中的GetProcessMemoryInfo函数,但是运行到该函数时就强制退出了. 后来,百度到原因是 原来Qt编译时加了-mthread,createprocess时要使的Ha ...
- Ring3下无驱动移除winlogon.exe进程ctrl+alt+del,win+u,win+l三个系统热键,非屏蔽热键(子类化SAS 窗口)
随手而作,纯粹技术研究,没什么实际意义. 打开xuetr,正常情况下.winlogon.exe注册了三个热键.ctrl+alt+del,win+u,win+l三个. 这三个键用SetWindowsHo ...
- c# Lambda扩展
扩展类 public static class LinqExtensions { /// <summary> /// 创建lambda表达式:p=>true /// </sum ...
- delphi的Socket(有两种分别继承TObject和TComponent的方式)
在Delphi中,对于Windows中的Socket进行了有效的封装.在Delphi中,按其继承关系,可以分层两类:一.TComponent--TAbstractSocket--TCustomSock ...
- js打印指定元素内容
var v = document.createElement("div"); //向v中追加打印数据,可以将界面的元素追加进来 var h = window.open(" ...