package com.mapper;
import com.domain.User;
import java.io.IOException;
import java.util.List;
public interface UserMapper {
List<User> findAll() throws IOException;
}
<!--自定义别名-->
<typeAliases>
<typeAlias type="com.domain.User" alias="user"></typeAlias>
</typeAliases>
<?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.mapper.UserMapper">
<!--查询所有-->
<select id="findAll" resultType="user">
SELECT * FROM user
</select>
</mapper>
@Test
/**
* 使用接口代理的方式实现mybatis的dao层
*/
public void test7() throws Exception {
InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSession session = sessionFactory.openSession();
// 不需要手动实现Dao接口,由 mybatis 把 UserMapper.xml 生成接口的实现类
UserMapper userMapper = session.getMapper(UserMapper.class);
List<User> all = userMapper.findAll();
for (User user : all) {
System.out.println(user);
}
}
package com.mapper;
import com.domain.User;
import java.io.IOException;
import java.util.List;
public interface UserMapper {
List<User> findAll() throws IOException;
List<User> findByCondition(User user) throws IOException;
List<User> findByAges(List<Integer> list) throws IOException;
}
<!--动态查询单个用户-->
<select id="findByCondition" resultType="user" parameterType="user">
SELECT * FROM user
<where>
<if test="username!=null">
AND username = #{username}
</if>
<if test="password!=null">
AND password = #{password}
</if>
</where>
</select>
@Test
/**
* 动态sql查询
*/
public void test8() throws Exception {
InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSession session = sessionFactory.openSession();
UserMapper userMapper = session.getMapper(UserMapper.class);
User condition = new User();
condition.setUsername("xxx");
List<User> all = userMapper.findByCondition(condition);
for (User user : all) {
System.out.println(user);
}
}
<select id="findByAges" parameterType="list" resultType="user">
SELECT * FROM user
<where>
<foreach collection="list" open="age in(" close=")" item="age" separator=",">
#{age}
</foreach>
</where>
</select>
collection->集合类型;open->开始位置;close->结束位置;item->用于取集合中的元素的变量;separator->集合中元素分隔符
编写测试如下代码,查询年龄为20,22,23的用户
@Test
public void test10() throws Exception {
InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSession session = sessionFactory.openSession();
UserMapper userMapper = session.getMapper(UserMapper.class);
List<Integer> list = new ArrayList<Integer>();
list.add(20);
list.add(22);
list.add(23);
List<User> all = userMapper.findByAges(list);
for (User user : all) {
System.out.println(user);
}
}
<!--sql语句的抽取-->
<sql id="selectuser">SELECT * FROM user</sql>
<include refid="selectuser"></include>