1.编写接口方法: Mapper接口
参数:无
结果: List<Brand>
List<Brand>selectAll();
public interface BrandMapper {
/*
查询所有
*/
public List<Brand> selectAll();
}
2.编写SQL语句: SQL映射文件:
<select id="selectAll" resultType="brand">
select * from tb_brand;
</select>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--
namespace:名称空间
-->
<mapper namespace="com.zxl.mapper.BrandMapper">
<!--
数据库表的字段名称和实体类的属性名称不一样,则不能自动封装
1.起别名:对不一样的列名起别名,让别名和实体类的属性名一样
缺点:每次查询都要定义一次别名
sql片段来解决
缺点:不灵活
2.resultMap
1.定义<resultMap>标签
2.在<select>标签中,使用resultMap属性替换resultType属性
-->
<!--
id:唯一标识
type:映射的类型,支持别名
-->
<resultMap id="brandResultMap" type="brand">
<!--
id:完成主键字段的映射
column:表的列名
property:实体类的属性名
result:完成一般字段的映射
column:表的列名
property:实体类的属性名
-->
<result column="brand_name" property="brandName"/>
<result column="company_name" property="companyName"/>
</resultMap>
<select id="selectAll" resultMap="brandResultMap">
select *
from tb_brand;
</select>
<!--
sql片段
-->
<!--<sql id="brand_column">
id,brand_name as brandName,company_name as companyName,ordered,description,status
</sql>
<select id="selectAll" resultType="Brand">
select
<include refid="brand_column"></include>
from tb_brand;
</select>-->
<!--<select id="selectAll" resultType="Brand">
select * from tb_brand;
</select>-->
</mapper>
3.执行方法,测试
public class MyBatisTest {
@Test
public void testSelectAll()throws Exception{
//1.加载mybatis的核心配置文件,获取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.执行方法
List<Brand> brands = brandMapper.selectAll();
System.out.println(brands);
//5.释放资源
sqlSession.close();
}
}
4.总结
MyBatis完成操作需要几步?
三步:编写接口方法-->编写SQL -->执行方法
数据库表的字段名称和实体类的属性名称不一样,则不能自动封装
1.起别名:对不一样的列名起别名,让别名和实体类的属性名一样
缺点:每次查询都要定义一次别名
sql片段来解决
缺点:不灵活
2.resultMap:定义<resultMap>标签、在<select>标签中,使用resultMap属性替换resultType属性