java框架---->mybatis的使用(一)

  这里我们记录一些mybatis的一些常用知识和项目中遇到的问题总结。快乐人生的三个必要元素是,有要做的事、热爱的事及盼望的事。

mybatis的一些知识

一、mybatis插入返回主键值

  • 插入的java代码:其中返回是当前插入的主键,insert方法返回的是影响的行数。
public void insertUserInfo() {
    Map<String, Object> map1 = new HashMap<>();
    map1.put("userName", "huhx");
    map1.put("age", 35);
    int effectRow = this.sqlSession.insert("login.insertUserInfo", map1);
    System.out.println(map1.get("huhxId")); // 5
    System.out.println(effectRow); // 1
}
  • 语句映射的sql语句:
<insert id="insertUserInfo" parameterType="java.util.HashMap" useGeneratedKeys="true" keyProperty="huhxId">
    INSERT INTO
      puser(user_name, age)
    VALUES
      (#{userName}, #{age})
</insert>

关于mybatis的官方文档: http://www.mybatis.org/mybatis-3/zh/sqlmap-xml.html

二、mybatis的一个参数传递的异常

  • java代码
public Map<String, Object> getUserInfoById(Long userId) {
    return this.sqlSession.selectOne("user.queryUserInfoByUserId", userId);
}
  • xml映射的代码
<select id="queryUserInfoByUserId" parameterType="java.lang.Long" resultType="java.util.HashMap">
    SELECT
        userId, username, password, address, birthday, sex
    FROM
        puser
    WHERE
        1 = 1
    <if test="userId != null">
        AND userId = #{userId}
    </if>
    ORDER BY
      userId DESC
</select>
  • 抛出异常
org.apache.ibatis.reflection.ReflectionException: There is no getter for property named ‘userId‘ in ‘class java.lang.Long‘

对于这类单个入参然后用if判断的,mybatis有自己的内置对象。如果你在if判断里面写的是你的入参的对象名,那么就会抛出上述的异常。

三、mybatis的查询数据包含上送的数据字段

  这里面注意几点:一、parameterType的类型可以为缩写的形式map;二、SELECT中可以有#{ActivityType} AS ActivityType的写法;三、LEFT JOIN前端的FROM里面的数据需要括号。

<select id="getOtherActivity" parameterType="map" resultType="map">
    SELECT
        a.ActivitySeq,
        a.ActivityName,
        a.ActivityDes,
        a.ActivityBeginDate,
        a.ActivityEndDate,
        a.ActivityStatus,
        b.ActivityChannel,
        c.ToolName,
        c.ToolType,
        c.ToolDesc,
        #{ActivityType} AS ActivityType
    FROM
        (A_ACTIVITY a, A_ACTIVITY_CHANNEL b, T_TOOL c)
    LEFT JOIN
        <choose>
            <when test="ActivityType != null and ActivityType == 2">
                A_CONVERT d
            </when>
            <when test="ActivityType != null and ActivityType == 3">
                A_DISTRIBUTION d
            </when>
            <when test="ActivityType != null and ActivityType == 6">
                A_MISSION d
            </when>
        </choose>
    ON
        d.ActivitySeq = a.ActivitySeq AND
        d.ToolSeq = c.ToolSeq
    WHERE
        a.ActivitySeq = b.ActivitySeq
        <if test="ActivityNo != null">
            AND a.ActivitySeq = #{ActivityNo}
        </if>
    ORDER BY
        a.ActivitySeq DESC
</select>

四、mybatis的批量插入传递额外的数据

我们的需求是在批量插入的时候,有些数据是一定的,不需要在遍历的列表里面。

public String batchInsertMap() {
    Map<String, Object> parmMap = new HashMap<>();
    parmMap.put("personId", "1");
    List<Map<String, String>> list = new ArrayList<>();
    for (int i = 0; i < 3; i ++) {
        Map<String, String> map = new HashMap<>();
        map.put("content", "comment " + i);
        list.add(map);
    }
    parmMap.put("list", list);
    // 批量插入数据
    int rowCounts = this.sqlSession.insert("user.insertBatchComments", parmMap);
    return rowCounts + "";
}

mybatis的sql语句如下:

<insert id="insertBatchComments" parameterType="map">
    INSERT INTO comment
        (person_id, content)
    VALUES
    <foreach collection="list" item="item" index="index" separator=",">
    (
        #{personId},
        #{item.content}
    )
  </foreach>
</insert>

友情链接

原文地址:https://www.cnblogs.com/huhx/p/baseusejavamybatis1.html

时间: 2024-10-07 22:27:20

java框架---->mybatis的使用(一)的相关文章

JAVA 框架-Mybatis

一.Mybatis简介 1.MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis .2013年11月迁移到Github.iBATIS一词来源于"internet"和"abatis"的组合,是一个基于Java的持久层框架.iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAOs). 2.功

Java框架-MyBatis三剑客之MyBatis Generator(mybatis-generator MBG插件)详解

生成器设计思路: 连接数据库 -> 获取表结构 -> 生成文件 1 下载与安装 官网文档入口 最方便的 maven 插件使用方式 贴至pom 文件 2 新建配置文件 填充配置信息(官网示例) 项目实例 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Genera

java框架---MyBatis全局配置文件

以下均放在configuration标签下 1.properties标签 可以使用properties标签引入外部properties配置文件的内容 两个属性: resource:引入类路径下的资源 url:引入网络路径或者磁盘路径下的资源 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3

java框架---MyBatis接口编程

MyBatis提供接口与配置文件动态绑定的功能 要求: 1.配置文件的namespace名称空间指定为接口的全类名 2.配置文件中的id唯一标识与接口中的方法对应(返回值类型对应,方法名对应,参数个数和类型对应) 接口代码: package com.bird.mybatis.dao; import com.bird.mybatis.bean.Employee; public interface EmployeeMapper { public Employee getEmpById(Integer

JAVA SpringMVC+mybatis(oracle 和 mysql) HTML5 bootstrap全新高大尚后台框架

说明:JAVA SpringMVC+mybatis(oracle 和 mysql) HTML5 全新高大尚后台框架 bootstrap 1.支持APP手机应用(android和ios)接口调用 2.全新高大尚HTML5+css3.0+bootstrap开发界面UI,美观漂亮时尚.前沿 3.有ORACLE 和MYSQL ,Spring3.0,4.0版本各一个,一共4套版本全部提供源代码 4.框架搭建完善,在此基础上做过很多项目,身经百战,支持大并发,程序运行稳定. 5.基础功能已经完善,此为框架平

详解Java的MyBatis框架中SQL语句映射部分的编写

这篇文章主要介绍了Java的MyBatis框架中SQL语句映射部分的编写,文中分为resultMap和增删查改实现两个部分来讲解,需要的朋友可以参考下 1.resultMap SQL 映射XML 文件是所有sql语句放置的地方.需要定义一个workspace,一般定义为对应的接口类的路径.写好SQL语句映射文件后,需要在MyBAtis配置文件mappers标签中引用,例如: ? 1 2 3 4 5 6 <mappers>   <mapper resource="com/limi

JAVA SpringMVC+mybatis(oracle 和 mysql) HTML5 全新高大尚后台框架 bootstrap

说明:JAVA SpringMVC+mybatis(oracle 和 mysql) HTML5 全新高大尚后台框架 bootstrap 1.支持APP手机应用(android和ios)接口调用 2.全新高大尚HTML5+css3.0+bootstrap开发界面UI,美观漂亮时尚.前沿 3.有ORACLE 和MYSQL ,Spring3.0,4.0版本各一个,一共4套版本全部提供源代码 4.框架搭建完善,在此基础上做过很多项目,身经百战,支持大并发,程序运行稳定. 5.基础功能已经完善,此为框架平

JAVA SpringMVC+mybatis(oracle 和 mysql) HTML5 全新高大尚

说明:JAVA SpringMVC+mybatis(oracle 和 mysql) HTML5 全新高大尚后台框架 bootstrap 1.支持APP手机应用(android和ios)接口调用 2.全新高大尚HTML5+css3.0+bootstrap开发界面UI,美观漂亮时尚.前沿 3.有ORACLE 和MYSQL ,Spring3.0,4.0版本各一个,一共4套版本全部提供源代码 4.框架搭建完善,在此基础上做过很多项目,身经百战,支持大并发,程序运行稳定. 5.基础功能已经完善,此为框架平

转 分享我在阿里工作十年接触过Java框架设计模式

转 原文: 分享我在阿里工作十年接触过Java框架设计模式 一.前言 说起来设计模式,大家应该都耳熟能详,设计模式代表了软件设计的最佳实践,是经过不断总结提炼出来的代码设计经验的分类总结,这些模式或者可以简化代码,或者可以是代码逻辑开起来清晰,或者对功能扩展很方便…. 设计模式按照使用场景可以分为三大类:创建型模式(Creational Patterns).结构型模式(Structural Patterns).行为型模式(Behavioral Patterns). 创建型模式(Creationa