一、绪论
Mybatis官网:MyBatis中文网
Q1:什么是MyBatis?
答:(粘贴自官网)MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
Q2:本文主要内容是什么?
本文主要总结了利用Mybatis查询所有数据、查询详情、条件查询的方法。
二、查询所有数据
三大步骤:1.编写一个与之对应的Mapper接口方法,举例:
public interface UserMapper {
List selectAll();
}
2.在Mapper.xml文件中编写对应的SQL映射文件,举例:
注意:1.select id 一定要和 Mapper接口名称一模一样。
2. resultType:方法返回值类型,这里填写对应实体类的路径。
我们需要思考三件事:1.SQL语句怎么写;2.需要什么参数;3.返回什么结果
3.执行方法。
@Test
public void test01() throws Exception {
// 1.获取 SqlSessionFactory对象
String resource = "mybatis-config.xml";//配置文件路径
InputStream inputStream = Resources.getResourceAsStream(resource);//字节输入流
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
// 2.获取sqlSession对象
SqlSession sqlSession = sqlSessionFactory.openSession();
// 3.获取Mapper代理对象
BrandMapper brandMapper = sqlSession.getMapper(BrandMapper.class);
// 4.执行sql
List brands = brandMapper.selectAll();
// 5.打印结构
System.out.println(brands);
// 6.释放资源
sqlSession.close();
}
Q2:数据库字段名称 和 实体类属性名称不一样 则 无法自动封装数据,应该怎么办?
可以这样做:1.起别名使其相同,举例:
select id,brand_name as brandName,company_name as companyName
from tb_brand;
这样查询出来的结果就不会出现明明有值,却显示为Null的情况。缺点是每次执行都要定义一次。因此我们这么做:
2.resultMap(最为常用)
resultMap有两个属性:resultMap id(可以随便取名字)、type类型,举例
select * from tb_brand;
注意更改上文resultType标识为resultMap标识。
二、查询指定的一条数据(查看详情)
注意参数占位符:
#{}:会将其替换为?防止SQL注入
${}拼SQL,会存在SQL注入问题
参数传递时,使用#{}.
欢迎批评与指正!



