• 我爱java系列---【mysql结果集的处理】


    1.查询返回的结果的表中字段名与实体类的属性名不一致时。( resultType(输出结果类型)

    resultType可以指定将查询结果映射为Pojo,但需要Pojo的属性名和Sql查询的列名一致方可映射成功。如果Sql查询字段名和Pojo的属性名不一致,可以通过resultMap将字段名和属性名作一个对应关系 resultMap实质上还需要将查询结果映射到Pojo对象中。

    由于mapper.xmlSql查询列(user_id)Order类属性(userId)不一致,所以查询结果不能映射到Pojo中。

    需要定义resultMap,把orderResultMapSql查询列(user_id)Order类属性(userId)对应起来

    改造OrderMapper.xml,如下:

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper
    PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <!-- namespace:命名空间,用于隔离sql,还有一个很重要的作用,Mapper动态代理开发的时候使用,需要指定Mapper的类路径 -->
    <mapper namespace="com.itheima.mybatis.mapper.OrdersMapper">
    
    	<!-- resultMap最终还是要将结果映射到pojo上,type就是指定映射到哪一个pojo -->
    	<!-- id:设置ResultMap的id -->
    	<resultMap type="orders" id="orderResultMap">
    		<!-- 定义主键 ,非常重要。如果是多个字段,则定义多个id -->
    		<!-- property:主键在pojo中的属性名 -->
    		<!-- column:主键在数据库中的列名 -->
    		<id property="id" column="id" />
    
    		<!-- 定义普通属性 -->
    		<result property="userId" column="user_id" />
    		<result property="number" column="number" />
    		<result property="createtime" column="createtime" />
    		<result property="note" column="note" />
    	</resultMap>
    
    	<!-- 查询所有的订单数据 -->
    	<select id="queryOrdersAll" resultMap="orderResultMap">
    		SELECT id, user_id,
    		number,
    		createtime, note FROM orders
    	</select>
    </mapper>
    

      

    2.插入一个对象后,如何把自增主键返回

    <!-- 保存用户 -->
    <insert id="saveUser" parameterType="com.itheima.mybatis.pojo.User">
    	<!-- selectKey 标签实现主键返回 -->
    	<!-- keyProperty:主键对应的pojo中的哪一个属性 -->
    	<!-- order:设置在执行insert语句前执行查询id的sql,孩纸在执行insert语句之后执行查询id的sql -->
    	<!-- resultType:设置返回的id的类型 -->
    	<selectKey keyProperty="id" order="AFTER"
    		resultType="Integer">
    		SELECT LAST_INSERT_ID()
    	</selectKey>
    	INSERT INTO USER
    	(username,birthday,sex,address) VALUES
    	(#{username},#{birthday},#{sex},#{address})
    </insert>
    

    LAST_INSERT_ID():Mysql的函数,返回auto_increment自增列新记录id值。

    效果如下图所示:

     3.查询条件为多个条件,这些条件不在一个pojo类中时,采用重新封装pojo的思想。

    愿你走出半生,归来仍是少年!
  • 相关阅读:
    CA 证书和数字证书
    PHP获取不了内网IP?
    站点速度检测工具
    Mac地址
    交互机和路由器区别
    关于实体店收银系统和cookie实现登录状态
    Python3 的序列
    Python3 字符串格式化
    Python3 的元组
    Python3 的列表
  • 原文地址:https://www.cnblogs.com/hujunwei/p/11672290.html
Copyright © 2020-2023  润新知