java框架---->mybatis的使用(一)
2017-12-25 21:54
561 查看
这里我们记录一些mybatis的一些常用知识和项目中遇到的问题总结。快乐人生的三个必要元素是,有要做的事、热爱的事及盼望的事。
语句映射的sql语句:
关于mybatis的官方文档: http://www.mybatis.org/mybatis-3/zh/sqlmap-xml.html
xml映射的代码
抛出异常
对于这类单个入参然后用if判断的,mybatis有自己的内置对象。如果你在if判断里面写的是你的入参的对象名,那么就会抛出上述的异常。
mybatis的sql语句如下:
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>
友情链接
相关文章推荐
- Java基础之集合框架——使用真的的链表LinkedList<>(TryPolyLine)
- Java的MyBatis框架中Mapper映射配置的使用及原理解析
- Java的MyBatis框架中Mapper映射配置的使用及原理解析
- 使用Java实现面向对象编程--集合框架-->迭代器Iterator
- Spring、Spring MVC、MyBatis等Java Web框架使用问题集锦
- java框架---->commonmark的使用(一)
- Java的MyBatis框架中Mapper映射配置的使用及原理解析
- 使用Java实现面向对象编程--集合框架-->List接口
- java连接数据库方式(二):单独使用MyBatis 框架实现
- Java基础之集合框架——使用集合Vector<>挑选演员(TryVector)
- java框架---->lucene的使用(一)
- java框架---->RxJava的使用(一)
- Mybatis使用“<trim prefix="SET" suffixOverrides=",">”出现Cause: java.sql.SQLException:
- java web spring mvc 框架中使用mybatis报错的解决方案
- 整理Java的MyBatis框架中一些重要的功能及基本使用示例
- JAVAWEB开发之SpringMVC详解(一)——SpringMVC的框架原理、架构简介、与mybatis整合和注解方式的使用、
- Java使用实现面向对象编程:第七章集合框架的解读=>重中之重
- Java使用JDBC或MyBatis框架向Oracle中插入XMLType数据