zoukankan      html  css  js  c++  java
  • [转]SSM(Spring+SpringMVC+Mybatis)框架搭建详细教程【附源代码Demo】

    一、新建项目

      运行IDEA,进入初始化界面,然后我们选择新建项目(进入主界面新建项目也是一样的)

      

      在Maven选项卡里面找到对应的java web选项,然后我们点下一步

      

      这一步填入组织等信息,这里比较随意,按照自己的需求进行填写,然后下一步

      

      这里我早已配置好本地Maven仓库,因此直接默认即可。如果没进行配置本地默认仓库的话,请网上查找对应的资料进行配置

      

      输入Project name,和需要保存的路径,然后finish

      

      去泡一杯咖啡吧,这里需要一小段时间哦~

      稍等片刻,idea已经为我们自动建好了一切。到这里,我们的第一步,新建项目阶段已经完成,欢庆一下,进入下一个阶段。

       

      新建好项目后,我们首先打开SSM_Demo,修改一下JDK版本。

      

      

      在settings里面对项目版本进行修改:

      

      原来是1_5,现在改为1_8,可能会存在spring等框架版本和jdk版本不兼容问题,因此,提前升级了版本。

    二、目录结构调整

    首先我们配置Maven的项目结构,选择Project Structure

      

      选择Modules标签页,然后新建并标识对应的项目结构

      最终的文件结构如下所示:

      

      

      - Java为主Java代码文件夹

        - Controllers 控制器文件文件夹

        - Dao (数据访问)层文件夹

        - Service(业务逻辑)层文件夹

        - Entity(实体)层文件夹

      - resources资源文件夹

        - mapper mybatis sql文件夹

      - webapp web页面文件夹

      - Test 测试文件夹

    三、Maven包的初始化

    Maven是采用配置文件的方式进行jar包的自动导入,因此,我们需要进行对配置文件的修改来进行jar包的导入。

      打开pom.xml文件

      

       添加我们将会用到的一系列jar包配置(这里将我的配置直接复制过来,作为参考)

    复制代码
      1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      2   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
      3   <modelVersion>4.0.0</modelVersion>
      4   <groupId>QX_JFrame</groupId>
      5   <artifactId>Demo</artifactId>
      6   <packaging>war</packaging>
      7   <version>1.0-SNAPSHOT</version>
      8   <name>Demo Maven Webapp</name>
      9   <url>http://maven.apache.org</url>
     10   <dependencies>
     11     <!--Unit Test - 单元测试-->
     12     <dependency>
     13       <groupId>junit</groupId>
     14       <artifactId>junit</artifactId>
     15       <version>4.12</version>
     17     </dependency>
     18     <!--Spring-->
     19     <dependency>
     20       <groupId>org.springframework</groupId>
     21       <artifactId>spring-core</artifactId>
     22       <version>4.3.5.RELEASE</version>
     23     </dependency>
     24     <dependency>
     25       <groupId>org.springframework</groupId>
     26       <artifactId>spring-aop</artifactId>
     27       <version>4.3.5.RELEASE</version>
     28     </dependency>
     29     <dependency>
     30       <groupId>org.springframework</groupId>
     31       <artifactId>spring-orm</artifactId>
     32       <version>4.3.5.RELEASE</version>
     33     </dependency>
     34     <!--Spring transaction-->
     35     <dependency>
     36       <groupId>org.springframework</groupId>
     37       <artifactId>spring-tx</artifactId>
     38       <version>4.3.5.RELEASE</version>
     39     </dependency>
     40     <dependency>
     41       <groupId>org.springframework</groupId>
     42       <artifactId>spring-test</artifactId>
     43       <version>4.3.5.RELEASE</version>
     44     </dependency>
     45     <dependency>
     46       <groupId>org.springframework</groupId>
     47       <artifactId>spring-mock</artifactId>
     48       <version>2.0.8</version>
     49     </dependency>
     50     <dependency>
     51       <groupId>org.springframework</groupId>
     52       <artifactId>spring-jdbc</artifactId>
     53       <version>4.3.5.RELEASE</version>
     54     </dependency>
     55     <dependency>
     56       <groupId>org.springframework</groupId>
     57       <artifactId>spring-context</artifactId>
     58       <version>4.3.5.RELEASE</version>
     59     </dependency>
     60     <dependency>
     61       <groupId>org.springframework</groupId>
     62       <artifactId>spring-context-support</artifactId>
     63       <version>4.3.5.RELEASE</version>
     64     </dependency>
     65     <dependency>
     66       <groupId>org.springframework</groupId>
     67       <artifactId>spring-expression</artifactId>
     68       <version>4.3.5.RELEASE</version>
     69     </dependency>
     70     <!--Spring Web + Spring MVC-->
     71     <dependency>
     72       <groupId>org.springframework</groupId>
     73       <artifactId>spring-web</artifactId>
     74       <version>4.3.1.RELEASE</version>
     75     </dependency>
     76     <dependency>
     77       <groupId>org.springframework</groupId>
     78       <artifactId>spring-webmvc</artifactId>
     79       <version>4.3.1.RELEASE</version>
     80     </dependency>
     81 
     82     <dependency>
     83       <groupId>com.github.pagehelper</groupId>
     84       <artifactId>pagehelper</artifactId>
     85       <version>3.7.3</version>
     86     </dependency>
     87     <dependency>
     88       <groupId>com.github.jsqlparser</groupId>
     89       <artifactId>jsqlparser</artifactId>
     90       <version>0.9.1</version>
     91     </dependency>
     92     <!--mysql jdbc-->
     93     <dependency>
     94       <groupId>mysql</groupId>
     95       <artifactId>mysql-connector-java</artifactId>
     96       <version>5.1.38</version>
     97     </dependency>
     98     <!--c3p0-->
     99     <dependency>
    100       <groupId>c3p0</groupId>
    101       <artifactId>c3p0</artifactId>
    102       <version>0.9.1.2</version>
    103     </dependency>
    104     <!--NoClassDefFoundError: javax/servlet/jsp/jstl/core/Config-->
    105     <!-- https://mvnrepository.com/artifact/jstl/jstl -->
    106     <dependency>
    107       <groupId>jstl</groupId>
    108       <artifactId>jstl</artifactId>
    109       <version>1.2</version>
    110     </dependency>
    111     <!--file upload jar package-->
    112     <!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload -->
    113     <dependency>
    114       <groupId>commons-fileupload</groupId>
    115       <artifactId>commons-fileupload</artifactId>
    116       <version>1.3.1</version>
    117     </dependency>
    118     <!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
    119     <dependency>
    120       <groupId>commons-io</groupId>
    121       <artifactId>commons-io</artifactId>
    122       <version>2.4</version>
    123     </dependency>
    124     <!--json-->
    125     <!-- https://mvnrepository.com/artifact/org.json/json -->
    126     <dependency>
    127       <groupId>org.json</groupId>
    128       <artifactId>json</artifactId>
    129       <version>20160212</version>
    130     </dependency>
    131     <!-- https://mvnrepository.com/artifact/net.sf.json-lib/json-lib -->
    132     <dependency>
    133       <groupId>net.sf.json-lib</groupId>
    134       <artifactId>json-lib</artifactId>
    135       <version>2.4</version>
    136     </dependency>
    137     <!-- https://mvnrepository.com/artifact/commons-lang/commons-lang -->
    138     <dependency>
    139       <groupId>commons-lang</groupId>
    140       <artifactId>commons-lang</artifactId>
    141       <version>2.6</version>
    142     </dependency>
    143     <!-- https://mvnrepository.com/artifact/commons-beanutils/commons-beanutils -->
    144     <dependency>
    145       <groupId>commons-beanutils</groupId>
    146       <artifactId>commons-beanutils</artifactId>
    147       <version>1.8.3</version>
    148     </dependency>
    149     <!-- https://mvnrepository.com/artifact/commons-collections/commons-collections -->
    150     <dependency>
    151       <groupId>commons-collections</groupId>
    152       <artifactId>commons-collections</artifactId>
    153       <version>3.2.1</version>
    154     </dependency>
    155     <!-- https://mvnrepository.com/artifact/commons-logging/commons-logging -->
    156     <dependency>
    157       <groupId>commons-logging</groupId>
    158       <artifactId>commons-logging</artifactId>
    159       <version>1.2</version>
    160     </dependency>
    161     <!-- https://mvnrepository.com/artifact/net.sf.ezmorph/ezmorph -->
    162     <dependency>
    163       <groupId>net.sf.ezmorph</groupId>
    164       <artifactId>ezmorph</artifactId>
    165       <version>1.0.6</version>
    166     </dependency>
    167     <!--json serialize and deserialization-->
    168     <!-- 引入fastjson依赖 -->
    169     <dependency>
    170       <groupId>com.alibaba</groupId>
    171       <artifactId>fastjson</artifactId>
    172       <version>1.2.12</version>
    173     </dependency>
    174     <!-- 引入gson依赖 -->
    175     <dependency>
    176       <groupId>com.google.code.gson</groupId>
    177       <artifactId>gson</artifactId>
    178       <version>2.6.2</version>
    179     </dependency>
    180     <!--Base64 加解密-->
    181     <!-- https://mvnrepository.com/artifact/net.iharder/base64 -->
    182     <dependency>
    183       <groupId>net.iharder</groupId>
    184       <artifactId>base64</artifactId>
    185       <version>2.3.8</version>
    186     </dependency>
    187     <!-- https://mvnrepository.com/artifact/commons-codec/commons-codec -->
    188     <dependency>
    189       <groupId>commons-codec</groupId>
    190       <artifactId>commons-codec</artifactId>
    191       <version>1.10</version>
    192     </dependency>
    193     <!--log4j-->
    194     <!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core -->
    195     <dependency>
    196       <groupId>org.apache.logging.log4j</groupId>
    197       <artifactId>log4j-core</artifactId>
    198       <version>2.6.2</version>
    199     </dependency>
    200     <dependency>
    201       <groupId>org.jetbrains</groupId>
    202       <artifactId>annotations-java5</artifactId>
    203       <version>RELEASE</version>
    204     </dependency>
    205     <!--mybatis-->
    206     <dependency>
    207       <groupId>org.mybatis</groupId>
    208       <artifactId>mybatis</artifactId>
    209       <version>3.3.0</version>
    210     </dependency>
    211     <dependency>
    212       <groupId>org.mybatis</groupId>
    213       <artifactId>mybatis-spring</artifactId>
    214       <version>1.2.3</version>
    215     </dependency>
    216   </dependencies>
    217   <build>
    218     <finalName>Demo</finalName>
    219   </build>
    220 </project>
    复制代码

      待配置好的jar包都自动下载并导入后,我们maven包的导入阶段就完成了,下面我们开始整合各个组件。

    四、Spring MVC的配置

       在resources资源文件夹下新建spring-servlet.xml文件,并在配置文件中声明spring mvc框架对控制器、页面、资源的访问

      

      在其中添加下面配置标签信息:

    复制代码
     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <beans xmlns="http://www.springframework.org/schema/beans"
     3        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     4        xmlns:context="http://www.springframework.org/schema/context"
     5        xmlns:mvc="http://www.springframework.org/schema/mvc"
     6        xsi:schemaLocation="http://www.springframework.org/schema/beans
     7 http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
     8 http://www.springframework.org/schema/context
     9 http://www.springframework.org/schema/context/spring-context-3.1.xsd
    10 http://www.springframework.org/schema/mvc
    11 http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd">
    12 
    13     <!-- 启动注解驱动的Spring MVC功能,注册请求url和注解POJO类方法的映射-->
    14     <mvc:annotation-driven >
    15 
    16     </mvc:annotation-driven>
    17 
    18     <!-- 启动包扫描功能,以便注册带有@Controllers、@service、@repository、@Component等注解的类成为spring的bean -->
    19     <context:component-scan base-package="Controllers" />
    20     <!-- 对模型视图名称的解析,在请求时模型视图名称添加前后缀 -->
    21     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    22         <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
    23         <property name="prefix" value="/"/>    <!-- 前缀 -->
    24         <property name="suffix" value=".jsp"/>    <!-- 后缀 -->
    25     </bean>
    26     <!-- 访问静态文件(jpg,js,css)的方法 -->
    27     <!--<mvc:resources location="/files/" mapping="/files/**" />-->
    28     <!--<mvc:resources location="/scripts/" mapping="/scripts/**" />-->
    29     <!--<mvc:resources location="/styles/" mapping="/styles/**" />-->
    30     <!--<mvc:resources location="/Views/" mapping="/Views/**" />-->
    31 </beans>
    复制代码

      

      这里的Controllers对应的是我们之前新建好的Controllers包文件夹。

      对web.xml进行配置,将我们刚才添加的spring-servlet.xml配置进去

      

      

      这里的classpath为resources资源目录

      这一步配置的web.xml内容如下:

    复制代码
     1 <!DOCTYPE web-app PUBLIC
     2         "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
     3         "http://java.sun.com/dtd/web-app_2_3.dtd" >
     4 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     5          xmlns="http://java.sun.com/xml/ns/javaee"
     6          xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
     7          version="3.0">
     8   <display-name>Archetype Created Web Application</display-name>
     9   <welcome-file-list>
    10     <welcome-file>/index.jsp</welcome-file>
    11   </welcome-file-list>
    12   <!-- Spring MVC配置 -->
    13   <servlet>
    14     <servlet-name>spring</servlet-name>
    15     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    16     <!--Spring-servlet.xml config-->
    17     <init-param>
    18       <param-name>contextConfigLocation</param-name>
    19       <param-value>classpath:spring-servlet.xml</param-value>
    20     </init-param>
    21     <!-- load-on-startup元素标记容器是否在启动的时候就加载这个servlet(实例化并调用其init()方法) -->
    22     <load-on-startup>1</load-on-startup>
    23   </servlet>
    24   <servlet-mapping>
    25     <servlet-name>spring</servlet-name>
    26     <url-pattern>/</url-pattern>
    27   </servlet-mapping>
    28 </web-app>
    复制代码

      我们新建一个控制器测试一下(在Controllers包新建java类,RequestTestController):

      

      接下来在RequestTestController里面写一个rest api接口:

      

      接口代码如下:

    复制代码
     1 package Controllers;
     2 
     3 import org.springframework.web.bind.annotation.GetMapping;
     4 import org.springframework.web.bind.annotation.RequestMapping;
     5 import org.springframework.web.bind.annotation.RestController;
     6 
     7 @RestController
     8 @RequestMapping("/api/RequestTest")
     9 public class RequestTestController {
    10 
    11     @GetMapping()
    12     public String TestString(){
    13         return "this is a test string. Time:2017-10-29 20:42:00";
    14     }
    15 }
    复制代码

      这样,我们便可以通过url地址来进行访问我们的接口数据

      

      在右上角的运行服务器配置按钮,打开服务器配置项

       

      这里如果左侧列表是空的话,我们就需要点击加号进行服务器的添加,选择Tomcat Server下的Local。然后点击刚刚添加的标签,在右侧输入Server Name,下面会自动提示设置编译方式,选一个编译方式,然后点击OK即可(这一步的前提是装好了Tomcat服务器,如果没有安装,则需要先安装Tomcat服务器)。

      然后我们点击右上角的运行,如果没有什么问题的话,我们的控制台界面会提示服务启动成功!(我这样下来是不会出问题的)

      

      等浏览器打开以后,我们输入我们配置的api地址:http://localhost:8080/api/RequestTest

      

      这样,spring mvc已经成功整合到了项目里面!

    五、Spring和Mybatis的配置

      稍歇片刻后,我们继续进行Mybatis和Spring组件的整合...

      先添加jdbc.properties(JDBC连接配置文件,当然这个文件里面的内容直接写到mybatis配置文件里面也是可以的)

      

      内容如下:

     jdbc.properties

      继续在resources文件夹里面添加mybatis配置文件 spring-mybatis.xml

      内容如下:

     spring-mybatis.xml

      添加spring支持(applicationContext.xml),并在spring支持里面将mybatis配置文件进行引入

      内容如下:

    复制代码
     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <beans
     3         xmlns="http://www.springframework.org/schema/beans"
     4         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     5         xmlns:context="http://www.springframework.org/schema/context"
     6         xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
     7 
     8     <context:annotation-config />
     9     <!-- 配置component所在的包,自动加载需要管理的Bean -->
    10     <context:component-scan base-package="Service,Dao" />
    11     <import resource="spring-mybatis.xml" />
    12 </beans>
    复制代码

      applicationContext.xml配置文件是对spring的配置,我们配置spring组件的扫描包围Service和Dao层目录,然后将spring-mybatis.xml配置文件导入.

      完成这三个后的文件目录是这样子的:

      

      target文件夹是刚才编译运行时候自动产生的,不要惊慌~~~

      完成这几步后,我们还需要将spring的配置加载到已有的框架中去,打开web.xml文件,进行添加spring配置

      在刚才的web-app标签内继续添加spring支持:

      

      此刻完整的web.xml文件内容如下:

     web.xml

      到此刻,我们的spring、mybatis已经整合完毕,接下来稍歇片刻,我们进行demo的完成。

    六、demo的构建

       打开数据库,我们新建一个数据库,并设计两张测试表,student和studentclass

      

      student表的设计如下:

      

    复制代码
    -- ----------------------------
    -- Table structure for `student`
    -- ----------------------------
    DROP TABLE IF EXISTS `student`;
    CREATE TABLE `student` (
      `Uid` binary(36) NOT NULL COMMENT 'Uid',
      `Name` varchar(20) NOT NULL,
      `Age` int(3) NOT NULL,
      `ClassId` int(3) NOT NULL,
      PRIMARY KEY (`Uid`),
      KEY `StudentClass` (`ClassId`),
      CONSTRAINT `StudentClass` FOREIGN KEY (`ClassId`) REFERENCES `studentclass` (`ClassId`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    复制代码

      studentclass表的设计如下:

      

    复制代码
    -- ----------------------------
    -- Table structure for `studentclass`
    -- ----------------------------
    DROP TABLE IF EXISTS `studentclass`;
    CREATE TABLE `studentclass` (
      `ClassId` int(3) NOT NULL AUTO_INCREMENT,
      `ClassName` varchar(10) DEFAULT NULL,
      PRIMARY KEY (`ClassId`)
    ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
    复制代码

      将数据库建好后,我们进行Entity,Dao,Service层以及mapper文件的的编写。

      首先在mapper文件夹新建一个mapper文件:StudentMapper.xml

    复制代码
      1 <?xml version="1.0" encoding="UTF-8"?>
      2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
      3 <mapper namespace="Dao.StudentMapper">
      4     <resultMap id="BaseResultMap" type="Entity.Student">
      5         <id column="Uid" jdbcType="BINARY" property="uid" />
      6         <result column="Name" jdbcType="VARCHAR" property="name" />
      7         <result column="Age" jdbcType="INTEGER" property="age" />
      8         <result column="ClassId" jdbcType="INTEGER" property="classid" />
      9     </resultMap>
     10     <sql id="Base_Column_List">
     11         Uid, Name, Age, ClassId
     12     </sql>
     13     <select id="selectByPrimaryKey" parameterType="byte[]" resultMap="BaseResultMap">
     14         select
     15         <include refid="Base_Column_List" />
     16         from student
     17         where Uid = #{uid,jdbcType=BINARY}
     18     </select>
     19     <select id="selectByCondition" parameterType="Entity.Student" resultMap="BaseResultMap">
     20         SELECT
     21         <include refid="Base_Column_List"/>
     22         from student
     23         <where>
     24             1=1
     25             <if test="uid != null">
     26                 and Uid=#{uid,jdbcType=BINARY}
     27             </if>
     28             <if test="name != null">
     29                 and Name=#{name,jdbcType=VARCHAR}
     30             </if>
     31             <if test="age != null">
     32                 and Age=#{age,jdbcType=INTEGER}
     33             </if>
     34             <if test="classid != null">
     35                 and ClassId=#{classid,jdbcType=INTEGER}
     36             </if>
     37         </where>
     38     </select>
     39     <delete id="deleteByPrimaryKey" parameterType="byte[]">
     40         delete from student
     41         where Uid = #{uid,jdbcType=BINARY}
     42     </delete>
     43     <insert id="insert" parameterType="Entity.Student">
     44         insert into student (Uid, Name, Age,
     45         ClassId)
     46         values (#{uid,jdbcType=BINARY}, #{name,jdbcType=VARCHAR}, #{age,jdbcType=INTEGER},
     47         #{classid,jdbcType=INTEGER})
     48     </insert>
     49     <insert id="insertSelective" parameterType="Entity.Student">
     50         insert into student
     51         <trim prefix="(" suffix=")" suffixOverrides=",">
     52             <if test="uid != null">
     53                 Uid,
     54             </if>
     55             <if test="name != null">
     56                 Name,
     57             </if>
     58             <if test="age != null">
     59                 Age,
     60             </if>
     61             <if test="classid != null">
     62                 ClassId,
     63             </if>
     64         </trim>
     65         <trim prefix="values (" suffix=")" suffixOverrides=",">
     66             <if test="uid != null">
     67                 #{uid,jdbcType=BINARY},
     68             </if>
     69             <if test="name != null">
     70                 #{name,jdbcType=VARCHAR},
     71             </if>
     72             <if test="age != null">
     73                 #{age,jdbcType=INTEGER},
     74             </if>
     75             <if test="classid != null">
     76                 #{classid,jdbcType=INTEGER},
     77             </if>
     78         </trim>
     79     </insert>
     80     <update id="updateByPrimaryKeySelective" parameterType="Entity.Student">
     81         update student
     82         <set>
     83             <if test="name != null">
     84                 Name = #{name,jdbcType=VARCHAR},
     85             </if>
     86             <if test="age != null">
     87                 Age = #{age,jdbcType=INTEGER},
     88             </if>
     89             <if test="classid != null">
     90                 ClassId = #{classid,jdbcType=INTEGER},
     91             </if>
     92         </set>
     93         where Uid = #{uid,jdbcType=BINARY}
     94     </update>
     95     <update id="updateByPrimaryKey" parameterType="Entity.Student">
     96         update student
     97         set Name = #{name,jdbcType=VARCHAR},
     98         Age = #{age,jdbcType=INTEGER},
     99         ClassId = #{classid,jdbcType=INTEGER}
    100         where Uid = #{uid,jdbcType=BINARY}
    101     </update>
    102 </mapper>
    复制代码

      以上这段代码是直接使用mybatis generator直接进行生成的,如果不想手写的话(手写容易出错),可以直接使用该工具进行生成,该工具的下载以及使用参见本人博客地址:http://www.cnblogs.com/qixiaoyizhan/p/7597315.html

      添加Entity实体

      

    复制代码
     1 package Entity;
     2 
     3 public class Student {
     4     private byte[] uid;
     5 
     6     private String name;
     7 
     8     private Integer age;
     9 
    10     private Integer classid;
    11 
    12     public byte[] getUid() {
    13         return uid;
    14     }
    15 
    16     public void setUid(byte[] uid) {
    17         this.uid = uid;
    18     }
    19 
    20     public String getName() {
    21         return name;
    22     }
    23 
    24     public void setName(String name) {
    25         this.name = name == null ? null : name.trim();
    26     }
    27 
    28     public Integer getAge() {
    29         return age;
    30     }
    31 
    32     public void setAge(Integer age) {
    33         this.age = age;
    34     }
    35 
    36     public Integer getClassid() {
    37         return classid;
    38     }
    39 
    40     public void setClassid(Integer classid) {
    41         this.classid = classid;
    42     }
    43 }
    复制代码

      在Dao层写Mybatis接口(不需要写实现类,mybatis不需要),新建StudentMapper

      

    复制代码
     1 package Dao;
     2 
     3 import Entity.Student;
     4 import org.springframework.stereotype.Repository;
     5 
     6 import java.util.List;
     7 
     8 @Repository
     9 public interface StudentMapper {
    10     int deleteByPrimaryKey(byte[] uid);
    11 
    12     int insert(Student record);
    13 
    14     int insertSelective(Student record);
    15 
    16     Student selectByPrimaryKey(byte[] uid);
    17 
    18     List<Student> selectByCondition(Student record);
    19 
    20     int updateByPrimaryKeySelective(Student record);
    21 
    22     int updateByPrimaryKey(Student record);
    23 }
    复制代码

      在Service层写对Dao层的访问逻辑,当然Demo没有什么业务处理逻辑,仅作为Demo

      

      IStudentService 接口:

    复制代码
     1 package Service;
     2 
     3 import Entity.Student;
     4 
     5 import java.util.List;
     6 
     7 public interface IStudentService {
     8     int deleteByPrimaryKey(byte[] uid);
     9 
    10     int insert(Student record);
    11 
    12     int insertSelective(Student record);
    13 
    14     Student selectByPrimaryKey(byte[] uid);
    15 
    16     List<Student> selectByCondition(Student record);
    17 
    18     int updateByPrimaryKeySelective(Student record);
    19 
    20     int updateByPrimaryKey(Student record);
    21 }
    复制代码

      StudentService 实现了 IStudentService 接口:

    复制代码
     1 package Service;
     2 
     3 import Dao.StudentMapper;
     4 import Entity.Student;
     5 import org.springframework.beans.factory.annotation.Autowired;
     6 import org.springframework.stereotype.Service;
     7 
     8 import java.util.List;
     9 
    10 @Service
    11 public class StudentService implements IStudentService {
    12     @Autowired
    13     private StudentMapper studentMapper;
    14 
    15     @Override
    16     public int deleteByPrimaryKey(byte[] uid) {
    17         return studentMapper.deleteByPrimaryKey(uid);
    18     }
    19 
    20     @Override
    21     public int insert(Student record) {
    22         return studentMapper.insert(record);
    23     }
    24 
    25     @Override
    26     public int insertSelective(Student record) {
    27         return studentMapper.insertSelective(record);
    28     }
    29 
    30     @Override
    31     public Student selectByPrimaryKey(byte[] uid) {
    32         return studentMapper.selectByPrimaryKey(uid);
    33     }
    34 
    35     @Override
    36     public List<Student> selectByCondition(Student record) {
    37         return studentMapper.selectByCondition(record);
    38     }
    39 
    40     @Override
    41     public int updateByPrimaryKeySelective(Student record) {
    42         return studentMapper.updateByPrimaryKeySelective(record);
    43     }
    44 
    45     @Override
    46     public int updateByPrimaryKey(Student record) {
    47         return studentMapper.updateByPrimaryKey(record);
    48     }
    49 }
    复制代码

      然后我们写一个StudentController用于调用Service

       

    复制代码
     1 package Controllers;
     2 
     3 import Entity.Student;
     4 import Service.IStudentService;
     5 import org.springframework.beans.factory.annotation.Autowired;
     6 import org.springframework.web.bind.annotation.GetMapping;
     7 import org.springframework.web.bind.annotation.RequestMapping;
     8 import org.springframework.web.bind.annotation.RestController;
     9 
    10 import java.util.List;
    11 
    12 @RestController
    13 @RequestMapping("/api/Student")
    14 public class StudentController {
    15     @Autowired
    16     private IStudentService service;
    17 
    18     @GetMapping()
    19     public String Get() {
    20         List<Student> students = service.selectByCondition(new Student());
    21         String jsonResult = com.alibaba.fastjson.JSON.toJSONString(students);
    22         return jsonResult;
    23     }
    24 }
    复制代码

      走到这一步的代码目录结构是这样子的:

      

      如果进行顺利的话,我们运行我们的Tomacat服务器,并调用我们的新接口:http://localhost:8080/api/Student

      运行时候,别忘记了修改jdbc.properties文件里的连接url以及用户名密码!!!

      

      

      哇,数据成功显示!(别把这个数据当成你会真的显示出来的一样,这是我数据库原有的数据,哈哈哈)

      

      还不快去添加几条数据调用一下试试嘛~

    七、结尾

      至此,我们的SSM框架已经基本搭建完毕,我们已经用我们搭建的Demo从真实的数据库中获取到了数据,并转成了Json格式,在浏览器中用Rest api接口的形式获取到了。

      该项目源代码可以在Github上找到,如果需要的可以直接去下载->

      https://github.com/dong666/SSM-Demo (不赶紧访问点个Star嘛?

    本文为七小站主原创作品,转载请注明出处:http://www.cnblogs.com/qixiaoyizhan/ 且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。 
     
    ===================以上为转载信息===========================
    ===================以下为个人实践后备注信息===========================
     
    pom.xml中引入的依赖包过多,搭建一个最简单的项目需要的最基本的依赖包如下(只列出包的artifactId):
    spring-webmvc
    jstl
    mysql-connector-java
    mybatis
    mybatis-spring
    spring-jdbc
    c3p0
     
    另外我项目中使用的数据库连接字符串是 
     jdbc.url=jdbc:mysql://10.0.1.176:3306/db_test?characterEncoding=utf8      (IP:端口/数据库名)
     
  • 相关阅读:
    脚本性能分析
    openwrt补丁
    定制openwrt的根文件
    openwrt路由器更换了Flash之后需要修改的源码
    openwrt驱动与应用程序的联系
    我的vi/vim配置文件
    Python中的字典分组函数(groupby,itertools)
    迭代器
    tuple
    list
  • 原文地址:https://www.cnblogs.com/luohengstudy/p/7911149.html
Copyright © 2011-2022 走看看