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 ...
随机推荐
- 安装CUDA和cuDNN
GPU和CPU区别 1,CPU主要用于处理通用逻辑,以及各种中断事物 2,GPU主要用于计算密集型程序,可并行运作: NVIDIA 的 GeForce 显示卡系列采用 GPU 特性进行快速计算,渲染电 ...
- SqlServer & Windows 可更新订阅立即更新启用分布式事务协调器(MSDTC)
原文:SqlServer & Windows 可更新订阅立即更新启用分布式事务协调器(MSDTC) 在可更新订阅中,在订阅设置更新方法,将 "排队更新" 设置为 " ...
- 如何线程调用C++类成员函数
方法就是: 1,写成静态成员函数 2,参数为 (void* __this)用来传入类 对象指针(this) 3,进入函数首先 C类名 *_this = (C类名*)__this; 转化为对象指 ...
- 压缩大文件时如何限制CPU使用率?----几种CPU资源限制方法的测试说明
一.说明 我们的MySQL实例在备份后需要将数据打包压缩,部分低配机器在压缩时容易出现CPU打满导致报警的情况,需要在压缩文件时进行CPU资源的限制. 因此针对此问题进行了相关测试,就有了此文章. 二 ...
- JSON对象与字符串之间的相互转换 - CSDN博客
原文:JSON对象与字符串之间的相互转换 - CSDN博客 <html> <head> <meta name="viewport" content=& ...
- C#的Task、async、await关键字
Task,一个类,可以执行一个方法,构造函数需要传一个Action类型的委托,Action类型的委托是可以拥有多个参数,没有返回值的. Task<T> Task的泛型,构造函数传入一个Fu ...
- Angucomplete —— AngularJS 自动完成输入框
分享 <关于我> 分享 [中文纪录片]互联网时代 http://pan.baidu.com/s/1qWkJfcS 分享 <HTML开发MacOSAp ...
- Qt5---ftp上传功能(使用组合的办法实现功能,QNetworkAccessManager自动管理分片上传,用QLoggingCategory屏蔽SSL警告)
从Qt的版本进化中可以知道,在Qt4中的QFtp类到了Qt5中已经没有了,虽然可以通过在Qt5中自己编译出QFtp,但是Qt5中提供的QNetworkAccessManager在发送和请求网络方面 ...
- 20 如何通过pycharm快速的创建一个html页面
1.打开pycharm并且新建一个html页面,如下图所示. 2.删除html页面中默认的内容,之后在页面中输入!,之后点击tab即可完成一个html页面的框架新增.
- 关于CORS 应该注意的几点
前言 对于跨域,随着w3c的CORS的出现,相比较于有些年头的jsonp,CORS以其简单安全,支持post的优势越来越收到大家的欢迎.具体如何CORS的原理和实现,直接推荐阮老师的文章,十分详细.本 ...