• 创建一个简单的SSM框架(1)


      今天来简单学习一下如何创建一个SSM框架

      要用到的工具有Eclipse、Maven、JDK、MySQL、Spring Boot。这些工具的配置网上的教程很多,这里不再累述。提几个要注意的点,Eclipse中Maven的配置要注意,MySQL的安装要注意字节码的设置,Spring Boot的环境变量的配置,Maven环境变量的配置一定要在JDK配置的后面,就是MVN_HOME一定要在JAVA_HOME后面,要不然,重启电脑环境配置会出问题。Maven的工厂配置。

      上面的工具说完了,下面就开始说一说具体的实现。

      首先在cmd中打开workspace(可以是任意文件夹),输入命令:spring init -g=com.psq -a=ssmtrain -d=web,mysql,mybatis ssmtrain 其中-g代表的是groupId,-a代表的是artifactI,-d代表的是项目依赖。其中还可以添加-p代表的打包方式,这里我没有添加。

      接下来,进入到项目根目录中,就是在ssm-train文件夹下,执行命令:mvn-install 会出现下面错误

    这是正常的,因为没有配置mysql的连接配置文件。在ssm-trainsrcmain esources文件夹下面配置application.properties,打开配置如下代码

    spring.datasource.driverClassName=com.mysql.jdbc.Driver
    spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test
    spring.datasource.username=root
    spring.datasource.password=root
    

    配置成功后,再次执行mvn-install,会出现下面的界面,表示成功。

      这里可以在mvn-install前面修改配置文件,我这里只是为了演示错误,如果项目发生了错误且不知怎么修复,执行mvn-clean可以清除依赖,再执行以上步骤。

      项目创建完毕,使用Eclipse打开此项目,出现下面情况即为正确。

      下面开始一些简单的配置。首先配置包,项目中有很多的包,下面的只是简单列举,看自己的情况而定。mapper包:主要是执行SQL语句的xml文件,bean包:实体类对象,dao包:提供接口,mapper就是注入到这个接口中, service包:提供服务的主要类,业务逻辑在这里, web.controller包: 接口类,主要是wen网页的接口,config包:主要是一些配置文件。包创建完毕,项目如下所示。

     

      下面就开始编写,这里只是简单的编写增删改查,下面开始编写。

      先从下面往上讲,本次还是使用最基础的,没有用到一些工具,工具后面一个博客会使用。

      先创建实体类对象,就是在bean包中创建学生类,代码比较简单,我这里不再粘贴,要注意的是get和set方法,最好还要有序列化对象,方便对象在网络中传输。类的属性名也要和表中的字段名一样。比如:id字段在Stu类中的名字就是id,注意大小写。

      在创建mapper文件夹中的xml文件,主要是将要执行的SQL语句放到xml文件中,这里粘贴代码。

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE mapper
      PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
      "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="com.psq.ssmtrain.dao.Stu">
    	<!-- 查询所有的信息 -->
    	<select id="findAll" resultType="com.psq.ssmtrain.bean.Stu">
    		select * from stu
    	</select>
    </mapper>
    

       在创建dao包中的StuMapper.java,注意这个类是个接口,为什么是接口?因为框架学习的还是浅,这里大概是因为设计模式的原因。代码如下:

    package com.psq.ssmtrain.dao;
    
    import java.util.List;
    
    import com.psq.ssmtrain.bean.Stu;
    
    public interface StuMapper {
    	
    	//查询所有的信息,要注意这里的方法名要和StuMapper.xml文件中的select的id一样。
    	List<Stu> findAll();
    
    }
    

       service包中是业务逻辑层,主要是项目业务的逻辑。创建一个接口和一个类:IStuService接口,StuServiceImpl实现类。代码如下:

      IStuService接口代码:

    package com.psq.ssmtrain.service;
    
    import java.util.List;
    
    import com.psq.ssmtrain.bean.Stu;
    
    public interface IStuService {
    	
    	List<Stu> findall() throws Exception;
    }
    

       StuServiceImpl实现类代码:

    package com.psq.ssmtrain.service.impl;
    
    import java.util.List;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    import com.psq.ssmtrain.bean.Stu;
    import com.psq.ssmtrain.dao.StuMapper;
    import com.psq.ssmtrain.service.IStuService;
    
    @Service
    public class StuServiceImpl implements IStuService {
    
    	@Autowired
    	private StuMapper stuMapper;
    	
    	@Override
    	public List<Stu> findall() {
    		
    		return stuMapper.findAll();
    	}
    
    }
    

       接下来是配置contraller包中的接口,这个是网页调用的接口,不是java中的接口。代码如下:

    package com.psq.ssmtrain.web.controller;
    
    import java.util.List;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    import com.psq.ssmtrain.bean.Stu;
    import com.psq.ssmtrain.service.IStuService;
    
    @RestController
    @RequestMapping("/stu")
    public class StuContraller {
    	
    	@Autowired
    	private IStuService stuService;
    	@GetMapping("findall")
    	public List<Stu> findall() {
    		
    		List<Stu> list=null;
    		try{
    			list=stuService.findall();
    		}catch (Exception e) {
    			e.printStackTrace();
    		}
    		return list;
    	}
    }
    

       接下来就是一些配置问题了,为了让注入顺利进行,需要在springBoot的启动类上,加个注解:@MapperScan("持久层路径"),这样就会顺利注入了。在DemoApplication.java文件中加代码:

    package com.psq.ssmtrain;
    
    import org.mybatis.spring.annotation.MapperScan;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    @SpringBootApplication
    @MapperScan("com.psq.ssmtrain.dao")
    public class DemoApplication {
    
    	public static void main(String[] args) {
    		SpringApplication.run(DemoApplication.class, args);
    	}
    }
    

       另外还要在application.properties文件加上代码,配置映射文件(mapper文件夹下面的xml文件)。代码如下:

    mybatis.mapper-locations= classpath:/mapper/**/*.xml
    

       完成,直接打开浏览器,地址为http://localhost:8080/stu/findall  (这个是我的地址,如果照上面打的话一样,修改的话看一下Controller类)。

      以上就完成了基础的查询,结果如下:

      整个项目没有前端,所以数据的显示会以json的形式显示,下面谈谈遇到的问题,本来是想直接加上工具的,但是后来忘了一些知识点,所以这次没有加上工具(热部署,swagger-ui,mybatis generator),后面的博客会加上,中间还是遇到了问题,最开始时注入的时候出现错误,再后来发现是DemoApplication.java文件中没有添加注解(这个注解也可以用xml文档替代),添加后就可以正常运行了,还是不理解原理,学习框架一定要理解原理。中间遇到的一些小错误这里不再提了,都是小问题,我解决后都给忘了,也不再费脑子去想。

      同时,这里给自己提一个规范,编码的规范,多看看阿里编码规范手册,大家编程的时候一定要注意规范。

      项目放到github上面吧,大家也可以看看代码,我放上去的是整合工具后的源码,估计下一篇博客写完就放上去了。地址在下一篇博客。

  • 相关阅读:
    ACM-ICPC 2018 徐州赛区网络预赛 I. Characters with Hash
    hdu 5437
    poj 1502
    ACM-ICPC 2018 沈阳赛区网络预赛 K. Supreme Number
    ACM-ICPC 2018 沈阳赛区网络预赛 F. Fantastic Graph
    ACM-ICPC 2018 南京赛区网络预赛 B. The writing on the wall
    ACM-ICPC 2018 南京赛区网络预赛 J. Sum
    法里数列
    ACM-ICPC 2018 南京赛区网络预赛 L. Magical Girl Haze
    Hashtable 为什么不叫 HashTable?
  • 原文地址:https://www.cnblogs.com/yanyu01/p/9329519.html
Copyright © 2020-2023  润新知