一、sql标签作用
该标签是用来定义一些可复用的sql语句,需要在使用该复用sql语句的地方通过include标签引用。
二、案例
进行一条sql的查询,通过复用sql标签完成。
映射文件:
<resultMap id="BaseResult" type="com.my.entity.Person">
<id column="id" property="id"/>
<result column="name" property="name"/>
<result column="sex" property="sex"/>
<result column="telephone" property="telephone"/>
<result column="address" property="address"/>
<result column="age" property="age"/>
</resultMap>
<!-- sql标签 -->
<sql id="Base_Column">
id,name,sex,telephone,address,age
</sql>
<select id="selectById" parameterType="Integer" resultMap="BaseResult">
select
<include refid="Base_Column" />
from person
where id = #{id}
</select>
说明:对于sql标签的复用,直接通过include标签,然后refid指向要复用的sql标签即可。
测试类:
private SqlSessionFactory sqlSessionFactory;
@Before
public void init() throws IOException {
String resource = "mybatis-config.xml";
//1.使用mybatis的工具读取配置文件
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
//2.创建sqlSessionFactory
sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream);
inputStream.close();
}
/**
* 测试sql标签
*/
@Test
public void testSql() {
//3.获取sqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
//4.获取mapper接口实现类
PersonMapper personMapper = sqlSession.getMapper(PersonMapper.class);
//5.调用方法
Person person = personMapper.selectById(1);
System.out.println(person);
//6.释放资源
sqlSession.close();
}
说明:正常输出结果。
三、补充说明
1.sql标签一般用来复用字段名
2.sql标签可以复用另外一个sql标签,也是通过在该sql标签内使用include标签进行复用另外的sql标签
3.sql标签中还能添加动态标签