4、Mybatis 中 三种查询方式和 parameterType

三种查询方式

1.selectList() 返回值为 List<resultType 属性控制>,适用于查询结果都需要遍历的需求。

List<Flower> list = session.selectList("a.b.selAll");
  for (Flower flower : list) {
    System.out.println(flower.toString());
  }

2.selectOne() 返回值 Object, 适用于返回结果只是变量或一行数据时

int count = session.selectOne("a.b.selById");
System.out.println(count);

3.selectMap() 返回值 Map
    3.1 适用于需要在查询结果中通过某列的值取到这行数据的需求.
    3.2 Map<key,resultType 控制>

Map<Object, Object> map = session.selectMap("a.b.c","name123");
System.out.println(map);

parameterType

1. 在 XXXMapper.xml 中等标签的 parameterType 可以 控制参数类型

2. SqlSession 的 selectList()和 selectOne()的第二个参数和 selectMap() 的第三个参数都表示方法的参数.selectOne(命令空间+方法id,参数) 代码示例:

 package com.mybatis.review.test;
 import java.io.IOException; 
 import java.io.InputStream;
 import java.util.List; 
 import org.apache.ibatis.session.SqlSession;
 import org.apache.ibatis.session.SqlSessionFactory; 
 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
 import com.mybatis.review.pojo.Flower; 
 public class MainTest { 
    public static void main(String\[\] args) throws IOException { 
       InputStream is = org.apache.ibatis.io.Resources.getResourceAsStream("mybatis.xml"); 
       //使用工厂设计及模式 
       SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
       //生产SqlSession SqlSession session = factory.openSession(); 
       //List<Flower> list = session.selectList("a.b.selectAll");
        /*for (Flower flower : list) { System.out.println(flower.toString()); }*/ 
        Flower fl = new Flower(); fl.setName("百合");
        fl.setId(2);
        Flower f = session.selectOne("a.b.selectAll",fl); 
         System.out.println(f.toString()); session.close(); 
    } 
  }

2.2 在 Mapper.xml 中可以通过#{}获取参数

2.2.1 parameterType 控制参数类型

2.2.2 #{}获取参数内容

2.2.2.1 使用索引,从 0 开始 #{0}表示第一个参数

2.2.2.2 也可以使用#{param1}第一个参数

2.2.2.3 如果只有一个参数(基本数据类型或 String),mybatis对#{}里面内容没有要求只要写内容即可.

2.2.2.4 如果参数是对象#{属性名}

2.2.2.5 如果参数是 map 写成#{key}

3. #{} 和 ${} 的区别 3.1 #{} 获取参数的内容支持 索引获取,param1获取指定位置参数, 并且 SQL 使用“?”占位符 3.2 ${} 字符串拼接不使用“?”占位,默认找${内容}内容的 get/set 方法,如 果写数字,就是一个数字(字符型参数,前后要加上“ "" ”双引号)

转载于:https://my.oschina.net/fendouan/blog/2876918

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值