SSM(Spring + SpringMVC + MyBatis)环境搭建

2023-05-16

 1.导入依赖

        <!--       Spring上下文容器 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.2.7.RELEASE</version>
        </dependency>
        <!--Spring整合MyBatis-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>2.0.7</version>
        </dependency>

        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.9</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-typehandlers-jsr310</artifactId>
            <version>1.0.2</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.23</version>
        </dependency>

        <!--        事务管理依赖-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>5.2.7.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>5.2.7.RELEASE</version>
        </dependency>
        <!--        连接池依赖-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.2.9</version>
        </dependency>


        <!-- junit 测试框架-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
        <!--       spring测试框架 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>5.2.7.RELEASE</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>javax.annotation</groupId>
            <artifactId>javax.annotation-api</artifactId>
            <version>1.2</version>
        </dependency>

        <!-- MVC-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.2.7.RELEASE</version>
        </dependency>
        <!--tomcat-->
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-core</artifactId>
            <version>9.0.36</version>
        </dependency>

2.搭建Spring 整合MyBatis环境

MyBatis配置类

@Configuration
@ComponentScan(basePackages = "com.project")
@EnableTransactionManagement
@MapperScan("com.project.dao")
public class MyBatisConfig {

    // 数据源
    @Bean
    public DataSource getDataSource(){
        DruidDataSource dataSource = new DruidDataSource();
        // 完成数据源设置和连接池设置
        dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
     // 如果url是来自xml配置文件,此时 要把-->&amp;换成 -->&
       dataSource.setUrl("jdbc:mysql://localhost:3306/ssmdemo?characterEncoding=utf-8&allowMultiQueries=true");
        dataSource.setUsername("root");
        dataSource.setPassword("root");
        dataSource.setMaxActive(50);
        dataSource.setMinIdle(20);
        dataSource.setMaxWait(1000);
        return dataSource;
    }

    // SqlSessionFactory工厂配置
    @Bean
    public FactoryBean getFactory(){
        SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
       factoryBean.setDataSource(this.getDataSource());
        factoryBean.setConfigLocation(new ClassPathResource("mybatis.cfg.xml"));
        return factoryBean;
    }

    // 事务管理器
    @Bean
    public TransactionManager getTransactionManager(){
        DataSourceTransactionManager trans =
                new DataSourceTransactionManager();
        trans.setDataSource(this.getDataSource());
        return trans;
    }
}

根据业务测试环境的搭建

  • 业务接口

  • void addStu(StudentBean stu);

    根据业务方法抽取出数据库操作,给出持久层方法,同时在资源目录下提供同包的映射文件

  • void addStu(StudentBean stu);

    根据业务接口给出实现类

  • @Service
    @Transactional
    public class StudentServiceImpl implements IStudentService {
        @Resource
        private IStudentDao studentDao;
    
        @Override
        public void addStu(StudentBean studentBean) {
            studentDao.addStu(studentBean);
        }
    }

    在test包中利用测试框架完成测试

  • @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration(classes = MyBatisConfig.class)
    public class TestStuService {
        @Resource
        private IStudentService service;
        @Test
        public void testAll(){
            service.addStu(new StudentBean("刘备",
                    LocalDate.parse("1000-01-01"),
                   "17294724564","男"));
        }
    }

    3.加入SpringMVC配置类

  • @Configuration
    @EnableWebMvc // 开启类型的自动转换
    @Import(MyBatisConfig.class)
    public class WebApplicationConfig implements WebMvcConfigurer {
        // 请求映射处理适配器
        @Autowired
        private RequestMappingHandlerAdapter adapter;
        // 设置响应信息的编码集
        @Override
        public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
            StringHttpMessageConverter stringHttpMessageConverter
                    = (StringHttpMessageConverter)converters.get(1);
            stringHttpMessageConverter.setDefaultCharset(Charset.forName("utf-8"));
        }
        // 提供静态资源的支持 请求的url以/html/开头,表示找类路径的/static/html/下的文件
        @Override
        public void addResourceHandlers(ResourceHandlerRegistry registry) {
            registry.addResourceHandler("/html/**")
                    .addResourceLocations("classpath:/static/html/");
        }
        // 注册类型转换器
        @PostConstruct
        public void addConversionConfig() {
            ConfigurableWebBindingInitializer initializer =
                    (ConfigurableWebBindingInitializer) adapter.getWebBindingInitializer();
            if (initializer.getConversionService() != null) {
                GenericConversionService converService = (GenericConversionService) initializer.getConversionService();
                // 添加自定义转换器
                converService.addConverter(new LocalDateTypeChange());
            }
        }
    }

    书写服务器和应用控制器测试SpringMVC的环境

  • Tomcat服务器

  • public class MainServer {
        public MainServer(){
            Tomcat tomcat = new Tomcat();
            tomcat.setPort(8080);
            tomcat.getConnector();
    
            Context context = tomcat.addContext("",null);
            DispatcherServlet dispatcherServlet = new DispatcherServlet(
                    this.createApplicationContext(context.getServletContext())
            );
            Wrapper servlet = Tomcat.addServlet(context,
                    "dispatcherServlet",
                    dispatcherServlet);
            servlet.setLoadOnStartup(1);
            servlet.addMapping("/*");
    
            try {
                tomcat.start();
            } catch (LifecycleException e) {
                e.printStackTrace();
            }
    
        }
    
        /**
         * 创建SpringMVC的应用上下文对象
         * @param servletContext servlet 上下文对象
         * @return SpringMVC的应用上下文对象
         */
        public WebApplicationContext createApplicationContext(ServletContext servletContext){
            AnnotationConfigWebApplicationContext ctx =
                    new AnnotationConfigWebApplicationContext();
            // 注入配置类
            ctx.register(WebApplicationConfig.class);
            ctx.setServletContext(servletContext);
    
            ctx.refresh();
            // 用于在非web应用中关闭IoC容器
            ctx.registerShutdownHook();
            return ctx;
        }
        public static void main(String[] args) {
            new MainServer();
        }
    }

    提供应用控制器Controller

  • @Controller // 表示该类为应用控制器 且为SpringBean组件
    public class TestController {
        @Resource
        private IStudentService service;
        // 书写该方法的请求路径
        @RequestMapping("test")
        // 把数据写入HttpOutputStream中---既是把数据原样展示
        @ResponseBody
        public String test() {
            return "hello world";
        }
    }

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SSM(Spring + SpringMVC + MyBatis)环境搭建 的相关文章

  • PS二寸证件照制作

    一 新建画布 文件 gt 新建 二寸证件照尺寸 xff1a 3 5 5 3 厘米 413 626 像素 分辨率为300 像素 英寸 一寸证件照尺寸 xff1a 2 5 3 5 厘米 295 413 像素 分辨率为300 像素 英寸 小二寸证
  • Eclipse安装教程(JDK安装+Eclipse+汉化)Windows系统

    文章目录 说明 xff1a 本教程截图是JDK13 43 eclipse2019 12的 xff0c 但是安装方法相同第一步 xff1a 下载并安装JDK1 下载JDK xff08 目前已更新到JDK14 xff0c 和JDK13安装方法相
  • arch linux 安装教程

    注意 本文章停更 xff0c 如果想看最新版本 xff0c 请移步Arch Linux安装教程 下一篇 xff1a archlinux系统配置 archlinux系统配置
  • archlinux 配置

    文章目录 上一篇 xff1a archlinux 系统安装下一篇 xff1a archlinux kde美化 上一篇 xff1a archlinux 系统安装 archlinux安装教程 此文章停止更新 xff0c 最新版请查看archli
  • 【Frobenius norm(弗罗贝尼乌斯-范数)(F-范数)】

    xff08 1 xff09 Frobenius 范数 xff08 F 范数 xff09 一种矩阵范数 xff0c 记为 xff1a 即矩阵中每项数的平方和的开方值 这个范数是针对矩阵而言的 xff0c 具体定义可以类比 向量的L2范数 可用
  • 谷歌pay 手续费_您可以使用Google Pay进行的所有操作

    谷歌pay 手续费 Google Pay has really grown over the last several months It stepped away from the Android specific branding an
  • RabbitMQ工作模式

    RabbitMQ工作模式 简述 xff1a RabbitMQ主要有五种工作模式 xff0c 分别是 xff1a 1 简单模式 xff08 Hello World xff09 2 工作队列模式 xff08 Work Queue xff09 3
  • AD布局时出现的自动推挤的使用

    AD布局时出现的自动推挤的使用 在使用AD进行器件布局发现拖动元件时会出现以下3中情况 xff1a 1 拖动器件时会直接挤走与之相近的器件 xff1b 2 拖动器件时碰到相邻方向有器件时无法越过对应阻碍其拖动的器件 xff1b 3 拖动器件
  • 多线程基础学习之线程安全和抢火车票问题

    前言 xff1a 在生活中 xff0c 每次出远门 xff0c 避免不了的就是要坐火车或者高铁 xff0c 那么抢票就是我们必须要经历的环节 xff0c 但你是否想过 xff0c 假如你和别人同时抢到一张票 xff0c 会发生什么 xff1
  • Git基础学习之Gitee的使用和设置SSH公钥

    前言 xff1a 今天给大家分享的学习内容是 xff1a Gitee的注册和使用 xff0c SSH公钥的设置 xff0c 以及如何搭建自己的远程仓库 学习前提 xff1a 安装和配置好本地Git xff0c 如果还没有安装好本地Git的小
  • Redis基础学习之NoSQL数据库四大分类

    前言 xff1a 在NoSQL数据库中 xff0c 主要有四大分类 xff0c 分别是KV键值对数据库 文档型数据库 列存储数据库和图形关系数据库 xff0c 那么它们各自的特点以及之间的区别是什么呢 xff1f 这就是今天我们所要学习的内
  • SpringBoot基础学习之整合SpringSercurity框架

    前言 xff1a 小伙伴们 xff0c 大家好 xff0c 我是狂奔 蜗牛rz xff0c 当然你们可以叫我蜗牛君 xff0c 我是一个学习Java半年多时间的小菜鸟 xff0c 同时还有一个伟大的梦想 xff0c 那就是有朝一日 xff0
  • SpringMVC基础学习之页面跳转方式的简单使用

    前言 xff1a 小伙伴们 xff0c 大家好 xff0c 我是狂奔 蜗牛rz xff0c 当然你们可以叫我蜗牛君 xff0c 我是一个学习Java半年多时间的小菜鸟 xff0c 同时还有一个伟大的梦想 xff0c 那就是有朝一日 xff0
  • SpringBoot+LayUI+MybatisPlus+Echarts图表 前后端分离 实现数据统计功能

    前言 xff1a 小伙伴们 xff0c 大家好 xff0c 我是狂奔 蜗牛rz xff0c 当然你们可以叫我蜗牛君 xff0c 我是一个学习Java快一年时间的小菜鸟 xff0c 同时还有一个伟大的梦想 xff0c 那就是有朝一日 xff0
  • SpringBoot+LayUI+MybatisPlus 前后端分离 实现系统公告通知

    前言 xff1a 小伙伴们 xff0c 大家好 xff0c 我是狂奔 蜗牛rz xff0c 当然你们可以叫我蜗牛君 xff0c 我是一个学习Java快一年时间的小菜鸟 xff0c 同时还有一个伟大的梦想 xff0c 那就是有朝一日 xff0
  • SpringBoot+LayUI+MybatisPlus 前后端分离 实现排名统计功能

    前言 xff1a 小伙伴们 xff0c 大家好 xff0c 我是狂奔 蜗牛rz xff0c 当然你们可以叫我蜗牛君 xff0c 我是一个学习Java快一年时间的小菜鸟 xff0c 同时还有一个伟大的梦想 xff0c 那就是有朝一日 xff0
  • iphone恢复模式_如何阻止iPhone的人像模式制作多个文件

    iphone恢复模式 The iPhone 7 Plus Portrait Mode is really awesome In the right circumstances it makes it possible to take por
  • SpringBoot+LayUI+MybatisPlus 前后端分离 实现数据表格下拉框功能

    前言 xff1a 小伙伴们 xff0c 大家好 xff0c 我是狂奔 蜗牛rz xff0c 当然你们可以叫我蜗牛君 xff0c 我是一个学习Java快一年时间的小菜鸟 xff0c 同时还有一个伟大的梦想 xff0c 那就是有朝一日 xff0
  • Linux网络配置

    目录 1 查看网络配置 1 1ifconfig命令 查看网络接口信息 1 2 hostname 查看主机名称 1 2 1查看主机名 1 2 2修改主机名称 1 3route 查看路由表条目 1 4 netstat 查看网络连接情况 1 5
  • KVM virt-manager 启动不了 cannot open display,和中文乱码

    首先启动不了 如下情况 xff0c 启动不了 先重启虚拟机 span class token punctuation span root 64 kvm1 span class token operator span span class t

随机推荐

  • python使用request+xpath爬取豆瓣电影数据

    python使用request 43 xpath爬取豆瓣电影 背景话不多说上代码 背景 由于毕设需要用到电影相关的数据 xff0c 在网上想查找一个可以爬电影的教程 xff0c 但是基本上所有的教程都是爬的豆瓣top250 xff0c 并没
  • IDEA mvn阿里云镜像设置 保姆级教程

    设置 打开 文件 设置 搜索mvn 修改用户设置文件 和 本地仓库 路径为自己喜欢的目录下 以下为我此处的文件 新项目设置 xff08 创建新项目默认设置 xff09 打开 文件 新项目设置 新项目的设置 把刚才的设置设置一遍 文件 地址
  • 解压码

    BN00001 22kke BN00002 88cde BN00003 00ike BN00004 76cdb BN00005 09dbm BN00006 0mndc BN00007 cd78d BN00008 bdmf8 BN00009
  • 保险项目业务流程

    1 整个项目分为四分模块 xff1a 信息采集模块 信息验证 审批 生成合同 xff08 开单 xff09 信息采集模块 xff1a 包括购买保险产品 xff0c 客户个人信息 1 纸质文档给客户填写 xff0c 在回来录入系统 2 客户直
  • IDEA使用maven自定义archetype

    标题自定义archetype 在pom文件中添加archetype plugin span class token generics span class token punctuation lt span plugin span clas
  • 自定义Perperties文件内容读取

    新建properties文件放在resources目录下 properties文件内容 url span class token operator 61 span jdbc span class token operator span my
  • 使用CSS中的Hover控制显示子元素或者兄弟元素

    lt DOCTYPE html gt lt html lang 61 34 en 34 gt lt head gt lt meta charset 61 34 UTF 8 34 gt lt meta name 61 34 viewport
  • iphone表情显示问号_如何在iPhone上搜索特定的表情符号

    iphone表情显示问号 Most of us use emoji on our iPhone but until recently finding the right one has been tricky Luckily startin
  • maven项目中的jdbc连接步骤

    在maven项目pom xml中到入驱动包 xff08 以下是驱动包代码 xff09 lt dependencies gt lt https mvnrepository com artifact mysql mysql connector
  • executeUpdate()与executeQuery()的使用

    增 删 改 用executeUpdate xff08 xff09 返回值为int型 xff0c 表示被影响的行数 例子 查用executeQuery 返回的是一个集合 next xff08 xff09 表示 指针先下一行 xff0c 还有f
  • Access denied for user ''@'localhost' (using password: YES)错误解决方法

    远程登录被拒绝 xff0c 要改一个表数据的属性让他可以远程登录 解决方法如下 xff0c 执行命令 xff1a mysql gt use mysql mysql gt select host user from user 查看结果是不是r
  • leetcode部分数据库+sqlzoo练习题

    175 组合两个表 SQL架构 表1 Person 43 43 43 列名 类型 43 43 43 PersonId int FirstName varchar LastName varchar 43 43 43 PersonId 是上表主
  • ubuntu下手动安装gnome插件

    ubuntu下手动安装gnome插件 span class token comment 下载环境 span sudo apt span class token operator span span class token keyword g
  • 类和对象的理解

    类和对象的关系 是java中两个重要的概念 xff0c 简单一句话将就是 xff1a 类是对象的模板 xff0c 对象是类的实例 比如 xff1a 设计车的图纸是类 xff0c 然后比亚迪 本田 奔驰这些车 xff08 对象 xff09 都
  • java设计模式的几种体现方式

    1 单例模型 有时候在我的设计中 xff0c 所有的类只共享一个实例 xff0c 那么这时候就需要设计一个单实例的类 思路是将这个类构造器私有化 xff0c 这样外部就无法直接创建对象 xff0c 然后提供公有的静态方法 xff0c 让外部
  • springIOC使用xml装配JavaBean对象

    在一个maven工程下 xff0c 在pom xml中导入spring依赖和相关的配置 lt xml version 61 34 1 0 34 encoding 61 34 UTF 8 34 gt lt project xmlns 61 3
  • spring整合MyBatis代码

    Spring 整合 MyBatis 就是把Spring和MyBatis应用到同一个项目中 xff1b 其中MyBatis提供数据库相关的操作 xff0c 完成对象数据和关系数据的转换 xff1b Spring完成项目的管理 xff0c 通过
  • Servlet基础知识

    web应用程序的组成 xff1a 网页 xff1a 浏览器需要显示的内容 Web浏览器 xff1a 1 向Web服务器发出请求 2 解析网页 xff0c 渲染显示给用户 Web服务器 xff1a 1 提供Web服务 2 存放Web应用程序
  • 兆位和兆字节之间有什么区别?

    majcot Shutterstock 马约科特 快门 Despite the fact that they re similar words with similar abbreviations megabits Mb and megab
  • SSM(Spring + SpringMVC + MyBatis)环境搭建

    1 导入依赖 lt Spring上下文容器 gt lt dependency gt lt groupId gt org springframework lt groupId gt lt artifactId gt spring contex