8、mybatis-映射文件-查询

2019-08-18  本文已影响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>
上一篇下一篇

猜你喜欢

热点阅读