Spring整合Mybatis、Spring整合JUnit


在这里插入图片描述

🐌个人主页: 🐌 叶落闲庭
💨我的专栏:💨
c语言
数据结构
javaweb

石可破也,而不可夺坚;丹可磨也,而不可夺赤。


Spring整合

  • 一、Spring整合Mybatis
    • 1.1 整合Mybatis,原配置文件
    • 1.2整合后
    • 1.3相关文件:
      • 1.3.1jdbc配置文件
      • 1.3.2jdbc配置类及spring配置类
      • 1.3.3数据库操作类
      • 1.3.4测试类
      • 1.3.5运行结果
  • 二、Spring整合JUnit
    • 2.1使用Spring整合JUnit专用的类加载器
  • 总结

一、Spring整合Mybatis

1.1 整合Mybatis,原配置文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><properties resource="jdbc.properties"></properties><typeAliases><package name="com.practice.domain"/></typeAliases><environments default="development"><environment id="mysql"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="${jdbc.driver}"/><property name="url" value="${jdbc.url}"/><property name="username" value="${jdbc.username}"/><property name="password" value="${jdbc.password}"/></dataSource></environment></environments><mappers><mapper resource="com.practice.dao"/></mappers>
</configuration>

1.2整合后

package com.practice.config;import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.mapper.MapperScannerConfigurer;
import org.springframework.context.annotation.Bean;import javax.sql.DataSource;/*** @Author YJ* @Date 2023/7/31 10:10* Description:Mybatis配置*/
public class MybatisConfig {@Beanpublic SqlSessionFactoryBean sqlSessionFactory(DataSource dataSource) {SqlSessionFactoryBean ssfb = new SqlSessionFactoryBean();ssfb.setTypeAliasesPackage("com.practice.domain");ssfb.setDataSource(dataSource);return ssfb;}@Beanpublic MapperScannerConfigurer mapperScannerConfigurer() {MapperScannerConfigurer msc = new MapperScannerConfigurer();msc.setBasePackage("com.practice.dao");return msc;}
}

1.3相关文件:

1.3.1jdbc配置文件

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/mybatis?useSSL=false
jdbc.userName=root
jdbc.password=123456

1.3.2jdbc配置类及spring配置类

package com.practice.config;import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;import javax.sql.DataSource;/*** @Author YJ* @Date 2023/7/31 10:00* Description:Jdbc配置*/
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 dataSource = new DruidDataSource();dataSource.setDriverClassName(driver);dataSource.setUrl(url);dataSource.setUsername(userName);dataSource.setPassword(password);return dataSource;}
}
package com.practice.config;import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.context.annotation.PropertySource;/*** @Author YJ* @Date 2023/7/31 9:52* Description:*/
@Configuration
@ComponentScan("com.practice")
@PropertySource("jdbc.properties")
@Import({JdbcConfig.class,MybatisConfig.class})
public class SpringConfig {
}

1.3.3数据库操作类

public interface UserDao {void save(User user);@Insert("insert into tb_user(id,username,password,gender,addr) values(#{id},#{username},#{password},#{gender},#{addr})")void insert(User user);@Delete("delete from tb_user where id=#{id}")void delete(Integer id);@Update("update tb_user set username=#{username} where id=#{id}")void update(User user);@Select("select * from tb_user")List<User> selectAll();@Select("select * from tb_user where id=#{id}")User selectById(Integer id);
}
public interface UserService {void save(User user);void update(User user);void delete(Integer id);User selectById(Integer id);List<User> selectAll();
}
@Service
public class UserServiceImpl implements UserService {@Autowiredprivate UserDao userDao;public void save(User user) {userDao.save(user);}public void update(User user) {userDao.update(user);}public void delete(Integer id) {userDao.delete(id);}public User selectById(Integer id) {return userDao.selectById(id);}public List<User> selectAll() {return userDao.selectAll();}
}

1.3.4测试类

public class App2 {public static void main(String[] args) {ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfig.class);UserService bean = ctx.getBean(UserService.class);User user = bean.selectById(2);System.out.println(user);}
}

1.3.5运行结果


在这里插入图片描述


二、Spring整合JUnit

2.1使用Spring整合JUnit专用的类加载器

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = SpringConfig.class)
public class UserServiceTest {@Autowiredprivate UserService userService;@Testpublic void testSelectById() {System.out.println(userService.selectById(2));}@Testpublic void testSelectAll(){System.out.println(userService.selectAll());}
}

总结

关于Spring整合的相关步骤就介绍完了,欢迎各位点赞+关注!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/17962.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python设计模式

16种设计模式 1.简单工厂模式 内容:不直接向客户端暴露对象创建的实现细节,而是通过一个工厂来负责创建产品类的实例 角色: 工厂角色(Creator) 抽象产品角色(Product) 具体产品角色(Concrete Product) 优点: 1.隐藏了对象创建的实现细节 2.客户端不需要修改代码 缺点: 1.违…

记录一次通过iostat命令定位系统数据库CPU飙升的案例

一、背景 我们有个移动考勤的系统&#xff0c;运维监控系统显示&#xff0c;每到上下班时间&#xff0c;考勤数据库的CPU就飙升到100%&#xff0c;磁盘读写请求等待时间变长&#xff0c;最初无法确定是磁盘性能下降导致的CPU飙升&#xff0c;还是CPU飙升导致的磁盘性能下降&…

C# 外观模式

概述 外观模式&#xff08;Facade Pattern&#xff09;是一种结构型设计模式&#xff0c;它提供了一个统一的接口&#xff0c;用于访问子系统中的一组接口。外观模式隐藏了子系统的复杂性&#xff0c;使得客户端可以通过简单的接口与子系统进行交互。 外观模式定义了一个高层…

设计模式之观察者模式

定义&#xff1a;对象间的一种一对多的依赖关系&#xff0c;当一个对象的状态发货所能改变时&#xff0c;所有依赖它的对象都得到通知并被自动更新。 例子&#xff1a;报纸-邮局-用户 不用设计模式实现 被观察者 package com.tao.YanMoDesignPattern.observer.case3_Origin;…

计算语言模型计算每秒钟生成的token数量it/s

在 main() 函数的stream循环中&#xff0c;我们可以计算每秒钟生成的token数量&#xff0c;然后输出 it/s。在流式生成过程中&#xff0c;我们可以使用Python的time模块来计算速度。在测试时&#xff0c;生成速度会受到多个因素的影响&#xff0c;包括设备性能、模型大小、输入…

Docker快速入门笔记

Docker快速入门 前言 当今软件开发领域的一股热潮正在迅速兴起&#xff0c;它融合了便捷性、灵活性和可移植性&#xff0c;让开发者们欣喜若狂。它就是 Docker&#xff01;无论你是一个初学者&#xff0c;还是一位经验丰富的开发者&#xff0c;都不能错过这个引领技术浪潮的工…

基本不等式@平均值不等式@双勾函数不等式

文章目录 基本不等式基本齐次不等式一次形式&#x1f47a;基本不等式拓展拓展1拓展2 算数平均数和几何平均数不等式应用恒等变形 双勾函数不等式导数函数单调性&#x1f388;求解过程 极值点和极值函数单调性的简单证明&#x1f388; 基本不等式 基本齐次不等式 设 a , b ∈ …

windwos server 2008 更新环境,且vs_redis 安装失败

KB2919442 下载地址:https://www.microsoft.com/zh-cn/download/confirmation.aspx?id42153 KB2919355 下载地址:https://www.microsoft.com/zh-cn/download/confirmation.aspx?id42153 安装步骤:先安装442,后安装355

C语言打印水仙花数

“水仙花数”是指一个n位数&#xff0c;其各位数字的n次方之和确好等于该数本身&#xff0c;如:153&#xff1d;13&#xff0b;53&#xff0b;3^3&#xff0c;则153是一个“水仙花数”。 思路&#xff0c;先把每个数的每位算出来&#xff0c;然后再判断他们的3次方相加是否这个…

Ansible中常用的模块结合案例使用详解

Ansible中常用的模块结合案例使用详解 1. file模块2. copy模块3. yum_repository模块4. yum模块5. service模块6. systemd模块7. cron模块8. user模块9. group模块10. fetch模块11. get_url模块12. unarchive模块13. synchronize模块14. block模块15. parted模块16. firewalld模…

Linux ps命令:查看正在运行的进程

ps 命令是最常用的监控进程的命令&#xff0c;通过此命令可以查看系统中所有运行进程的详细信息。 ps 命令的基本格式如下&#xff1a; [rootlocalhost ~]# ps aux #查看系统中所有的进程&#xff0c;使用 BS 操作系统格式 [rootlocalhost ~]# ps -le #查看系统中所有的进程&am…

Vue中常用到的标签和指令

一、标签 在 Vue 中&#xff0c;并没有特定的标签是属于 Vue 的&#xff0c;因为 Vue 是一个用于构建用户界面的框架&#xff0c;可以与 HTML 标签一起使用。Vue 中可以使用的标签和元素基本上与 HTML 标准一致。 以下是一些常见的HTML标签&#xff0c;也可以在 Vue 中使用&a…

HTML+CSS+JavaScript:随机抽奖案例

一、需求 在时代少年团的七个人中&#xff0c;随机抽取一个人获得一等奖&#xff0c;再抽取一个获二等奖&#xff0c;再抽取一个获三等奖。注意同一个人不能同时获得多个奖项 如下图所示 二、代码素材 以下是缺失JS部分的代码&#xff0c;感兴趣的小伙伴可以先自己试着写一写…

oracle数据库dbLink的使用

Oracle的数据库链路&#xff08;dbLink&#xff09;是一种允许在两个不同的数据库实例之间进行通信和数据交换的功能。它可以让你在一个数据库中访问另一个数据库的对象和数据&#xff0c;就像它们属于同一个数据库一样。 创建一个link: CREATE public DATABASE LINK link_sco…

计算机网络用户接入层设计

用户接入层为用户提供访问核心网络的能力&#xff0c; 为用户提供共享/交换的带宽分配&#xff0c;按照业主要求,并考虑到端口密度的要求以及 设备的性能价格比,建议选用 Catalyst 3524XL和 Catalyst 3548XL 工作组交换 机&#xff0c;分别放置于配线间中。如同一配线间需两台以…

PyCharm安装使用2023年教程,PyCharm与现流行所有编辑器对比。

与PyCharm类似的功能和特性的集成开发环境&#xff08;IDE&#xff09;和代码编辑器有以下几种&#xff1a; Visual Studio Code&#xff08;VS Code&#xff09;&#xff1a;由Microsoft开发&#xff0c;VS Code是一个高度可定制和可扩展的代码编辑器。它支持多种编程语言&am…

深入了解Redis-实战篇-短信登录

深入了解Redis-实战篇-短信登录 一、故事背景二、知识点主要构成2.1、短信登录2.1.1、生成随机短信验证码引入maven依赖生成验证码 2.1.2、实现登录校验拦截器2.1.3、基于Redis实现短信登录2.1.3.1、发送验证码时存入Redis2.1.3.2、登录时校验验证码 2.1.4、解决状态登录刷新的…

【phaser微信抖音小游戏开发006】给文本增加点击事件

新建st006&#xff0c;为文本增加点击事件。 我们加了一个计数的count&#xff0c;点击一次增加一下&#xff0c;并显示到屏幕上去。 效果如下图&#xff1a; 其它的对象以此类推即可&#xff0c;先置inputEnable为true,然后再增加一个inputDown事件即可。

Halcon学习之一维测量实战之测量矩形(一)

一、采集图像 (1)测量充电器 测量充电器的引脚,然后每次旋转充电器,让测量矩形都跟着它转,这就是定位+测量, (2)测量钥匙 (3)测量瓶盖 我们后面还会涉及到拟合的问

无涯教程-jQuery - css( properties )方法函数

css(properties)方法将键/值对象设置为所有匹配元素的样式属性。 css( properties ) - 语法 selector.css( properties ) 上面的语法可以写成如下- selector.css( {key1:val1, key2:val2....keyN:valN}) 这是此方法使用的所有参数的描述- key:value - 设置为样式属…