使用mapper代理需要遵循一定的规范
1、在mapper.xml中namespace等于mapper接口全限定名
<mapper namespace="mapper.UserMapper">
2、mapper.xml中的statement id和mapper接口中的方法名一致
3、mapper.xml中的statement parameterType和mapper接口中的参数类型一致
4、mapper.xml中的statement resultType和mapper接口中的返回类型一致
<pre name="code" class="html"><?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="mapper.UserMapper">
<select id="findUserById" parameterType="int" resultType="model.User">
Select * from users where id = #{id}
</select>
</mapper>
<pre name="code" class="html">package mapper;
import model.User;
public interface UserMapper {
public User findUserById(Integer id) throws Exception;
}
sqlmapconfig配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD SQL Map Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 这个为没有与其他框架进行整合的配置方式,与其他框架整合后配置方式不同 -->
<environments default="development">
<environment id="development">
<!-- 使用JDBC事务管理 -->
<transactionManager type="JDBC"></transactionManager>
<!-- 数据库连接池 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/test?characterEncoding=gbk"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<mappers>
<!-- <mapper resource="mapper/User.xml"/> -->
<mapper resource="mapper/UserMapper.xml"/>
</mappers>
</configuration>
test类
@Test
public void findUserById() throws Exception{
//sqlMapConfig的位置和名称
String resource = "sqlMapConfig.xml";
//获取sqlMapConfig配置文件流
InputStream inputstream = Resources.getResourceAsStream(resource);
//获得SqlSessionFactory工厂
SqlSessionFactory factory =new SqlSessionFactoryBuilder().build(inputstream);
SqlSession session = factory.openSession();
UserMapper userMapper = session.getMapper(UserMapper.class);
User user = userMapper.findUserById(3);
System.out.println(user);
}