MyBatis返回结果集显示

结果集如何映射

ResultType方式

ResultType方式适用于数据库结果集可以直接映射成一个Java类的情况

Java实体类:

@Getter    //这三个注解需要依赖    lombok    jia包
@Setter
@ToString
public class User {
    private Integer id;
    private String username;
    private String nickName;
    private String password;
    private String email;
    private Timestamp lastLoginTime;
}

使用方法:

<select id="queryAllUser" resultType="com.lanou3g.bean.User">
    select * from user
</select>

解决数据库列名与Java类中属性名不一致的映射问题

  • 用 column 属性 与 sql 语句查询出来的 字段名相对性

  • 如果是在数据库字段名只用的是以下划线分割的字符串,而jopo使用的是驼峰的命名规则,则可以在 mybatis的配置文件中 开启 小驼峰映射。

ResultMap方式

ResultMap方式适用于复杂的结果集映射,比如数据库返回的结果集中的列名和JavaBean无法一一对应,或者对象间存在一对一、一对多关联映射时。

    <settings>
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>
<mapper>
    ...
    <resultMap id="userMap" type="user">
        <id property="id" column="id" />
        <result property="username" column="username" />
        <result property="lastLoginttime" column="last_login_time" />
        <result property="email" column="email" />
        <result property="nickName" column="nick_name" />
    </resultMap>
    ...
</mapper>

在查询语句中将resultType换成resultMap

<select id="queryAllUser" resultMap="userMap">
    select * from user
</select>

其实,如果遇到单纯字段名和属性名不对应的情况,使用别名的方式更简单

对象与容器映射问题

上述的resultMap的示例只是说明映射对象为全是基础的属性。
下面解决属性为对象以及容器类型。

前提

所需类


//类一   Author
@Setter
@Getter
@ToString
public class Author {
   private Integer id;
   private String name;
   private BookCom  magnumOpus;
   private List<Book> book;
}


//类二
@Setter
@Getter
@ToString
public class BookCom {
   private Integer cid;
   private Integer bcid;
   private String bookComName;
}

//类三
@Setter
@Getter
@ToString
public class Book {
   private Integer uid;
   private Integer bid;
   private String bookName;
}

所需接口

public interface BookMapper {
    //进行下面1对1映射
    public Author selectOneBook(Integer id);
    //进行下面一对多映射
    public List<Author> findAllAuthor();
}

Bookmapper.xml配置

 <resultMap id="authorMap" type="com.sen.mybatis.Bean.Author">
        <id column="id" property="id"/>
        <result column="name" property="name"/>
        <association property="magnumOpus" javaType="com.sen.mybatis.Bean.BookCom" resultMap="BookComMap" />
        <collection property="book" ofType="com.sen.mybatis.Bean.Book" resultMap="BookMap"/>
    </resultMap>

解决一对一映射查询问题


    <resultMap id="BookComMap" type="com.sen.mybatis.Bean.BookCom">
        <id column="bcid" property="cid"/>
        <result column="id" property="bcid"/>
        <result column="bookComName" property="bookComName"/>
    </resultMap>


<select id="selectOneBook" resultMap="authorMap">
    SELECT
        a.id,
        a.`name` `name`,
        b.id uid,
        b.`name` bookName,
        bc.id bcid,
        bc.`name` bookComName
    FROM
        author a
    LEFT JOIN bookcom bc ON a.id = bc.u_id
    LEFT JOIN book b ON b.u_id = a.id
    WHERE a.id = 1;
</select>


解决一对多映射查询问题

    <resultMap id="BookMap" type="com.sen.mybatis.Bean.Book">
        <id column="uid" property="uid"/>
        <result column="id" property="bid"/>
        <result column="bookName" property="bookName"/>
    </resultMap>

<select id="findAllAuthor" resultMap="authorMap">
            SELECT
                a.id,
                a.`name` `name`,
                b.id uid,
                b.`name` bookName,
                bc.id bcid,
                bc.`name` bookComName
            FROM
                author a
            LEFT JOIN bookcom bc ON a.id = bc.u_id
            LEFT JOIN book b ON b.u_id = a.id;
    </select>
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. 简介 1.1 什么是 MyBatis ? MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的...
    笨鸟慢飞阅读 5,621评论 0 4
  • 复习:课程复习: mybatis是什么?mybatis是一人持久层框架,mybatis是一个不完全的ORM框架。s...
    isuntong阅读 432评论 0 0
  • title: MyBatis之使用resultMap实现高级映射tags: MyBatiscategories: ...
    codingXiaxw阅读 1,537评论 1 1
  • 使用原生jdbc的问题 数据库连接, 使用时就创建,不使用就立即释放,对数据库进行频繁地链接开启和关闭,造成数据库...
    wtmxx阅读 737评论 1 3
  • 小石榴67天,已经可以把夏阿姨送的73码的包屁屁衣服穿的大小合适了,用来躺着洗澡的澡盆,也已经躺不下她了。 回想起...
    贞贞私房话阅读 307评论 2 1