mybatis getMapper自动生成接口的实现类

it2023-10-24  68

我们在写MyBatis时,一般要写三个文件,Mybatis局部配置文件,Dao层接口,Dao层实现。但MyBatis有个getMapper方法在底层实现了反射技术自动生成接口的实现类,不需要写实现类了

框架优化: 原本的dao层改为mapper层,一般Dao层接口与Mybatis局部配置文件放在同一个包下,在mapper层下Mybatis局部配置与它所服务的dao层接口同名,只是后缀不同,分别为.xml和.java。注意接口中定义的方法名一定要与Mybatis局部配置文件的SQL语句的id同名,注意修改局部配置文件中的命名空间及实体类的路径。

测试代码

public class Test_1 { @Test public void testGetAllUser(){ SqlSession session = MybatisUtil.getSession(); //um 就是 Mapper接口 的实现类 UserMapper um= session.getMapper(UserMapper.class); List<User> userList = um.getAllUser(); for (User user : userList) { System.out.println(user); } } }

MybatisUtil.getSession代码:创建SqlSession

public class MybatisUtil { // 获取SqlSession public static SqlSession getSession() throws IOException { SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder(); InputStream inputStream = Resources.getResourceAsStream("mybatis.xml"); SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream); return sqlSessionFactory.openSession(); } public static void closeSession(SqlSession session){ if(session != null){ session.close(); } } }

在测试中使用Before和After注解 优化代码

@Before public void init(){ session=MybatisUtil.getSession(); um=session.getMapper(UserMapper.class); } @After public void destory(){ //关闭 session 会话 MybatisUtil.closeSession(session); }
最新回复(0)