Spring整合MyBatis1 回忆Mybatis2 MyBatis-Spring学习3 整合实现一4 整合实现二
Spring整合MyBatis搭建一个MyBatis程序
- 导入相关的依赖
junit
junit junit4.12
mybatis
org.mybatis mybatis3.5.2
mysql-connector
mysql mysql-connector-java5.1.47
spring相关的
org.springframework spring-webmvc5.1.10.RELEASE org.springframework spring-jdbc5.1.10.RELEASE
aspectJ AOP 织入器
org.aspectj aspectjweaver1.9.4
mybatis-spring整合包 【重点】
org.mybatis mybatis-spring2.0.2
lombok
org.projectlombok lombok1.18.12
配置Maven静态资源过滤问题!
src/main/java ***.xml true src/main/resources ***.xml true
编写配置文件
代码实现
编写pojo实体类
@Data @AllArgsConstructor @NoArgsConstructor public class User { private int id; private String name; private String pwd; }
编写UserMapper接口
public interface UserMapper { public ListselectUser(); }
编写数据库连接配置
db.properties
driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/mybatis?useSSL=false&useUnicode=true&characterEncoding=UTF-8 username=root password=xxc113206
实现mybatis的配置文件
接口对应的Mapper映射文件
工具类
public class MyBatisUtils { private static SqlSessionFactory sqlSessionFactory; static { try { // 获取MyBatis第一步:获取sqlSessionFactory对象 String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); } catch (IOException e) { e.printStackTrace(); } } // 既然有了sqlSessionFactory,顾名思义,我们就可以从中获得SqlSession的实例了 // SqlSession 完全包含了面向数据库执行SQL命令所需的所有方法 public static SqlSession getSqlSession(){ return sqlSessionFactory.openSession(true); } }
测试类
public class MyTest { @Test public void test(){ SqlSession sqlSession = MyBatisUtils.getSqlSession(); UserMapper mapper = sqlSession.getMapper(UserMapper.class); List2 MyBatis-Spring学习users = mapper.selectUser(); for (User user : users) { System.out.println(user); } } }
官方文档:
http://mybatis.org/spring/zh/index.html
3 整合实现一- 引入Spring配置文件applicationContext.xml
- 配置数据源替换mybaits的数据源
配置完之后我们就可以不用mybatis-config.xml中配置的了。
- 配置SqlSessionFactory,关联MyBatis
说明:mapperLocations就是我们mybatis-config.xml中的映射器(mappers),说明我们之前在mybatis-config.xml中的配置现在可以配到applicationContext.xml了。甚至mybatis-config.xml不用也可以。我一般会将起别名和settings(设置)保留到mybatis-config.xml中。
- 注册sqlSessionTemplate,关联sqlSessionFactory;(sqlSessionTemplate就是我们mybatis中说的sqlSession)
构造器注入参考:https://blog.csdn.net/weixin_45842494/article/details/122772913
- 增加Dao接口的实现类;私有化sqlSessionTemplate
public class UserMapperImpl implements UserMapper { //sqlSession不用我们自己创建了,Spring来管理 private SqlSessionTemplate sqlSession; public void setSqlSession(SqlSessionTemplate sqlSession) { this.sqlSession = sqlSession; } public ListselectUser() { UserMapper mapper = sqlSession.getMapper(UserMapper.class); return mapper.selectUser(); } }
- 注册bean实现
- 测试
public class MyTest { @Test public void test1(){ ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); UserMapper mapper = (UserMapper) context.getBean("userMapper"); Listuser = mapper.selectUser(); System.out.println(user); } }
说明:最主要的就是将SqlSessionTemplate称为私有化属性,在 *** 作中没有感觉到mybatis的存在一样。
同样的,为了体现整合的效果,我们将applicationContext.xml提取出来,使用import标签,用一个总得配置文件进行整合。
这样一来,spring-dao将作为固定不用在改变,我们需要注入的时候只需要修改applicationContext.xml即可
此时我们的mybatis-config.xml的内容为:
4 整合实现二mybatis-config.xml被spring完美整合。
mybatis-spring1.2.3版以上的才有这个
官方文档截图:
dao继承Support类 , 直接利用 getSqlSession() 获得 , 然后直接注入SqlSessionFactory . 比起方式1 , 不需要管理SqlSessionTemplate , 而且对事务的支持更加友好 . 可跟踪源码查看。
测试
- 新建一个UserMapperImpl2.java
public class UserMapperImpl2 extends SqlSessionDaoSupport implements UserMapper{ @Override public ListselectUser() { return getSqlSession().getMapper(UserMapper.class).selectUser(); } }
继承了SqlSessionDaoSupport同时实现了UserMapper。因为已经有了sqlSession,所以sqlSessionTemplate都没有必要要了。
- 注入到Spring中
这里直接用了sqlSessionFactory,没必要sqlSessionTemplate了
- 测试
public class MyTest { @Test public void test1(){ ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); UserMapper mapper = (UserMapper) context.getBean("userMapper2"); Listusers = mapper.selectUser(); for (User user : users) { System.out.println(user); } } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)