Mybatis注解方式@Insert的用法

目录
  • Mybatis注解方式@Insert
    • 1、不需要返回主键
    • 2、返回自增主键
    • 3、返回非自增主键
  • Mybatis@Insert注解批量插入数据库
    • bean:实体类
    • Mapper

Mybatis注解方式@Insert

1、不需要返回主键

@Insert({"insert into user(name, create_time) values(#{name}, #{createTime, jdbcType=TIMESTAMP})"})
int add(User user);

2、返回自增主键

@Insert({"insert into user(name, create_time) values(#{name}, #{createTime, jdbcType=TIMESTAMP})" })
@Options(useGeneratedKeys = true, keyProperty = "id")
int add2(Useruser);

注解多了一个@Options, 注解设置了useGeneratedKeys 和 keyProperty ,用法同xml中的配置。

3、返回非自增主键

@Insert({"insert into user(name, create_time) values(#{name}, #{createTime, jdbcType=TIMESTAMP})" })
@SelectKey(statement = "SELECT LAST_INSERT_ID()", keyProperty = "id", resultType = Long.class, before = false)
int add3(User user);

配置和xml本质上相同的,其中before=false 等同于order=”AFTER”. before=true 等同于order=”BEFORE”.

不同数据库中order的配置不同这里需要注意下。

Mybatis@Insert注解批量插入数据库

bean:实体类

    private Integer sysRoleFunctionId;
    private String operation;
    private Integer sysRoleId;

Mapper

    @Insert( "<script>"  +
                "insert into sys_role_function (sys_role_function_id,operation,sys_role_id)  VALUES " +
                "<foreach collection='list' item='item' index='index' separator=','> " +
                "(#{item.sysRoleFunctionId},#{item.operation},#{item.sysRoleId}) " +
                "</foreach>" +
            "</script>")
    int insertSysRoleFunction (@Param("list")List<SysRoleFunction> list);

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • mybatis-plus 执行insert(),实体的id自动更新问题

    目录 mybatis-plus 执行insert(),实体的id自动更新 业务代码 运行结果 mybatis-plus的insert遇到的坑 添加时id值不存在异常 在实体类 id上面加一个注解 这样即可 mybatis-plus 执行insert(),实体的id自动更新 mybatis-plus 在执行baseMapper.insert()的时候,会将传进去的实体的id自动更新为插入的主键值. 业务代码 @Transactional(rollbackFor = Exception.class)

  • mybatisplus的坑 insert标签insert into select无参数问题的解决

    目录 mybatisplus的坑 insert标签insert into select无参数 insert into select语句的坑 事故发生的经过 事故还原 出现的原因 解决方案 最终的sql 小结一下 mybatisplus的坑 insert标签insert into select无参数 实际项目中发现 <insert id="xxx"> insert into xxxx select xxxx </insert> 会报错 org.mybatis.sp

  • MyBatis insert实体如何返回主键

    目录 insert实体如何返回主键 一.insert 属性详解 二.Mapper接口 三.执行mapper.xml 返回主键 四.测试结果 六.批量插入 七.小结一下 Mybatis添加记录,返回主键id insert实体如何返回主键 一.insert 属性详解 parameterType:入参的全限定类名或类型别名 keyColumn:设置数据表自动生成的主键名.对特定数据库(如PostgreSQL),若自动生成的主键不是第一个字段则必须设置 keyProperty:默认值unset,用于设置

  • Mybatis如何实现InsertOrUpdate功能

    目录 实现InsertOrUpdate功能 需求 实现 Mybatis学习笔记:InsertOrUpdate 环境 前言 Dao Mapper XML文件 行别名 主键和唯一索引 实现InsertOrUpdate功能 需求 最近在项目开发中遇到这样一个需求:每天需要对相同的数据(也有可能是不同的)进行两次入库操作,数据不存在便insert,存在则update.于是就用到了Mybatis的InsertOrUpdate功能. 实现 每次操作数据库之前,先根据id查询有没有记录,有则进行update操

  • MyBatis注解开发-@Insert和@InsertProvider的使用

    目录 @Insert和@InsertProvider的使用 使用InsertProvider注解报错解决过程 @Insert和@InsertProvider的使用 首先,在mybatis-generator.xml中配置返回主键 UserMapper中的 @SelectKey:返回主键,具体解释见下面说明 @InsertProvider:type指明SQL工厂类,method是工厂类里对应的方法 @SelectKey注解源码 statement是要运行的SQL语句,它的返回值通过resultTy

  • MybatisPlus中的insert操作详解

    目录 MybatisPlus insert操作 1.开启日志 2.测试插入的代码 3.MybatisPlus使用的是雪花算法 4.MybatisPlus中的主键生成策略 5.测试不同的主键生成策略 MybatisPlus坑insert方法 着手解决 MybatisPlus insert操作 在测试之前,我们思考一个问题,上个入门案例中,我们什么sql语句代码都没写,但也能查询出来数据. 是谁帮我们做了写基本代码的事情?肯定是MybatisPlus. 为了验证并继续向下学习,我们开启日志,打印在控

  • Mybatis注解方式@Insert的用法

    目录 Mybatis注解方式@Insert 1.不需要返回主键 2.返回自增主键 3.返回非自增主键 Mybatis@Insert注解批量插入数据库 bean:实体类 Mapper Mybatis注解方式@Insert 1.不需要返回主键 @Insert({"insert into user(name, create_time) values(#{name}, #{createTime, jdbcType=TIMESTAMP})"}) int add(User user); 2.返回自

  • MyBatis XML方式的基本用法之多表查询功能的示例代码

    1. 多表查询 在之前,我们示例的2个查询都是单表查询,但实际的业务场景肯定是需要多表查询的,比如现在有个需求: 查询某个用户拥有的所有角色.这个需求要涉及到sys_user,sys_user_role,sys_role三张表,如何实现呢? 首先,在SysUserMapper接口中定义如下方法. /** * 根据用户id获取角色信息 * * @param userId * @return */ List<SysRole> selectRolesByUserId(Long userId); 然后

  • Mybatis注解方式操作Oracle数据库详解

    1.新增多行数据 @Insert({"<script>insert all " + "<foreach collection=\"list\" index=\"index\" item=\"item\" open=\"\" separator=\"\" close=\"\">" + " into s_user (u

  • MyBatis注解方式之@Update/@Delete使用详解

    @Update 1. RoleMapper接口增加接口方法 /** * * * @Title: updateSysRoleById * * @Description: updateSysRoleById * * @param sysRole * @return * * @return: int */ @Update({ "update sys_role set role_name = #{roleName},enabled = #{enabled},create_by = #{createBy}

  • Mybatis注解方式完成输入参数为list的SQL语句拼接方式

    目录 Mybatis注解完成输入参数为list的SQL语句拼接 拼接查询条件为list集合的sql函数 Mybatis注解完成输入参数为list的SQL语句拼接 首先将list集合拼接成一个"1,2,3,4"格式的字符串 然后将这个字符串封装到一个类中:TyreInfoIdStr 这里的@SelectProvider是调用一个外部的类的方法的返回值作为sql语句. 在这个方法中拼接SQL语句与list集合的字符串,我这里是提前拼接过了. 拼接查询条件为list集合的sql函数 当dep

  • Spring Boot 利用注解方式整合 MyBatis

    目录 前言 整合过程 新建 Spring Boot 项目 添加 pom 依赖 准备数据库 pojo 层 dao 层 service 层 controller 层 入口程序配置 网页测试 总结 前言 目前而言,国内大家使用最多的持久层框架可能还是 MyBatis 吧,那既然如此,更强大的 Spring Boot 遇上炽手可热的 MyBatis,又会擦出什么样的火花呢? 那本文就来看看,如何利用 SpringBoot 来整合 Mybatis. 如下图是总结的整合过程的大概流程,那接下来我们就来开始具

  • Mybatis批量插入更新xml方式和注解方式的方法实例

    前言 最近工作上遇到很多批量插入的场景,但是百度很难得到我想要的结果,而且查出来的效果不是很好- 所以就自己来写一份给大家参考,希望对大家有用 Mybatis 批量插入注解形式 @Insert("<script> INSERT INTO t_device_policy " + "(id,device_id,type,policy,create_time,update_time) " + "VALUES " + "<fo

  • mybatis自动扫描和自定义类注解方式

    目录 mybatis自动扫描和自定义类注解 Spring mybatis自动扫描dao 解决方案 mybatis自动扫描和自定义类注解 以往都是使用自定义注解实现Dao层mapper.java和mapper.xml文件的装载,今天在搭建MyBatis的过程,使用了MyBatis的自动扫描进行Dao层mapper.java和mapper.xml文件的装载过程中不断报错扫描不到,当时配置文件如下 最后找出原因是因为开启自动扫描的时候不能使用自定义注解类,否则spring默认是使用自定义类的方式进行文

  • mybatis注解动态sql注入map和list方式(防sql注入攻击)

    目录 网上的教程 我的教程(防sql注入攻击) 注入Map 注入List 封装foreach mybatis防止sql注入的循环map写法 网上的教程 配置xml 注解中写xml脚本@Select() 使用Java类中的Java方法拼写sql语句(不防sql注入攻击的纯字符串拼接) 我的教程(防sql注入攻击) 注入Map Mapper层代码 @Repository public interface ManageMapper { @SelectProvider(type = ManageProv

随机推荐