1)规范
- XML映射文件的名称与Mapper接口名称一致,并且将XML映射文件和Mapper接口放置在相同包下 (同包同名) 。
- XML映射文件的namespace属性为Mapper接口全限定名一致
- XML映射文件中sql语句的id与Mapper 接口中的方法名一致,并保持返回类型一致。
2)示例讲解
【1】同包同名
注意点创建同包同名的目录时,resources是文件目录,不是包,所以创建的时候不是以 . 分割,而是以 斜杠 / ,因为是创建目录文件夹。
【2】在XML文件中配置统一的约束并编写SQL语句
- 百度搜索:Mybatis中文网
- 选择入门–>探究已映射的SQL文件
只需要前面的约束
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
SQL语句需要包含在mapper里面
<mapper>
</mapper>
比如:查询满足这三个条件的员工信息:名字带有“张”,性别是“男”,入职时间在"2010-01-01"-------“2020-01-01”,对应的XML文件如何写?
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.mapper.EmpMapper">
<!--resultType标明返回结果中单条记录的类型-->
<select id="list" resultType="com.example.pojo.Emp">
select * from emp where name like concat('%',#{name},'%') and gender=#{gender} and
entrydate between #{begin} and #{end} order by update_time desc
</select>
</mapper>
这是一个MyBatis的Mapper映射文件(EmpMapper.xml),用于将数据库表emp中的数据映射到Java中的Emp类。其中,mapper元素用于指定该文件对应的Mapper接口类,select元素表示一个查询语句。其中,id属性指定该查询的唯一标识,resultType属性指定该查询返回单条结果的类型,即Emp类。查询语句中使用了预处理占位符#{},用于防止SQL注入。该查询语句对应的SQL语句是查询emp表中满足条件的记录,并按照更新时间倒序排列。其中,#{name}、#{gender}、#{begin}和#{end}都是查询语句的参数,使用时需要通过Mapper接口类调用对应的方法并传入参数。
- namespace是MyBatis中mapper接口或映射文件的命名空间,它通过指定命名空间来标识唯一的Mapper。在MyBatis中,namespace的定义是必须的,因为它可以让MyBatis正确地找到相应的Mapper并执行对应的SQL语句。在上述示例中,namespace为com.example.mapper.EmpMapper,指定了该Mapper的命名空间。
- id 属性是指该 SQL 语句的唯一标识符,用于在代码中调用该 SQL 语句进行数据库操作。
- resultType 属性是指返回结果集中单条记录的类型,即 SQL 查询结果转换为 java 对象时使用的类型。在上述的例子中,resultType=“com.example.pojo.Emp” 表示查询结果会被转换为 com.example.pojo.Emp 类型的对象。