美文网首页
8、mybatis-映射文件-查询

8、mybatis-映射文件-查询

作者: 唯老 | 来源:发表于2019-08-18 15:20 被阅读0次

    一、概要

    mybatis查询主要通过映射文件中的 <select>元素用于映射 SQL 的 select 语句

    二、属性

    常用属性

    属性 说明
    id id是命名空间中的唯一标识符,可被用来代表这条语句。 对应Mapper接口里的方法的名称,大小写敏感
    parameterType parameterType (可选配置, 默认为mybatis自动选择处理)
    说明 将要传入语句的参数的完全限定类名或别名, 如果不配置,会自动处理
    parameterType 主要指定参数类型,可以是基本类型,也可以是复杂类型(如对象)
    resultType resultType 与 resultMap 二选一配置
    resultType用以指定返回类型,指定的类型可以是基本类型,可以是java容器,也可以是javabean
    resultMap resultType 与 resultMap 二选一配置
    说明 resultMap用于引用我们通过 resultMap标签定义的映射类型,这也是mybatis组件高级复杂映射的关键

    其它属性

    属性 说明
    flushCache 将其设置为 true,表示语句一旦执行,都会导致本地缓存和二级缓存都会被清空,默认值:false
    useCache 如果为true,结果将在二级缓存中缓存。select语句中默认为true
    timeout 设置超时,若超时则抛出异常。默认值为 unset(依赖驱动)
    fetchSize 这是尝试影响驱动程序每次批量返回的结果行数和这个设置值相等。默认值为 unset(依赖驱动)
    statementType 设置MyBatis 使用哪个JDBC的 Statement。可选值: 1.STATEMENT,2.PREPARED 或 3.CALLABLE 的一个。默认值:PREPARED
    resultSetType 可选值: 1.FORWARD_ONLY,2.SCROLL_SENSITIVE,3.SCROLL_INSENSITIVE 中的一个,默认值为 unset (依赖驱动)
    resultSetType 针对 JDBC 的 ResultSet 接口,可选值: 1.FORWARD_ONLY,2.SCROLL_SENSITIVE, 3.SCROLL_INSENSITIVE 中的一个,默认值为 unset (依赖驱动)
    resultOrdered 多结果集时使用。它将列出语句执行后返回的结果集并每个结果集给一个名称,名称是逗号分隔的

    完整模板

    <select
      id=""
      parameterType=""
      resultType=""
      resultMap=""
      flushCache="false"
      useCache="true"
      timeout="20"
      fetchSize="100"
      statementType="PREPARED"
      resultSetType="FORWARD_ONLY"
      resultOrdered="true"
      resultSets="">
    </select>
    

    三、栗子

    public interface SelectMapper {
        List<User> findAll();
        User findById(Integer uid);
    }
    
    public class User implements Serializable {
        private Integer uid;
        private String name;
        private String password;
        private String phone;
        private String email;
        private Date joinDate;
        private Integer status;
    }
    

    查询所有

    <?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">
    <mapper namespace="com.vip.mybatis.mapper.SelectMapper">
      <!-- 1. resultType 结果集自动映射到 User 属性 注意: 必须属性和列名保持一致(通过后面的学习解决)-->
        <select id="findAll" resultType="com.vip.mybatis.entity.User">
                  <!--  resultType 返回集合User对象 -->
                SELECT * FROM user
        </select>
    </mapper>
    

    过滤行

    <?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">
    <mapper namespace="com.vip.mybatis.mapper.SelectMapper">
        <!--
         1. parameterType="integer" 可选,会自动映射,
         2. resultType="com.vip.mybatis.entity.User" 返回类型唯一的对象类型,多个报错
         -->
        <select id="findById" parameterType="integer" resultType="com.vip.mybatis.entity.User">
            <!--3.  uid 数据库的列名 -->
            <!--4.  #{uid}  对应接口中的参数 -->
            SELECT * FROM user
            WHERE uid=#{uid} AND status = 1
        </select>
    </mapper>
    

    过滤列

    <?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">
    <mapper namespace="com.vip.mybatis.mapper.SelectMapper">
        <select id="findById" parameterType="integer"     resultType="com.vip.mybatis.entity.User">
            SELECT uid, name, password, phone, email, join_date FROM user
            WHERE uid=#{uid} AND status = 1
        </select>
    </mapper>
    

    相关文章

      网友评论

          本文标题:8、mybatis-映射文件-查询

          本文链接:https://www.haomeiwen.com/subject/flirsctx.html