mybatis简单resultMap使用详解

网友投稿 245 2023-01-19

mybatis简单resultMap使用详解

Mybatis的介绍以及使用:http://mybatis.org/mybatis-3/zh/index.html

mybatis是一个半自动的ORM(Object Relational Mapping)框架,需要手动配置一些SQL语句或者注解,相对来说Mybatis留给程序员操作的空间灵活度更高,通常需要手动配置一些东西完成OR映射。当数据库表中的字段 和 POJO实体类不匹配时,这是就需要程序员手动完成字段的映射。

mybatis-config.xml配置文件

PUBLIC "-//mybatis.org//DTD Config 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-config.dtd">

mybatisUtil加载工具类

import org.apache.ibatis.io.Resources;

import org.apache.ibatis.session.SqlSession;

import org.apache.ibatis.session.SqlSessionFactory;

import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;

import java.io.InputStream;

public class mybatisUtil {

private static SqlSessionFactory sqlSessionFactory = null;

static {

try {

String resource = "mybatis-config.xml";

InputStream in = Resources.getResourceAsStream(resource);

KNYXQCW sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);

} catch (IOException e) {

e.printStackTrace();

}

}

public static SqlSession getSqlsession(){

return sqlSessionFactory.openSession();

}

}

POJO实体类User,为了方便简单实用Lombok注解,减少一些代码。

package com.pojo;

import lombok.AllArgsConstructor;

import lombok.Data;

import lombok.NoArgsConstructor;

@Data //各种get / set方法 Tostring...

@AllArgsConstructor //全参构造

@NoArgsConstructor //无参构造

public class User {

private int id; //对应数据库中的id

private String username; //对应数据库中的name

private String password; //对应数据库中的pwd

}

接口方法与对应的xml配置文件

package com.dao;

import com.pojo.User;

import java.util.List;

public interface UserMapper {

List getUserList();

}

xml映射

PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-mKNYXQCWapper.dtd">

select *from user;

1. POJO实体类 和 数据表字段不匹配

@Test

public void test1(){

SqlSession session = mybatisUtil.getSqlsession();

UserMapper mapper = session.getMapper(UserMapper.class);

List list = mapper.getUserList();

for (User user : list) {

System.out.println(user.toString());

}

session.close();

}

POJO实体类中有两个字段和数据库的字段不匹配,最后获得结果的时对于匹配失败的属性会产生null空值。使用输出日志进行帮忙很容易看到区别。

简单的解决方案:就是SQL语句查询时给查询字段使用重命名。

select id, name as username, pwd as password from user

2. resultMap解决属性 - 字段不匹配问题

上面这种解决方案是能够解决问题的,但是有点冗余本身就要查全部的信息用的 * 做通配。这么一改需要每个字段都列出来,然后对极个别的字段进行取别名。试想一下当数据表中有几十个字段呢?而真正需要取别名的字段只有1 - 2个呢?因此mybatis提供了一个强大的机制resultMap结果集映射来解决这个问题。

PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

select *from user

resultMap标签的解释:

id可以认为定义方法的名称,下面select中的resultMap传入id的值就相当于使用这个方法完成映射。

type是实体类名

column对应数据库中的字段

property是实体类的属性。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:小程序 豆瓣电影api(新电影小程序)
下一篇:企查查免费api(企查查免费送六个月vip会员)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~