8 整合MyBatis
module:spring-10-mybatis
1、导入相关jar包
junit
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version></dependency>
mybatis
<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.2</version></dependency>
mybatis-spring 整合包 【重点】
<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>2.0.2</version></dependency>
mysql-connector-java
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.48</version> </dependency>
Spring 相关
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.2.0.RELEASE</version> </dependency> <!--Spring操作数据库的话,还需要一个spring-jdbc--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>5.1.9.RELEASE</version> </dependency>
aspectJ AOP 织入器
<dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1.9.4</version> </dependency>
配置Maven静态资源过滤问题!
<!--资源过滤--> <!--在build中配置resource,来防止我们资源导出失败的问题--> <build> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.properties</include> <include>**/*.
2、编写配置文件
3、代码实现
MyBatis-Spring 学习
官网 src="https://gitee.com/zzb9527/blog-image/raw/master/img/image-20201210152546891.png" alt="image-20201210152546891" loading="lazy">
什么是 MyBatis-Spring ?
MyBatis-Spring 会帮助你将 MyBatis 代码无缝地整合到 Spring 中。
知识基础
MyBatis-Spring 需要以下版本:
MyBatis-Spring | MyBatis | Spring Framework | Spring Batch | Java |
---|---|---|---|---|
2.0 | 3.5+ | 5.0+ | 4.0+ | Java 8+ |
1.3 | 3.4+ | 3.2.2+ | 2.1+ | Java 6+ |
如果使用 Maven 作为构建工具,仅需要在 pom.
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>2.0.5</version> </dependency>
要和 Spring 一起使用 MyBatis,需要在 Spring 应用上下文中定义至少两样东西:一个 SqlSessionFactory 和至少一个数据映射器类。
在 MyBatis-Spring 中,可使用SqlSessionFactoryBean来创建 SqlSessionFactory。要配置这个工厂 bean,只需要把下面代码放在 Spring 的
<bean id="sqlSessionFactory" > <property name="dataSource" ref="dataSource" /></bean>
注意:SqlSessionFactory需要一个 DataSource(数据源)。这可以是任意的 DataSource,只需要和配置其它 Spring 数据库连接一样配置它就可以了。
在基础的 MyBatis 用法中,是通过 SqlSessionFactoryBuilder 来创建 SqlSessionFactory 的。而在 MyBatis-Spring 中,则使用 SqlSessionFactoryBean 来创建。
在 MyBatis 中,你可以使用 SqlSessionFactory 来创建 SqlSession。一旦你获得一个 session 之后,你可以使用它来执行映射了的语句,提交或回滚连接,最后,当不再需要它的时候,你可以关闭 session。
一个常用的属性是 configLocation,它用来指定 MyBatis 的
需要注意的是,这个配置文件并不需要是一个完整的 MyBatis 配置。确切地说,任何环境配置(
SqlSessionTemplate 是 MyBatis-Spring 的核心。作为 SqlSession 的一个实现,这意味着可以使用它无缝代替你代码中已经在使用的 SqlSession。
模板可以参与到 Spring 的事务管理中,并且由于其是线程安全的,可以供多个映射器类使用,你应该总是用 SqlSessionTemplate 来替换 MyBatis 默认的 DefaultSqlSession 实现。在同一应用程序中的不同类之间混杂使用可能会引起数据一致性的问题。
可以使用 SqlSessionFactory 作为构造方法的参数来创建 SqlSessionTemplate 对象。
<bean id="sqlSession" > <constructor-arg index="0" ref="sqlSessionFactory"/> </bean>
现在,这个 bean 就可以直接注入到你的 DAO bean 中了。你需要在你的 bean 中添加一个 SqlSession 属性,就像下面这样:
public class UserDaoImpl implements UserDao { private SqlSession sqlSession; public void setSqlSession(SqlSession sqlSession) { this.sqlSession = sqlSession; } public User getUser(String userId) { return sqlSession.getMapper...; }}
按下面这样,注入 SqlSessionTemplate:
<bean id="userDao" > <property name="sqlSession" ref="sqlSession" /></bean>
整合实现一
1、Spring 配置文件 spring-dao.
<?
2、编写mybatis的配置文件,mybatis-config.
<?
在mybatis的配置文件中,仅保留一些配置(别名,设置等)
3、实体类
package com.zzb.pojo;public class User { private int id; private String name; private String pwd; public User() { } public User(int id, String name, String pwd) { this.id = id; this.name = name; this.pwd = pwd; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPwd() { return pwd; } public void setPwd(String pwd) { this.pwd = pwd; } @Override public String toString() { return "User{" + "id=" + id + ", name='" + name + '\'' + ", pwd='" + pwd + '\'' + '}'; }}
4、编写UserMapper接口及UserMapper.
package com.zzb.mapper;import com.zzb.pojo.User;import java.util.List;public interface UserMapper { List<User> getUser();}
<?
5、编写UserMapper接口的实现类,私有化sqlSessionTemplate
package com.zzb.mapper;import com.zzb.pojo.User;import org.mybatis.spring.SqlSessionTemplate;import java.util.List;public class UserMapperImpl implements UserMapper{ private SqlSessionTemplate sqlSession; public void setSqlSession(SqlSessionTemplate sqlSession) { this.sqlSession = sqlSession; } public List<User> getUser() { UserMapper mapper = sqlSession.getMapper(UserMapper.class); List<User> users = mapper.getUser(); return users; }}
6、编写Spring总的配置文件applicationContext.
<?
7、测试
@Test public void test2(){ ApplicationContext context = new ClassPath
测试结果:
User{id=1, name='BG', pwd='123456'}User{id=2, name='马保国', pwd='WuDe'}User{id=3, name='张三', pwd='526553'}User{id=4, name='王五', pwd='123444'}
整合方式二
mybatis-spring1.2.3版以上的才有这个。
官方文档截图:
1、创建 UserMapperImpl2.java
package com.zzb.mapper;import com.zzb.pojo.User;import org.mybatis.spring.support.SqlSessionDaoSupport;import java.util.List;public class UserMapperImpl2 extends SqlSessionDaoSupport implements UserMapper{ public List<User> getUser() { return getSqlSession().getMapper(UserMapper.class).getUser(); }}
2、在 applicationContext.
注意:依赖注入的参数为:sqlSessionFactory
<bean id="userMapperImpl2" > <property name="sqlSessionFactory" ref="sqlSessionFactory"/> </bean>
3、测试
@Test public void test2(){ ApplicationContext context = new ClassPath
测试结果:
User{id=1, name='BG', pwd='123456'}User{id=2, name='马保国', pwd='WuDe'}User{id=3, name='张三', pwd='526553'}User{id=4, name='王五', pwd='123444'}
总结:
至此,完成了mybatis与Spring的整合,整合过程中,可以完全丢弃掉mybatis的配置文件,除了上述方式可以实现整合外,还可以使用注解的方式实现。
原文转载:http://www.shaoqun.com/a/497504.html
acedota:https://www.ikjzd.com/w/2070
蜜芽:https://www.ikjzd.com/w/1320
转运四方:https://www.ikjzd.com/w/1342
8整合MyBatismodule:spring-10-mybatis1、导入相关jar包junit<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version></dependency>m
patpat:patpat
活动树:活动树
亚马逊如何打造高效引流标题?:亚马逊如何打造高效引流标题?
清远飞来寺在哪?:清远飞来寺在哪?
巴塞罗那有几个机场:巴塞罗那有几个机场
没有评论:
发表评论