今天來簡單學習一下如何創建一個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-train\src\main\resources文件夾下面配置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上面吧,大家也可以看看代碼,我放上去的是整合工具后的源碼,估計下一篇博客寫完就放上去了。地址在下一篇博客。