/mybatisv2/src/main/resources/mapper/InterfaceMapper.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">
<!--映射文件,写SQL,namespace唯一标识 -->
<mapper namespace="dao.UserMapperDao">
<!--按名字执行分页查询-->
<select id="findByPage" resultType="User">
select * from user where name like concat("%",#{name},"%")
limit #{startIndex},#{pageSize}
</select>
</mapper>
/mybatisv2/src/main/resources/sqlMapConfig.xml
<?xml version="1.0" encoding="UTF-8"?>
<!--xml约束信息 -->
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!--引入数据源的配置文件 resource指定文件的位置 -->
<properties resource="db.properties"></properties>
<settings>
<setting name="mapUnderscoreToCamelCase" value="true" />
</settings>
<!-- 设置别名 -->
<typeAliases>
<typeAlias type="pojo.User" alias="User" />
</typeAliases>
<!-- 配置开发环境 ,default用来设置默认的开发环境 -->
<environments default="test">
<!--测试环境 -->
<environment id="test">
<!--事务管理器:mybatis的事务交个jdbc处理 -->
<transactionManager type="jdbc"></transactionManager>
<!--连接池:配置数据源,连接池 -->
<dataSource type="pooled">
<!--数据库驱动的名字 -->
<property name="driver" value="${driver}" />
<!-- 数据库的url地址 -->
<property name="url" value="${url}" />
<!-- 数据库的用户名 -->
<property name="username" value="${username}" />
<!-- 数据库的密码 -->
<property name="password" value="${password}" />
</dataSource>
</environment>
</environments>
<!--引入映射文件 -->
<mappers>
<!--引入UserMapper文件 resource指定文件的位置 -->
<mapper resource="mapper/InterfaceMapper.xml" />
</mappers>
</configuration>
UserMapperDao
package dao;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import pojo.User;
/**
* 这个类用来完成用户表的业务
*
* @author Administrator
*
*/
public interface UserMapperDao {
public List<User> findByPage(@Param("name") String name,@Param("startIndex") int startIndex,@Param("pageSize") int pageSize);
}
对应测试类
public class InterfaceTest {
SqlSessionFactory ssf=null;
@Before
public void init(){
//获取会话工厂
try {
InputStream in = Resources.getResourceAsStream("sqlMapConfig.xml");
ssf = new SqlSessionFactoryBuilder().build(in);
} catch (IOException e) {
e.printStackTrace();
}
}
@Test
public void findByPage(){
//获取sqlsession,执行SQL
SqlSession session = ssf.openSession();
//利用接口方法
UserMapperDao dao = session.getMapper(UserMapperDao.class);
List<User> list = dao.findByPage("张三", 0, 3);
//处理结果
for (User user : list) {
System.out.println(user);
}
//释放资源
session.close();
}
}
如果这么写参数
public List<User> findByPage(String name,int startIndex,int pageSize);
会有如下绑定异常
当然你还可以这样写
<select id="findByPage" resultType="User">
select * from user where name like concat("%",#{0},"%")
limit #{1},#{2}
</select>
甚至可以这样写
<select id="findByPage" resultType="User">
select * from user where name like concat("%",#{param1},"%")
limit #{param2},#{param3}
</select>
但是上述两种方法可读性不好,推荐最上面的写法。
注意,如果用了if标签
<select id="findOne" parameterType="int" resultType="User">
select * from user
<where>
<if test="id!=0">id=#{id}</if>
</where>
</select>
也要用以下写法
public User findOne(@Param("id")int id);
@Test
public void findOne(){
// 2.创建sqlsession对象,执行sql
SqlSession session = ssf.openSession();
UserMapperDao dao = session.getMapper(UserMapperDao.class);
User user=dao.findOne(1);
System.out.println(user);
// 4.释放资源
session.close();
}