代码编织梦想

配置解析

二级目录

三级目录

ResultMap

主要作用: 属性名和字段名不一致

提出问题

查询为null的解决方法

前提条件:
查询数据库中目标表USER中的字段为 id,name,pwd;
在Java中定义的实体类为 id,name,password;

public class User {
    private int id;  //id
    private String name;   //姓名
    private String password;   //密码和数据库不一样!
    //构造
    //set/get
    //toString()
}

期间两者字段不能一一对应
接口如下:

//根据id查询用户
User selectUserById(int id);

mapper内容:

<select id="selectUserById" resultType="User ">
    select * from user where id = #{id}
</select>

如此查询,在java实例中使用时,必然会出现password的字段为空的情况,这是两者字段所不想匹配的场合;

mybatis会根据这些查询的列名(会将列名转化为小写,数据库不区分大小写) , 去对应的实体类中查找相应列名的set方法设值 , 由于找不到setPwd() , 所以password返回null ; 【自动映射】

解决方案

指定别名

再SQL中通过as的方式指定别名,使查出的数据字段与实体类中的字段的属性名相一致;
别名设定如下:

select
	id,
	name,
	pwd as password --通过赋别名的方式可以解决上述问题
from
	USER
<select id="selectUserById" resultType="User">
    select id , name , pwd as password from user where id = #{id}
</select>

使用ResultMap(结果集映射)

<resultMap id="UserMap" type="User">
    <!-- id为主键 -->
    <id column="id" property="id"/>
    <!-- column是数据库表的列名 , property是对应实体类的属性名 -->
    <result column="name" property="name"/>
    <result column="pwd" property="password"/>
</resultMap>

<select id="selectUserById" resultMap="UserMap">
    select id , name , pwd from user where id = #{id}
</select>
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_44896379/article/details/129414146

mybatis 02_mindmrwang的博客-爱代码爱编程

这个是Mybatis的主配置文件: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybat

mybatis02-爱代码爱编程

Mybatis02 mybatis的crud(基于代理dao的方式)增删改查mybatis中参数深入以及结果集的深入mybatis中的配置(主配置文件:SqlMapConfig.xml) properties 标签t

mybatis02-爱代码爱编程

mybatis默认事务管理器transactionManager是JDBC,连接池:POOLED   核心配置文件 mybatis-config.xml Mybatis的配置文件包含了会深深影响Mybatis行为的设置和属性信息 dbcp c3p0 mybatis默认事务管理器transactionManager是JDBC,连接池:PO

Spring整合MyBatis02-爱代码爱编程

1、MyBatis-Spring 1.1、简介 MyBatis-Spring 会帮助你将 MyBatis 代码无缝地整合到 Spring 中。它将允许 MyBatis 参与到 Spring 的事务管理之中,创建映射器 mapper 和 SqlSession 并注入到 bean 中,以及将 Mybatis 的异常转换为 Spring 的 DataAcce

Mybatis02-搭建Mybatis环境-爱代码爱编程

Mybatis02-搭建Mybatis环境 SQL语句1、开发环境2、创建Maven工程a>打包方式jarb>引入依赖3、创建Mybatis的核心配置文件4、创建Mapper接口5、创建Mybatis的映射文件6、通过Junit测试功能7、加入log4j日志功能a> 加入依赖b> 加入log4j的配置文件日志级别 SQL

Mybatis02-第一个Mybatis程序(了解Mybatis项目是如何搭建的并解决一些问题)-爱代码爱编程

1.创建数据库建表 CREATE TABLE `user`(   `id` int(20) not null PRIMARY KEY,   `name` VARCHAR(30) DEFAULT NULL,   `pwd` VARCHAR(30) DEFAULT NULL     )ENGINE=INNODB DEFAULT CHARSET=utf8

mybatis02动态sql和分页_天蝎座的程序猿的博客-爱代码爱编程

目录 1、mybatis动态sql是? 1.1、if和where标签  1.2、trim标签 1.3、foreach标签 1.4、set/choose/otherwise/when标签 2.模糊查询(3种方式) 2.1 参数中直接加入%% 2.2 使用${...}代替#{...}(不建议使用该方式,有SQL注入风险)          关键

3.6笔试-爱代码爱编程

今天做了一场cvte笔试 是测试方向的 一共有19道题目 大概有四五道计算机网络的题目 三四道python的题目 三四道mysql查询问题 设计测试用例题目大概有两道 一道编程题 1编程 奇怪的是编程题出现在第二题,而且做一题交一题 题目有点难理解,我看题就花了五分钟 我怕后面还有编程题 就草草交了 到最后交卷的时候还有半个小

消息中间件有什么优势?消息中间件常用协议有哪些?-爱代码爱编程

消息中间件有什么优势? 系统解耦 交互系统之间没有直接的调用关系,只是通过消息传输,故系统侵入性不强,耦合度低。 提高系统响应时间 例如原来的一套逻辑,完成支付可能涉及先修改订单状态、计算会员积分、通知物流配送几个逻

mybatis02-爱代码爱编程

MyBatis02--MyBatis 框架快速入门 一、入门案例1.使用 Mybatis 准备2.搭建 MyBatis 开发环境1)创建MySQL数据库和表2)创建Maven工程3)加入Maven坐标4)加入M

mybatis02-爱代码爱编程

1. 分页插件PageHelper (1)引用PageHelper的jar包  (2)mybatis.xml中设置PageHelper的拦截器 (3)实现PageHelper拦截器功能   PageHelper.startPage(1,5); List<User> list=

mybatis 02 配置_mybatis fetchsize-爱代码爱编程

导入jar包 <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</arti

【1.3 api服务网关(springcloudgateway)】基于springcloud gateway的webflux与google的kaptcha实现图形验证码功能_kaptcha和captchautil那个性能好-爱代码爱编程

一、背景 基于SpringCloud 微服务架构的项目中,需要使用图形验证码,以下是使用的记录。 二、验证码功能介绍 有两种工具生成验证码:Captcha 和 kaptcha 2.1 Captcha 介绍 2.1