- 起别名
- 配置数据源
mybatis-config.xml:
3. 创建Mapper接口:XXMapper.java
```java
public interface UserMapper {
public List selectUser();
}
```
4. 配置Mapper映射文件
Mapper.xml :
⚠️:必须和Mapper接口同名且在同一路径下;5. 在Mybatis配置文件中注册Mapper映射文件
6. 测试
@Test
public void test01() throws IOException {
String resource="mybatis-config.xml";
InputStream in = Resources.getResourceAsStream(resource);
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(in);
SqlSession sqlSession = sessionFactory.openSession(true);
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List users = mapper.selectUser();
for (User user : users) {
System.out.println(user);
}
}
7. Mapper映射文件读取异常问题
- Invalid bound statement (not found): com:.luo.mapper.UserMapper.selectUser
- 检查语法(映射文件与实体类是否对应、Mybatis配置文件中注册映射文件是否正确)
- 检查输出了Mapper映射文件的class
- 如果没有输出class文件,则在pom.xml中进行额外配置使用Maven静态资源过滤 :
src/main/java ** UserMapper mapper = sqlSession.getMapper(UserMapper.class); List users = mapper.selectUser(); for (User user : users) { System.out.println(user); } 而Spring在applicationContext.xml中使用org.mybatis.spring.SqlSessionFactoryBean创建SqlSessionFactory,并在其中绑定mybatis-config.xml核心配置文件,以及注册Mapper.xml,使用org.mybatis.spring.SqlSessionTemplate创建SqlSession:
创建Mapper的实现类:
public class UserMapperImpl implements UserMapper{ SqlSessionTemplate sqlSession; public void setSqlSession(SqlSessionTemplate sqlSession) { this.sqlSession = sqlSession; } @Override public ListselectUser() { UserMapper mapper = sqlSession.getMapper(UserMapper.class); return mapper.selectUser(); } } 并在spring中托管,注入SqlSession:
最后在使用的时候,只需要从SpringIOC容器中获取Mapper实现类对象:
@Test public void test02() throws IOException { ApplicationContext context = new ClassPathXmlApplicationContext("spring-dao.xml"); Listusers = context.getBean("userMapper",UserMapper.class).selectUser(); for (User user : users) { System.out.println(user.toString()); } }
- 整合方式二:
因为一次使用最好创建一个私有的SqlSession,使用完立刻关闭,在SpringIOC容器托管,可以做到让Spring负责SqlSession的创建,但需要一个SqlSession就要一个,十分不方便;所以还可以在需要使用SqlSession时通过继承SqlSessionDaoSupport,就可以通过getSqlSession()直接获得一个可以使用的SqlSession: public class UserMapperImpl2 extends SqlSessionDaoSupport implements UserMapper{ @Override public List绝对不要忘记要在SpringIOC容器中托管,并注入SqlSessionFactory:selectUser() { UserMapper mapper = getSqlSession().getMapper(UserMapper.class); return mapper.selectUser(); } }
使用:@Test public void test03() throws IOException { ApplicationContext context = new ClassPathXmlApplicationContext("spring-dao.xml"); Listusers = context.getBean("userMapper2",UserMapper.class).selectUser(); for (User user : users) { System.out.println(user.toString()); } }
- pom.xml 中导入依赖:
mysql mysql-connector-java 8.0.28 org.mybatis mybatis 3.5.9 org.springframework spring-jdbc 5.3.17 org.aspectj aspectjweaver 1.9.9 org.mybatis mybatis-spring 2.0.7 org.projectlombok lombok 1.18.22 - 写pojo实体类:
@Data @AllArgsConstructor @NoArgsConstructor public class User { private int id; private String name; private int tid; } - 写Mapper接口:
public interface UserMapper { public ListselectUser(); } - 写Mapper.xml:
- 编写mybatis-config.xml,进行基础配置(其他交给spring配置文件进行)
- 编写spring-dao.xml(任意名):
配置数据源、SqlSessionFactory、绑定mybatis-config.xml、注册Mapper.xml - 编写applicationContext.xml整合spring-dao.xml等其他的xml
applicationContext.xml: - 编写接口实现类
public class UserMapperImpl extends SqlSessionDaoSupport implements UserMapper{ @Override public ListselectUser() { return getSqlSession().getMapper(UserMapper.class).selectUser(); } } - 在spring-dao.xml中托管MapperImpl,并注入SqlSessionFactory
- 在service中使用:
public class MyTest { @Test public void test01(){ ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); UserMapperImpl userMapperImpl = context.getBean("userMapperImpl", UserMapperImpl.class); Listusers = userMapperImpl.selectUser(); for (User user : users) { System.out.println(user); } } }
前置阅读1 —— Spring开发:https://blog.csdn.net/qq_38107282/article/details/123853828
前置阅读2 —— Spring事务:https://blog.csdn.net/qq_38107282/article/details/124569918
前置阅读3 —— Mybatis开发:https://blog.csdn.net/qq_38107282/article/details/124535569



