🙊🙊作者主页:🔗求不脱发的博客
📔📔 精选专栏:🔗SSM直击大厂
📋📋 精彩摘要:学完了整个Spring+SpringMVC+Mybatis基础知识,最后将三者整合到一起共同发挥作用才是最重要的。其中SSM整合的实质,仅仅就是将Mybatis整合入Spring。因为SpringMVC原本就是Spring的一部分,不用专门整合。
💞💞觉得文章还不错的话欢迎大家点赞👍➕收藏⭐️➕评论💬支持博主🤞
📚目录
✨2.将SqlSessionFactory配置到Spring容器中
📝1️⃣原始整合方式
- create database ssm;
- create table account(
- id int primary key auto_increment,
- name varchar(100),
- money double(7,2)
- );
表数据:
| id | namo | money |
| 1 | tom | 5000 |
| 2 | lucy | 5000 |
基本项目结构:

相关依赖:
这里不再详细列出具体代码,其中主要包括以下相关依赖(简单列出artifactId)。
<!--spring相关--> <artifactId>spring-context</artifactId> <artifactId>aspectjweaver</artifactId> <artifactId>spring-jdbc</artifactId> <artifactId>spring-tx</artifactId> <artifactId>spring-test</artifactId> <artifactId>spring-webmvc</artifactId> <!--servlet和jsp--> <artifactId>servlet-api</artifactId> <artifactId>jsp-api</artifactId> <!--mybatis相关--> <artifactId>mybatis</artifactId> <artifactId>mybatis-spring</artifactId> <artifactId>mybatis-plus</artifactId> <artifactId>lombok</artifactId> <artifactId>mysql-connector-java</artifactId> <artifactId>c3p0</artifactId>
数据库表 account 对应实体类:
- public class Account {
- private Integer id;//id
- private String name;//姓名
- private Double money;//余额
- }
- public interface AccountMapper {
- public void save(Account account);
- public List<Account> findAll();
- }
- public interface AccountService {
- void save(Account account); //保存账户数据
- List<Account> findAll(); //查询账户数据
- }
- @Service("accountService")
- public class AccountServiceImpl implements AccountService {
- public void save(Account account) {
- SqlSession sqlSession = MyBatisUtils.openSession();
- AccountMapper accountMapper = sqlSession.getMapper(AccountMapper.class);
- accountMapper.save(account);
- sqlSession.commit();
- sqlSession.close();
- }
-
- public List<Account> findAll() {
- SqlSession sqlSession = MyBatisUtils.openSession();
- AccountMapper accountMapper = sqlSession.getMapper(AccountMapper.class);
- return accountMapper.findAll();
- }
- }
- @Controller
- public class AccountController {
- @Autowired
- private AccountService accountService;
-
- @RequestMapping("/save")
- @ResponseBody
- public String save(Account account) {
- accountService.save(account);
- return "save success";
- }
-
- @RequestMapping("/findAll")
- public ModelAndView findAll() {
- ModelAndView modelAndView = new ModelAndView();
- modelAndView.setViewName("accountList");
- modelAndView.addObject("accountList", accountService.findAll());
- return modelAndView;
- }
- }
📝2️⃣Spring整合MyBatis
对于下面部分代码:
SqlSession sqlSession = MyBatisUtils.openSession();
AccountMapper accountMapper = sqlSession.getMapper(AccountMapper.class);
accountMapper.save(account);
sqlSession.commit();
sqlSession.close();
可将Session工厂交给Spring容器管理,从容器中获得执行操作的Mapper实例。
将事务的控制交给Spring容器使用声明式事务控制。
在applicationContext.xml中配置Bean
- <!--加载propeties文件-->
- <context:property-placeholder location="classpath:jdbc.properties"></context:property-placeholder>
-
- <!--配置数据源信息-->
- <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
- <property name="driverClass" value="${jdbc.driver}"></property>
- <property name="jdbcUrl" value="${jdbc.url}"></property>
- <property name="user" value="${jdbc.username}"></property>
- <property name="password" value="${jdbc.password}"></property>
- </bean>
-
- <!--配置sessionFactory-->
- <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
- <property name="dataSource" ref="dataSource"></property>
- <!--加载mybatis核心文件-->
- <property name="configLocation" value="classpath:sqlMapConfig-spring.xml"></property>
- </bean>
在applicationContext.xml中配置
- <!--扫描mapper所在的包 为mapper创建实现类-->
- <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
- <property name="basePackage" value="com.ssm.mapper"></property>
- </bean>
在applicationContext.xml中配置
- <!--声明式事务控制-->
- <!--平台事务管理器-->
- <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
- <property name="dataSource" ref="dataSource"></property>
- </bean>
-
- <!--配置事务增强-->
- <tx:advice id="txAdvice">
- <tx:attributes>
- <tx:method name="*"/>
- </tx:attributes>
- </tx:advice>
-
- <!--事务的aop织入-->
- <aop:config>
- <aop:advisor advice-ref="txAdvice" pointcut="execution(* com.itheima.service.impl.*.*(..))"></aop:advisor>
- </aop:config>
- @Service("accountService")
- public class AccountServiceImpl implements AccountService {
- @Autowired
- private AccountMapper accountMapper;
-
- public void save(Account account) {
- accountMapper.save(account);
- }
-
- public List<Account> findAll() {
- return accountMapper.findAll();
- }
- }
📝【SSM直击大厂】完结散花