Spring整合其他技术

1 Spring整合mybatis

1.1 思路分析

问题导入

mybatis进行数据层操作的核心对象是谁?

1.1.1 MyBatis程序核心对象分析

1.1.2 整合MyBatis
  • 使用SqlSessionFactoryBean封装SqlSessionFactory需要的环境信息

  • 使用MapperScannerConfigurer加载Dao接口,创建代理对象保存到IOC容器中

1.2 代码实现

问题导入

问题1:Spring整合mybatis的依赖叫什么?

问题2:Spring整合mybatis需要管理配置哪两个Bean,这两个Bean作用分别是什么?

【前置工作】
  1. 在pom.xml中添加spring-context、druid、mybatis、mysql-connector-java等基础依赖。
  2. 准备service和dao层基础代码
//接口
public interface AccountService {void save(Account account);void delete(Integer id);void update(Account account);List<Account> findAll();Account findById(Integer id);}//实现类
@Service
public class AccountServiceImpl implements AccountService {@Autowiredprivate AccountDao accountDao;public void save(Account account) {accountDao.save(account);}public void update(Account account){accountDao.update(account);}public void delete(Integer id) {accountDao.delete(id);}public Account findById(Integer id) {return accountDao.findById(id);}public List<Account> findAll() {return accountDao.findAll();}
}//数据库层 接口
public interface AccountDao {@Insert("insert into tbl_account(name,money)values(#{name},#{money})")void save(Account account);@Delete("delete from tbl_account where id = #{id} ")void delete(Integer id);@Update("update tbl_account set name = #{name} , money = #{money} where id = #{id} ")void update(Account account);@Select("select * from tbl_account")List<Account> findAll();@Select("select * from tbl_account where id = #{id} ")Account findById(Integer id);
}
【第一步】导入Spring整合Mybatis依赖
<dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>5.2.10.RELEASE</version>
</dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>1.3.0</version>
</dependency>
【第二步】创建JdbcConfig配置DataSource数据源
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/spring_db?useSSL=false
jdbc.username=root
jdbc.password=root
public class JdbcConfig {@Value("${jdbc.driver}")private String driver;@Value("${jdbc.url}")private String url;@Value("${jdbc.username}")private String userName;@Value("${jdbc.password}")private String password;@Beanpublic DataSource dataSource(){DruidDataSource ds = new DruidDataSource();ds.setDriverClassName(driver);ds.setUrl(url);ds.setUsername(userName);ds.setPassword(password);return ds;}
}
【第三步】创建MybatisConfig整合mybatis
public class MybatisConfig {//定义bean,SqlSessionFactoryBean,用于产生SqlSessionFactory对象@Beanpublic SqlSessionFactoryBean sqlSessionFactory(DataSource dataSource){SqlSessionFactoryBean ssfb = new SqlSessionFactoryBean();ssfb.setTypeAliasesPackage("com.itheima.domain");ssfb.setDataSource(dataSource);return ssfb;}//定义bean,返回MapperScannerConfigurer对象@Beanpublic MapperScannerConfigurer mapperScannerConfigurer(){MapperScannerConfigurer msc = new MapperScannerConfigurer();msc.setBasePackage("com.lfs.dao");return msc;}
}
【第四步】创建SpringConfig主配置类进行包扫描和加载其他配置类
@Configuration
@ComponentScan("com.itheima")
//@PropertySource:加载类路径jdbc.properties文件
@PropertySource("classpath:jdbc.properties")
@Import({JdbcConfig.class,MybatisConfig.class})
public class SpringConfig {}
【第五步】定义测试类进行测试
public class App {public static void main(String[] args) {ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfig.class);AccountService accountService = ctx.getBean(AccountService.class);Account ac = accountService.findById(1);System.out.println(ac);}
}

2 Spring整合Junit单元测试【重点】

问题导入

Spring整合Junit的两个注解作用分别是什么?

【第一步】导入整合的依赖坐标spring-test

<!--junit-->
<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version>
</dependency>
<!--spring整合junit-->
<dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>5.1.9.RELEASE</version>
</dependency>

【第二步】使用Spring整合Junit专用的类加载器

【第三步】加载配置文件或者配置类

//【第二步】使用Spring整合Junit专用的类加载器
@RunWith(SpringJUnit4ClassRunner.class)
//【第三步】加载配置文件或者配置类
@ContextConfiguration(classes = {SpringConfiguration.class}) //加载配置类
//@ContextConfiguration(locations={"classpath:applicationContext.xml"})//加载配置文件
public class AccountServiceTest {//支持自动装配注入bean@Autowiredprivate AccountService accountService;@Testpublic void testFindById(){System.out.println(accountService.findById(1));}@Testpublic void testFindAll(){System.out.println(accountService.findAll());}
}

注意:junit的依赖至少要是4.12版本,可以是4.13等版本,否则出现如下异常:

Spring整合其他技术相关推荐

  1. ssh项目实战----Spring计时器任务 Spring整合JavaMail(邮件发送)

    一.常用数据频度维护 对于系统使用度较高的数据,客户在查看时希望这些数据最好先出现,此时需要为其添加排序规则.在进行排序时,使用次数成为排序的依据.因此需要设置一个字段用来描述某种数据的使用次数,也就 ...

  2. 【struts2+hibernate+spring项目实战】Spring计时器任务 Spring整合JavaMail(邮件发送)(ssh)

    一.常用数据频度维护 对于系统使用度较高的数据,客户在查看时希望这些数据最好先出现,此时需要为其添加排序规则.在进行排序时,使用次数成为排序的依据.因此需要设置一个字段用来描述某种数据的使用次数,也就 ...

  3. RabbitMQ,RabbitMQ 的工作模式,Spring 整合 RabbitMQ,Springboot 整合RabbitMQ

    什么是RabbitMQ 1.1 MQ概述 MQ全称 Message Queue(消息队列),是在消息的传输过程中保存消息的容器.多用于分布式系统之间进行通信. ⚫ MQ,消息队列,存储消息的中间件 ⚫ ...

  4. 使用Freemarker来页面静态化,与Spring整合使用

    页面静态化介绍 页面静态化其实就是将原来的动态网页(例如通过ajax请求动态获取数据库中的数据并展示的网页)改为 通过静态化技术生成的静态网页,这样用户在访问网页时,服务器直接给用户响应静态html页 ...

  5. Spring整合SequoiaDB SQL

    2019独角兽企业重金招聘Python工程师标准>>> 1.背景 Spring在J2EE应用程序开发框架中占据重要的作用,它实现了轻量级的IoC(控制反转)和AOP(面向切面)容器框 ...

  6. java day58【 案例:使用 spring 的 IoC 的实现账户的 CRUD 、 基于注解的 IOC 配置 、 Spring 整合 Junit[掌握] 】...

    第1章 案例:使用 spring 的 IoC 的实现账户的 CRUD 1.1 需求和技术要求 1.1.1 需求 1.1.2 技术要求 1.2 环境搭建 1.2.1 拷贝 jar 包 1.2.2 创建数 ...

  7. 2.SSM之Spring整合、AOP及Spring事务

    1.Spring整合 1.1 Mybatis 步骤一:数据库表准备 Mybatis是来操作数据库表,所以先创建一个数据库及表 CREATE DATABASE spring_db CHARACTER S ...

  8. springboot搭建项目环境以及整合其他技术

    文章目录 一.首先介绍4款插件:lombok和JBLSpringBootAppGen.mybatisX.easyCode 1.1 lombok 1.2 JBLSpringBootAppGen 1.3 ...

  9. spring 整合c3p0连接池

    个人博客:https://suveng.github.io/blog/​​​​​​​ Spring 整合C3P0连接池 注意:环境 jdk1.8 ,idea 2018,maven,spring环境 代 ...

最新文章

  1. 润乾集算报表优化应用结构之混合数据源
  2. python读取redis存储数据的存储时间_Python读写Redis数据库操作示例
  3. linux环境禁用apache目录浏览功能
  4. 我历时3年才写了10余篇源码文章,但收获了100w+阅读
  5. Xcode 8 GM 编译缺失 /Users/usr/lib/libresolv.9.dylib
  6. 牛客小白月赛 27部分题解
  7. java类中获取全局变量_java 通过反射获取类的全局变量、方法、构造方法
  8. Andorid audio设备名和音频基本概念
  9. java keytool 工具
  10. 人口各省预测模型matlab_基于MATLAB的人口预测模型
  11. 新路由3详细刷机教程
  12. java首字母变大写_Java 首字母转大写
  13. PDF文件实现在线盖章
  14. Amazon S3对象储存(以图片为例)
  15. Android修行手册 - TextureView和SurfaceView的属性方法以及示例
  16. (JAVA) 相邻数对
  17. 倾斜摄影测量(无人机影像)的三维建模和DSM,DOM的生成(挖坑)
  18. 转贴:求真功诚访大成名家--程立华 (2006-09-22 16:08:11)
  19. 普通话测试第四题评分标准_普通话测试第四题评分细则
  20. 网络原理 | 网络设备及相关技术(集线器、交换机、主机、路由器)、冲突域与广播域

热门文章

  1. 中达优控触摸屏编程视频教程_YKBuilder中文版(中达优控触摸屏编程系统)V5.0.300 正式版...
  2. 2022年西式面点师(初级)培训试题及模拟考试
  3. Git的管理、撤销、删除以及创建远程仓库
  4. Error: Request failed with status code 403
  5. nec容错服务器安装系统,NEC的容错服务器简介
  6. 【愚公系列】2023年05月 攻防世界-Web(lottery)
  7. RobotFramework-SeleniumLibrary库缺少open brower、input等关键字
  8. Manjaro 20 KDE 配置心得
  9. baocms伪静态_PHP源码:BAOCMS v5.0白金版 本地O2O生活电商门户系统+微信+同步wap手机版宝...
  10. 7个优秀「开放式」前端面试题分享!附答案