mybatis开发要点-insert主键ID获取和多参数传递

简介: mybatis开发要点-insert主键ID获取和多参数传递

一、插入数据主键ID获取


一般我们在做业务开发时,经常会遇到插入一条数据并使用到插入数据的ID情况。如果先插入在查询的话需要多一次sql查询,未免效率太低。因此mybatis也有提供插入数据并返回主键ID的方式。如下


1、Insert/update


1.1、属性解释


image.png

  • 注意:自增长序号不是简单的行数+1,而是序号最大值+1;既当前10000条数据,但主键ID到12000,则返回的为12001.而不是10001.


1.2、代码示例


  <insert id="insert1" parameterType="TUser" useGeneratedKeys="true"  keyProperty="id">
    insert into t_user (id, userName, realName,
    sex, mobile,
    email,
    note, position_id)
    values (#{id,jdbcType=INTEGER},
    #{userName,jdbcType=VARCHAR},
    #{realName,jdbcType=VARCHAR},
    #{sex,jdbcType=TINYINT}, #{mobile,jdbcType=VARCHAR},
    #{email,jdbcType=VARCHAR},
    #{note,jdbcType=VARCHAR},
    #{position.id,jdbcType=INTEGER})
  </insert>


该插入指令会取出主键并由ID字段来接收

2、selectKey

1.1、属性解释


image.png

1.2、代码示例


  <insert id="insert2" parameterType="TUser">
    <selectKey keyProperty="id" order="AFTER" resultType="int">
      select
      LAST_INSERT_ID()
    </selectKey>
    insert into t_user (id, userName, realName,
    sex, mobile,
    email,
    note,
    position_id)
    values (#{id,jdbcType=INTEGER},
    #{userName,jdbcType=VARCHAR},
    #{realName,jdbcType=VARCHAR},
    #{sex,jdbcType=TINYINT}, #{mobile,jdbcType=VARCHAR},
    #{email,jdbcType=VARCHAR},
    #{note,jdbcType=VARCHAR},
    #{position.id,jdbcType=INTEGER})
  </insert>


二、查询如何传入多个参数

1、使用map传递参数;

特点:可读性差,导致可维护性和可扩展性差,杜绝使用;

代码示例

1、xml

  <select id="selectByEmailAndSex1" resultMap="BaseResultMap"   parameterType="map">
    select
    <include refid="Base_Column_List" />
    from t_user a
     where a.email like CONCAT('%', #{email}, '%') and
     a.sex =#{sex}
  </select>


2、调用层

    Map<String, Object> params = new HashMap<String, Object>();
    params.put("email", email);
    params.put("sex", sex);
    List<TUser> list1 = mapper.selectByEmailAndSex1(params);
    System.out.println(list1.size());


2、使用注解传递参数;

特点:直观明了,当参数较少一般小于5个的时候,建议使用;

代码示例

1、xml


  <select id="selectByEmailAndSex2" resultMap="BaseResultMap">
    select
    <include refid="Base_Column_List" />
    from t_user a
    where a.email like CONCAT('%', #{email}, '%') and
    a.sex = #{sex}
  </select>

2、调用层

    Page<TUser> startPage = PageHelper.startPage(2, 3);
    List<TUser> list2 = mapper.selectByEmailAndSex2(email, sex);
    System.out.println(list2.size());

3、使用Java Bean的方式传递参数;

特点:当参数大于5个的时候,建议使用;

代码示例

1、xml


  <select id="selectByEmailAndSex3" resultMap="BaseResultMap"
    parameterType="com.enjoylearning.mybatis.entity.EmailSexBean">
    select
    <include refid="Base_Column_List" />
    from t_user a
    where a.email like CONCAT('%', #{email}, '%') and
    a.sex = #{sex}
  </select>

2、调用层

    EmailSexBean esb = new EmailSexBean();
    esb.setEmail(email);
    esb.setSex(sex);
    List<TUser> list3 = mapper.selectByEmailAndSex3(esb);
    System.out.println(list3.size());
目录
相关文章
|
2月前
|
前端开发 Java 数据库连接
表白墙/留言墙 —— 中级SpringBoot项目,MyBatis技术栈MySQL数据库开发,练手项目前后端开发(带完整源码) 全方位全步骤手把手教学
本文是一份全面的表白墙/留言墙项目教程,使用SpringBoot + MyBatis技术栈和MySQL数据库开发,涵盖了项目前后端开发、数据库配置、代码实现和运行的详细步骤。
73 0
表白墙/留言墙 —— 中级SpringBoot项目,MyBatis技术栈MySQL数据库开发,练手项目前后端开发(带完整源码) 全方位全步骤手把手教学
|
2月前
|
SQL Java 数据库连接
Mybatis的<insert>,<update>,<delete>标签用法
这篇文章详细讲解了Mybatis中<insert>, <update>, <delete>标签的使用方法,并提供了示例代码来展示如何执行数据库的增删改操作。
107 0
|
3月前
|
Java 数据库连接 数据格式
【Java笔记+踩坑】Spring基础2——IOC,DI注解开发、整合Mybatis,Junit
IOC/DI配置管理DruidDataSource和properties、核心容器的创建、获取bean的方式、spring注解开发、注解开发管理第三方bean、Spring整合Mybatis和Junit
【Java笔记+踩坑】Spring基础2——IOC,DI注解开发、整合Mybatis,Junit
|
3月前
|
SQL XML Java
mybatis :sqlmapconfig.xml配置 ++++Mapper XML 文件(sql/insert/delete/update/select)(增删改查)用法
当然,这些仅是MyBatis功能的初步介绍。MyBatis还提供了高级特性,如动态SQL、类型处理器、插件等,可以进一步提供对数据库交互的强大支持和灵活性。希望上述内容对您理解MyBatis的基本操作有所帮助。在实际使用中,您可能还需要根据具体的业务要求调整和优化SQL语句和配置。
67 1
|
5月前
|
Java 数据库连接 测试技术
mybatis plus 获取新增实体的主键
mybatis plus 获取新增实体的主键
172 8
|
4月前
|
SQL Java 数据库连接
Spring Boot联手MyBatis,打造开发利器:从入门到精通,实战教程带你飞越编程高峰!
【8月更文挑战第29天】Spring Boot与MyBatis分别是Java快速开发和持久层框架的优秀代表。本文通过整合Spring Boot与MyBatis,展示了如何在项目中添加相关依赖、配置数据源及MyBatis,并通过实战示例介绍了实体类、Mapper接口及Controller的创建过程。通过本文,你将学会如何利用这两款工具提高开发效率,实现数据的增删查改等复杂操作,为实际项目开发提供有力支持。
275 0
|
5月前
|
算法 Java 数据库连接
mybatis plus 主键策略
mybatis plus 主键策略
61 2
|
5月前
|
Oracle 关系型数据库 Java
mybatis使用statement.getGenreatedKeys(); useGeneratedKeys=”true”;使用自增主键获取主键值策略和Oracle不支持自增,Oracle使用序列
mybatis使用statement.getGenreatedKeys(); useGeneratedKeys=”true”;使用自增主键获取主键值策略和Oracle不支持自增,Oracle使用序列
|
4月前
|
SQL Java 数据库连接
后端框架的学习----mybatis框架(7、使用注解开发)
这篇文章讲述了如何使用MyBatis框架的注解方式进行开发,包括在接口上使用注解定义SQL语句,并通过动态代理实现对数据库的增删改查操作,同时强调了接口需要在核心配置文件中注册绑定。
MybatisPlus-标准CRUD制作,新增boolean save(T t),删除 ~ delete(int id),修改 ~ update(T t),根据id查询,T getById....
MybatisPlus-标准CRUD制作,新增boolean save(T t),删除 ~ delete(int id),修改 ~ update(T t),根据id查询,T getById....