mapper接口遵循的开发约定
1、mapper.xml中namespace属性等于mapper接口的地址
2、mapper接口中的方法名和mapper.xml中statement的id一致
3、mapper接口中的方法参数类型和mapper.xml中的statement的parameterType类型一致
4、mapper接口中的方法返回类型和mapper.xml中的statement的resultType类型一致
sqlMapConfig.xml中加载配置采用包扫描的方式,定义别名也采用包扫描的方式
<typeAliases> <package name="entity" /> </typeAliases> <mappers> <package name="mapper"/> </mappers>
定义mapper接口,接口的参数和返回值需要和mapper.xml文件中的parameterType、resutlType一致
public interface IUserMapper { public User findUserById(User entity); public List<User> findAll(); }
创建配置文件,namespace的名称和IUserMapper接口的全路径名一致
<mapper namespace="mapper.IUserMapper"> <select id="findAll" resultType="entity.User"> select * from user </select> <select id="findUserById" parameterType="entity.User" resultType="entity.User"> select * from user where id=#{id} </select> </mapper>
测试类
public class TestMapperDAO { public static final String RESOURCE = "sqlMapConfig.xml"; // 配置文件 SqlSessionFactory sqlSessionFactory;// Session工厂 @Before public void initFactory() throws IOException { InputStream in = Resources.getResourceAsStream(RESOURCE);// 配置文件的输入流 sqlSessionFactory = new SqlSessionFactoryBuilder().build(in); // 获得sqlSessionFactory } @Test public void testFindAll() { SqlSession session = sqlSessionFactory.openSession(); IUserMapper mapper = session.getMapper(IUserMapper.class); User u = new User(); u.setId("1"); User user = mapper.findUserById(u); System.out.println(user); List<User> users = mapper.findAll(); System.out.println(users); } }