1.实现查询所有的数据:
在映射文件中:
<select id="listAll" resultType="mytest.domain.User">
select * from user
</select>
在测试函数中
@Before
public void initFactory() throws IOException {
//配置文件
String resource = "sqlMapConfig.xml";
//定义读取配置文件的输入流,对于输入流和输出流【针对于应用程序来说是输入还是输出】
InputStream in = Resources.getResourceAsStream(resource);
//获取sqlSessionFactory
sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
}
@Test
public void doSelAll(){
//获取到session
SqlSession session = sqlSessionFactory.openSession();
//根据不同的方法进行不同的操作,从而获取到不同的结果 【参数为:命名空间+方法名称】
List<User> list = session.selectList("mytest.domain.User.listAll");
System.out.println("总记录个数:"+list.size());
}
2.实现简写的sql
在映射文件中
<sql id="cols">
id,name,age,address
</sql>
<select id="listAll" resultType="mytest.domain.User">
select <include refid="cols"></include> from user
</select>
3.实现动态的sql,适用于条件查询 和动态更新
例如 条件查询
在映射文件中
<select id="getForCondition" parameterType="mytest.domain.User" resultType="mytest.domain.User">
select <include refid="cols"></include> from user where 1=1
<if test="name !=null">
and name like "%"#{name}"%"
</if>
<if test="address !=null">
and address = #{address}
</if>
</select>
利用<if>进行判断,其中的where 1=1 也可以使用<where></where>标签进行替换
在测试函数中
@Test
public void doSelForCondition(){
SqlSession session = sqlSessionFactory.openSession();
//创建user,封装查询条件
User user = new User();
user.setName("赵");
user.setAddress("长沙");
List<User> list = session.selectList("mytest.domain.User.getForCondition", user);
System.out.println(list.size());
}
例如动态更新
在映射文件中利用<set>和<if>控制条件
<!-- 动态更新 -->
<update id="updateChoose" parameterType="mytest.domain.User">
update user
<set>
<if test="name!=null">
name=#{name},
</if>
<if test="age !=null">
age=#{age},
</if>
<if test="address !=null">
address =#{address},
</if>
</set>
where id =#{id}
</update>
在测试函数中
//动态更新
@Test
public void doUpdateChoose(){
SqlSession session = sqlSessionFactory.openSession();
User user =new User();
user.setName("赵小六");
user.setId("4");
int num = session.update("mytest.domain.User.updateChoose", user);
session.commit();
System.out.println("改动的行:"+num);
}