三种查询方式
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 方法,如 果写数字,就是一个数字(字符型参数,前后要加上“ "" ”双引号)