MyBatis的Dao编写(mapper代理方式实现)
Mapper代理的开发方式,程序员只需要编写mapper接口(相当于dao接口)即 可。Mybatis会自动的为mapper接口生成动态代理实现类。不过要实现mapper代理的开发方式,需要遵循一些开发规范。
- 开发规范
- mapper接口的全限定名要和mapper映射文件的namespace的值相同。
- mapper接口的方法名称要和mapper映射文件中的statement的id相同;
- mapper接口的方法参数只能有一个,且类型要和mapper映射文件中statement的parameterType的值保持一致。
- mapper接口的返回值类型要和mapper映射文件中statement的resultType值或resultMap中的type值保持一致;
编写步骤
-
定义一个接口Usermapper.java和定义mapper映射文件的UserMapper.xml,放在mapper包下
属性和类名、方法名、参数类型和返回值类型都要一一对应
-
将映射文件加到全局配置文件
<!--告诉mybatis去加载映射文件--> <mappers> <mapper resource="com/hf/mapper/UserMapper.xml"></mapper> </mappers>
-
测试
import org.junit.Test; import java.io.IOException; import java.io.InputStream; import java.util.Date; public class Demo03 { SqlSession session = null; @Before public void before() throws IOException { //a)读取配置文件 InputStream is = Resources.getResourceAsStream("SqlMapConfig.xml"); //b)通过SqlSessionFactoryBuilder创建SqlSessionFactory会话工厂。 SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is); //c)通过SqlSessionFactory创建SqlSession。 session = sessionFactory.openSession(); } @After public void after() { //e)关闭SqlSession。 session.close(); } @Test public void test1() { UserMapper mapper = session.getMapper(UserMapper.class); //根据id查找 User user = mapper.findUserById(1); System.out.println(user); //保存 User user1 = new User("xxx","x",new Date(),"xxx"); mapper.save(user1); session.commit(); } }