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