创建一个简单的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上面吧,大家也可以看看代码,我放上去的是整合工具后的源码,估计下一篇博客写完就放上去了。地址在下一篇博客。

原文地址:https://www.cnblogs.com/yanyu01/p/9329519.html