Erlo

day01-项目介绍+SSM环境搭建

2023-03-05 00:00:11 发布   53 浏览  
页面报错/反馈
收藏 点赞

项目介绍+SSM环境搭建

1.项目功能/界面

  • SSM整合项目界面:使用Vue完成
  • 技术栈:前后端分离开发,前端框架Vue3+后端框架SSM
    1. 前端框架-Vue3
    2. 后端框架-SSM(SpringMVC+Spring+MyBatis)
    3. 数据库-MySQL
    4. 项目依赖管理-Maven
    5. 分页-pagehelper
    6. 逆向工程-MyBatis Generator
    7. 其他...

2.项目基础环境搭建

2.1创建项目

(1)创建maven项目(注意配置maven的仓库镜像,不然创建的时候会很慢),File--New--Project--Maven

image-20230304172237626 image-20230304172539061 image-20230304172819654 image-20230304173104025

(2)手动创建java和test相关目录

image-20230304173352899

(3)pom.xml文件中引入项目基本的jar包


  
    UTF-8
    1.8
    1.8
  

  
    
      junit
      junit
      4.11
      test
    

    
    
      org.springframework
      spring-webmvc
      5.3.8
    

    
    
      org.springframework
      spring-jdbc
      5.3.8
    

    
    
      org.springframework
      spring-aspects
      5.3.8
    

    
    
      org.mybatis
      mybatis
      3.5.7
    

    
    
      com.alibaba
      druid
      1.2.6
    

    
    
      mysql
      mysql-connector-java
      5.1.49
    
  

(4)给项目配置Tomcat

image-20230304174635512 image-20230304174646954

(5)启动tomcat,测试成功

image-20230304174914717

2.2项目全局配置web.xml




    Archetype Created Web Application
    
    
        contextConfigLocation
        
        classpath:applictionContext.xml
    

    
    
        org.springframework.web.context.ContextLoaderListener
    

    
    
        springDispatcherServlet
        org.springframework.web.servlet.DispatcherServlet
        
        
        1
    
    
        springDispatcherServlet
        /
    

    
    
        characterEncodingFilter
        org.springframework.web.filter.CharacterEncodingFilter
        
            encoding
            utf-8
        
        
            
            forceRequestEncoding
            true
        
        
            
            forceResponseEncoding
            true
        
    
    
        characterEncodingFilter
        /*
    

    
    
        hiddenHttpMethodFilter
        org.springframework.web.filter.HiddenHttpMethodFilter
    
    
        hiddenHttpMethodFilter
        /*
    


如果web.xml的报红,选择只是高亮syntax即可,本身是没有问题的,只是DTD本身的约束

image-20230304184136178

2.3SpringMVC配置

WEB-INF 目录下创建SpringMVC的配置文件 springDispatcherServlet-servlet.xml

文件的命名要根据上面web.xml的配置




    
    
        
        
    

    
    
        
        
        
        
    

    
    
    
    
    

2.4配置Spring和MyBatis,并完成整合

(1)在resource目录下创建jdbc.properties,配置连接mysql的信息

# The key value is arbitrary
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/furn_ssm?useSSL=true&useUnicode=true&characterEncoding=UTF-8
jdbc.user=root
jdbc.pwd=123456

(2)在pom.xml文件引入mybatis整合spring的适配包



  org.mybatis
  mybatis-spring
  2.0.6

(3)在resource目录下创建 Spring 的配置文件 applicationContext.xml

右键-->New-->XML Configuration-->Spring Config




    

    
    
        
        
    

    
    
    
    
    
        
        
        
        
        
    

    
    
        
        
        
        
        
        
    

    
    
        
        
    

    
    
        
    

    
    
    
        
            
            
            
            
        
    
    
    
        
        
        
        
    


(4)在resource目录下创建mapper目录,存放xxxMapper.xml文件

(5)在resource目录下创建mybatis的配置文件 mybatis-config.xml(原因和上面一致,因为在spring配置文件中指定了路径)




    

2.5创建表,使用逆向工程生成Bean、XxMapper和XxMapper.xml

(1)创建数据库和表

-- 创建数据库
CREATE DATABASE furn_ssm;
USE furn_ssm;
-- 创建家居表
CREATE TABLE furn(
`id` INT(11) PRIMARY KEY AUTO_INCREMENT, #id
`name` VARCHAR(64) NOT NULL, #家居名
`maker` VARCHAR(64) NOT NULL, #厂商
`price` DECIMAL(11,2) NOT NULL, #价格
`sales` INT(11) NOT NULL, #销量
`stock` INT(11) NOT NULL, #库存
`img_path` VARCHAR(256) NOT NULL #照片路径
);
-- 初始化家居数据
INSERT INTO furn(`id` , `name` , `maker` , `price` , `sales` , `stock` , `img_path`) 
VALUES(NULL , '北欧风格小桌子' , '熊猫家居' , 180 , 666 , 7 , 'assets/images/product-image/6.jpg');
INSERT INTO furn(`id` , `name` , `maker` , `price` , `sales` , `stock` , `img_path`) 
VALUES(NULL , '简约风格小椅子' , '熊猫家居' , 180 , 666 , 7 , 'assets/images/product-image/4.jpg');
INSERT INTO furn(`id` , `name` , `maker` , `price` , `sales` , `stock` , `img_path`) 
VALUES(NULL , '典雅风格小台灯' , '蚂蚁家居' , 180 , 666 , 7 , 'assets/images/product-image/14.jpg');
INSERT INTO furn(`id` , `name` , `maker` , `price` , `sales` , `stock` , `img_path`) 
VALUES(NULL , '温馨风格盆景架' , '蚂蚁家居' , 180 , 666 , 7 , 'assets/images/product-image/16.jpg');

SELECT * FROM furn;
image-20230304222051514

(2)使用MyBatis Generator 逆向生成bean mapper接口和mapper.xml

如果逆向工程生成的代码不能满足需求,再自己编写

2.1)修改Mybatis-config.xml,增加typeAliases别名配置,配置日志输出


    
    
        
    
    
        
        
    

2.2)在pom.xml引入MyBatis Generator包



  org.mybatis.generator
  mybatis-generator-core
  1.4.0

2.3)在项目目录下创建mbg.xml(mybatis generator),并参考文档进行配置

文档和模板:MyBatis Generator Core – MyBatis Generator XML Configuration File Reference




    

        
        
            
        

        
        
        

        
            
        

        
        
            
            
        

        
        
            
        

        
        
            
        

        
        

2.4)在test目录下创建一个MBGTest.java,该文件可以生成相关bean、mapper接口和mapper.xml

文件模板:MyBatis Generator Core – Running MyBatis Generator With Java

package com.li.furn.test;

import org.junit.Test;
import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.internal.DefaultShellCallback;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

/**
 * @author 李
 * @version 1.0
 */
public class MBGTest {
    @Test
    public void generator() throws Exception {
        List warnings = new ArrayList();
        boolean overwrite = true;
        //这里根据自己的情况指定配置的 mbg.xml文件
        //如果下面这样访问,需要将文件放在项目目录下
        File configFile = new File("mbg.xml");
        ConfigurationParser cp = new ConfigurationParser(warnings);
        Configuration config = cp.parseConfiguration(configFile);
        DefaultShellCallback callback = new DefaultShellCallback(overwrite);
        MyBatisGenerator myBatisGenerator = 
            new MyBatisGenerator(config, callback, warnings);
        myBatisGenerator.generate(null);
    }
}

运行上述方法后,可以看到成功生成了指定的文件:这样我们就可以直接使用逆向工程成功的方法操作数据库,而不必在接口和映射文件来回编写代码。

image-20230304230157966

(3)使用Junit测试Spring和MyBatis是否整合成功,能否通过MyBatis添加furn到数据库

3.1)修改bean:Furn.java,分别添加全参和无参构造器(略)

3.2)在test目录下增加测试文件,测试逆向工程生成的方法是否可用。

@Test
public void insertSelective() {
    //初始化spring容器
    ApplicationContext ioc =
            new ClassPathXmlApplicationContext("applicationContext.xml");
    //获取到 FurnMapper的代理对象(类型=class com.sun.proxy.$Proxy17)
    FurnMapper furnMapper = ioc.getBean(FurnMapper.class);
    //添加数据
    Furn furn = new Furn(null, "小电灯", "一等家居",
            new BigDecimal(66), 123, 45,
            "/assets/images/product-image/1.jpg");
    int affected = furnMapper.insertSelective(furn);
    System.out.println("操作影响行数=" + affected + ",操作成功!");
}

测试成功:

image-20230304234527249

2.6注意事项和细节说明

关于逆向生成的方法中,insertSelective() 和 insert() 方法的区别:

  1. insertSelective-选择性保存数据

比如User中有三个字段:id,name,age,但是在插入数据时只设置了name字段:

User u = new User();
u.setName("张三")
insertSelective(u);

它在底层发出的sql语句为:insert into db_user (id,name) value (null,"张三");,也就是说生成的sql的字段是有选择性的,会根据你设置的值来生成(ps:这里的id是自增长的)

  1. insert 则是无论设置多少个字段,统一都要添加一遍,即使是一个。如:
User u = new User();
u.setName("张三")
insert(u);

底层生成的sql语句为:insert into db_user (id,name,age) value (null,'张三',null,null)

因此在使用insert方法时要注意,如果表的字段不允许为null,调用方法时又没有设置值,就会出错。通常情况下推荐使用 insertSelective() 方法。

登录查看全部

参与评论

评论留言

还没有评论留言,赶紧来抢楼吧~~

手机查看

返回顶部

给这篇文章打个标签吧~

棒极了 糟糕透顶 好文章 PHP JAVA JS 小程序 Python SEO MySql 确认