mybatis insert mysql_Mybatis基本映射--INSERT

概述

本章学习Mysql基本映射--INSERT相关知识点。insert的用法比select要简单很多。

本系列文章是基于Mybatis 3.4.6 版本,数据库使用的是Mysql 5.7。

INSERT标签

insert标签常用属性:

id:可以理解为Mybatis执行语句的名称,与Mapper接口一一对应,此属性为必须属性,且在命名空间(mapper标签的namespace)中唯一。

parameterType:该属性的含义就是其字面意思,即传入语句的参数类型,是类的全限定类名,非必须。

flushCache:表示执行该语句将清空一级、二级缓存,默认为true。

timeout:超时时间,即程序提交sql语句到数据库等待的时间,超过此设置时间将抛出超时异常,默认设置是不超时,也就是说程序会一直等待直到有结果返回,单位为妙。

useGeneratedKeys:该属性是获取数据库内部生产的主键,默认为false。

keyProperty:赋值主键的属性名,即把数据库内部生产的主键赋值给该属性。

keyColumn:赋值主键的字段名,即把数据库内部生产的主键赋值给该字段。

不返回主键

此是插入数据最简单的用法,在上一章的基础上,需要编写mapper配置文件和mapper接口。

mapper配置文件

代码如下:

INSERT INTO sys_user (user_account, user_password, created_date)

VALUES (#{userAccount}, #{userPassword}, #{createdDate})

mapper接口

接口代码如下:

// 返回值int为插入数据的行数

public int insert(SysUser sysUser) throws Exception ;

测试用例

测试用户代码如下:

@Test

public void testInsert(){

// 获得sqlSession

SqlSession sqlSession = getSqlSession();

try{

// 获取Mapper接口

SysUserMapper sysUserMapper = sqlSession.getMapper(SysUserMapper.class);

SysUser user = new SysUser();

user.setUserAccount("admin");

user.setUserPassword("123");

user.setCreatedDate(new Date());

// 插入的条数

int count = sysUserMapper.insert(user);

// 提交事务,数据存入数据库

sqlSession.commit();

}catch (Exception e){

e.printStackTrace();

}finally {

sqlSession.close();

}

}

返回自增主键

根据上面对INSERT标签属性的学习知道,如果要返回数据库自增的主键,可通过设置useGeneratedKeys和keyProperty以及keyCulomn(返回多个时需指定字段顺序)。

mapper配置文件

代码如下:

useGeneratedKeys="true" keyProperty="id">

INSERT INTO sys_user (user_account, user_password, created_date)

VALUES (#{userAccount}, #{userPassword}, #{createdDate})

mapper接口

接口代码如下:

// 返回值int仍然为插入影响的行数,数据库内部自增id值被封装到参数对象中

public int insertAndResultAutoId(SysUser sysUser) throws Exception;

测试用例

测试用户代码如下:

@Test

public void testInsertAndResultAutoId(){

// 获得sqlSession

SqlSession sqlSession = getSqlSession();

try{

// 获取Mapper接口

SysUserMapper sysUserMapper = sqlSession.getMapper(SysUserMapper.class);

SysUser user = new SysUser();

user.setUserAccount("admin");

user.setUserPassword("123");

user.setCreatedDate(new Date());

// 插入前,id为空

System.out.println(user.getId());

// 插入的条数

int count = sysUserMapper.insertAndResultAutoId(user);

// 插入后,id的值为新插入数据的数据库自增id值

System.out.println(user.getId());

// 提交事务,数据存入数据库

sqlSession.commit();

}catch (Exception e){

e.printStackTrace();

}finally {

sqlSession.close();

}

}

返回非自增主键

对于一些数据库不支持自增ID,比如Oracle数据库使用的序列,然后赋值给id字段,再执行数据库插入操作,此情况的实现如下:

mapper配置文件

代码如下:

SELECT LAST_INSERT_ID()

INSERT INTO sys_user (user_account, user_password, created_date)

VALUES (#{userAccount}, #{userPassword}, #{createdDate})

mapper接口

接口代码如下:

// 返回值int仍然为插入影响的行数,数据库内部自增id值被封装到参数对象中

public int insertAndSelectKey(SysUser sysUser) throws Exception;

测试用例

测试用户代码如下:

@Test

public void testInsertAndSelectKey(){

// 获得sqlSession

SqlSession sqlSession = getSqlSession();

try{

// 获取Mapper接口

SysUserMapper sysUserMapper = sqlSession.getMapper(SysUserMapper.class);

SysUser user = new SysUser();

user.setUserAccount("admin");

user.setUserPassword("123");

user.setCreatedDate(new Date());

// 插入前,id为空

System.out.println(user.getId());

// 插入影响的条数

int count = sysUserMapper.insertAndSelectKey(user);

// 插入后,id的值为新插入数据的数据库自增id值

System.out.println(user.getId());

// 提交事务,数据存入数据库

sqlSession.commit();

}catch (Exception e){

e.printStackTrace();

}finally {

sqlSession.close();

}

}

批量插入

此部分内容将在动态SQL中进行学习。

总结

本节学习了mybatis的基本的insert的用法,希望对大家有帮助。

最后创建了qq群方便大家交流,可扫描加入,同时也可加我qq:276420284,共同学习、共同进步,谢谢!

4463fb4f1a8d3a08b717a873bd835468.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值