Mybatis基础环境准备请看:Mybatis基础环境准备
本篇讲解Mybati数据CRUD数据操作之单条件查询
1,编写接口方法
在 com.itheima.mapper
包写创建名为 BrandMapper
的接口。并在该接口中定义 List<Brand> selectAll()
方法。
/*** 查看详情:根据Id查询*/
Brand selectById(int id);
2,编写SQL语句
在 reources
下创建 com/itheima/mapper
目录结构,并在该目录下创建名为 BrandMapper.xml
的映射配置文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.itheima.mapper.BrandMapper"><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="selectById" resultMap="brandResultMap">select *from tb_brand where id = #{id};
</select>
</mapper>
3,编写测试方法
在 MybatisTest
类中编写测试查询所有的方法
@Test
public void testSelectById() throws IOException {//接收参数,该id以后需要传递过来int id = 2;//1. 获取SqlSessionFactoryString 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. 执行方法Brand brand = brandMapper.selectById(id);System.out.println(brand);//5. 释放资源sqlSession.close();
}
执行测试方法结果如下:
结果与数据库里信息一致。
4,参数占位符
控制台显示的SQL语句,能看到使用?进行占位。说明我们在映射配置文件中的写的 #{id}
最终会被?进行占位
mybatis提供了两种参数占位符:
-
#{} :执行SQL时,会将 #{} 占位符替换为?,将来自动设置参数值。从上述例子可以看出使用#{} 底层使用的是
PreparedStatement
-
${} :拼接SQL。底层使用的是
Statement
,会存在SQL注入问题<select id="selectById" resultMap="brandResultMap">select *from tb_brand where id = ${id}; </select>
大家开发过程中,还是使用#{}占位!
4,parameterType使用
对于有参数的mapper接口方法,我们在映射配置文件中应该配置 ParameterType
来指定参数类型。只不过该属性都可以省略。如下图:
<select id="selectById" parameterType="int" resultMap="brandResultMap">select *from tb_brand where id = #{id};
</select>
5,SQL语句中特殊字段处理
SQL语句中会有特殊字符,比如大于号。
因为映射配置文件是xml类型的问题,而 > < 等这些字符在xml中有特殊含义,所以此时我们需要将这些符号进行转义,可以使用以下两种方式进行转义:
- 转义字符
下图的 <
就是 <
的转义字符。
-
CDATA区
<![CDATA[ 内容 ]]>
[声明]:内容主要来源黑马程序员网上资源学习