小粥学Mybatis(13)之动态SQL—sql标签
抽取重复的SQL语句
DAO
/**
* Description:用户的持久层接口
* <p>
* ClassName: IUserDAO
* date: 2021/3/1 10:47
*
* @author Yin.Liu
* @version 1.0
* @since JDK 1.8
*/
public interface IUserDAO {
/**
* 根据查询的条件生成:有可能有地址,有可能有姓名,有可能没有
* @return
*/
List<User> findUserByCondition(User user);
}
mapper.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">
<!--namespace必须是dao接口的全限定类名-->
<mapper namespace="xyz.zhouzhousag.dao.IUserDAO">
<!--抽取重复的SQL语句-->
<sql id="defaultUser">
select * from user
</sql>
<!--查询所有-->
<!--引入-->
<select id="findAll" resultMap="userMap">
<include refid="defaultUser"></include>
</select>
</mapper>
测试
/**
*@ClassName MybatisTest
*@Description TODO
*@Author Yin.Liu8
*@Date 2021/3/1 11:25
*@Version 1.0
*/
public class MybatisTest {
private InputStream in;
private SqlSession sqlSession;
private IUserDAO userDAO;
@Before //用于测试方法之前使用
public void init() throws Exception {
//1.读取配置文件
in = Resources.getResourceAsStream("SqlMapConfig.xml");
//2.创建SqlSessionFactory工厂
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
//3.使用工厂生产 SqlSession对象
sqlSession = factory.openSession(true);
//4.使用SqlSession创建DAO接口的代理对象
userDAO = sqlSession.getMapper(IUserDAO.class);
}
@After //用于测试方法之后
public void destroy() throws Exception {
//6.释放资源
sqlSession.close();
in.close();
}
@Test
public void mybatisTest() throws Exception {
userDAO = sqlSession.getMapper(IUserDAO.class);
//5.使用代理对象执行方法
List<User> all = userDAO.findAll();
for (User user:all) {
System.out.println(user.toString());
}
}
}