IDEA搭建SSM項目並實現簡單案例,步驟超詳細


前言

最近手頭上沒啥活兒,就想用IDEA搭建一個SSM項目,結果發現不百度根本搭不出來,就算是搭建好了也是有很多問題,為了以后方便上手,在此一步一步記錄一下。

一、搭建SSM框架

【File】-->【New】-->【Project】

選擇左側【Maven】,在【Create from archetype】前面打【√】,選擇【org.apache.maven.archetype:maven-archetype-webapp】,點擊【Next】

 

初始狀態下【Name】為untitled,修改【Name】,下面的【Location和【ArtifactId】會自動填寫為一樣的,如果不自動生成就手動填寫吧。

【GroupId】默認值為org.example,需要手動修改,當然也可以不改,后期修改配置文件注意配置的路徑就可以。

填寫完畢,點擊【Next】。

 

 配置maven,選擇本地maven地址,在【Override】前面打上【√】,才可以選擇maven中的setting.xml文件以及本地倉庫,然后點擊【Finish】IDEA就開始創建項目了

在這里多提一句,我用的是阿里雲的maven鏡像,下載jar包的速度挺快,至於怎么配置請移步這里  Maven配置阿里雲鏡像

 

 創建之后,項目會自動為你加載jar包,如果沒有jar的情況下,如果在上面那步配置使用阿里雲maven鏡像,加載就會快一些,要不然就會慢多了。 

二、完善SSM框架結構

創建之后項目的結構是這樣的,很顯然,這不是我們需要的標准SSM框架

 

我們新建包,為項目補充缺失的包

選中項目的src,右鍵選擇【New】-->【Directory】

彈窗有四個選項,我們先添加【main\java】,之后再按照相同的步驟,把剩下的三個加上。

加上之后的效果就是這樣的

接下來新建一下項目所需要的文件包繼續補充項目結構。

右鍵項目中的java文件夾,點擊【New】-->【Package】

先建一個跟剛開始新建項目的時候,GroupId相同值的包

然后在com.manage包下依次加上controller(web層)、dao、entry(實體類)、service(接口類),

在service下新建impl包用來存放接口的實現類,

在resource下增加mapper用來存放映射的xml文件。

在webapp下新加一個page文件夾用來存放jsp頁面,並將index.jsp挪到該文件夾下。加上之后如下

三、編寫配置文件

首先在pom.xml中引入spring以及mybatis以及mysql等的相關依賴,為方便參考,我直接把代碼粘到下面: 

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.manage</groupId>
    <artifactId>resourcemanage</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>war</packaging>

    <name>resourcemanage Maven Webapp</name>
    <!-- FIXME change it to the project's website -->
    <url>http://www.example.com</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.7</maven.compiler.source>
        <maven.compiler.target>1.7</maven.compiler.target>
        <!--spring版本-->
        <spring.version>5.0.5.RELEASE</spring.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>
        <!-- 實現slf4j接口並整合 -->
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.1.1</version>
        </dependency>
        <!-- jsp頁面使用的jstl表達式 -->
        <dependency>
            <groupId>jstl</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
        <!--spring核心包-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aspects</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-expression</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-orm</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!-- 數據庫 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.11</version>
        </dependency>
        <dependency>
            <groupId>com.mchange</groupId>
            <artifactId>c3p0</artifactId>
            <version>0.9.5.2</version>
        </dependency>
        <!--mybatis-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.6</version>
        </dependency>

        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.3.2</version>
        </dependency>

        <!-- 其他 -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>4.0.1</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.47</version>
        </dependency>
    </dependencies>

    <build>
        <finalName>resourcemanage</finalName>
        <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
            <plugins>
                <plugin>
                    <artifactId>maven-clean-plugin</artifactId>
                    <version>3.1.0</version>
                </plugin>
                <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
                <plugin>
                    <artifactId>maven-resources-plugin</artifactId>
                    <version>3.0.2</version>
                </plugin>
                <plugin>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.8.0</version>
                </plugin>
                <plugin>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.22.1</version>
                </plugin>
                <plugin>
                    <artifactId>maven-war-plugin</artifactId>
                    <version>3.2.2</version>
                </plugin>
                <plugin>
                    <artifactId>maven-install-plugin</artifactId>
                    <version>2.5.2</version>
                </plugin>
                <plugin>
                    <artifactId>maven-deploy-plugin</artifactId>
                    <version>2.8.2</version>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
</project>

導入依賴之后,第一次可能會有import program提示,點擊導入即可

接下來我們在resources下新建

三個Spring配置文件:spring-dao.xml,spring-service.xml,spring-web.xml

一個mybatis配置文件:mybatis-config.xml

一個mysql連接的文件:jdbc.properties文件

一個日志配置文件:log.xml

xml文件新建步驟為:右鍵【resources】-->【New】-->【XML Configuration File】-->【Spring Config】

如果找不到【Spring Config】,說明pom.xml引入依賴沒生效,右鍵一下項目【Maven】-->【Reload project】,然后再重復上一步驟應該就有了。

mysql的配置文件,新建的類型為file就可以

  建好之后的結構就是這樣的了

接着我們編寫XML文件內容

1.jdbc.properties

jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/sm?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC
jdbc.username=root
jdbc.password=123456

 2.mybatis.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <settings>
        <!-- 打開延遲加載的全局開關 -->
        <setting name="lazyLoadingEnabled" value="true"/>
        <setting name="aggressiveLazyLoading" value="false"/>
        <!-- 使用jdbc的getGeneratedKeys獲取數據庫自增主鍵值 -->
        <setting name="useGeneratedKeys" value="true"/>
        <!-- 使用列別名替換列名 默認:true -->
        <setting name="useColumnLabel" value="true"/>

        <!-- 開啟駝峰命名轉換:Table{create_time} -> Entity{createTime} -->
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>
</configuration>

 3.spring-dao.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context.xsd">
    <!-- 配置整合mybatis過程 -->
    <!-- 1.配置數據庫相關參數properties的屬性:${url} -->
    <context:property-placeholder location="classpath:jdbc.properties"/>

    <!-- 2.數據庫連接池 -->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <!-- 配置連接池屬性 -->
        <property name="driverClass" value="${jdbc.driver}"/>
        <property name="jdbcUrl" value="${jdbc.url}"/>
        <property name="user" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
        <!-- c3p0連接池的私有屬性 -->
        <property name="maxPoolSize" value="30"/>
        <property name="minPoolSize" value="10"/>
        <!-- 關閉連接后不自動commit -->
        <property name="autoCommitOnClose" value="false"/>
        <!-- 獲取連接超時時間 -->
        <property name="checkoutTimeout" value="10000"/>
        <!-- 當獲取連接失敗重試次數 -->
        <property name="acquireRetryAttempts" value="2"/>
    </bean>

    <!-- 3.配置SqlSessionFactory對象 -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!-- 注入數據庫連接池 -->
        <property name="dataSource" ref="dataSource"/>
        <!-- 配置MyBaties全局配置文件:mybatis-config.xml -->
        <property name="configLocation" value="classpath:mybatis-config.xml"/>
        <!-- 掃描entity包 使用別名 -->
        <property name="typeAliasesPackage" value="com.manage.entity"/>
        <!-- 掃描sql配置文件:mapper需要的xml文件 -->
        <property name="mapperLocations" value="classpath:mapper/*.xml"/>
    </bean>

    <!-- 4.配置掃描Dao接口包,動態實現Dao接口,注入到spring容器中 -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <!-- 注入sqlSessionFactory -->
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
        <!-- 給出需要掃描Dao接口包 -->
        <property name="basePackage" value="com.manage.dao"/>
    </bean>
</beans>

 這個文件會在掃描sql配置文件處報錯,因為映射xml我們還沒有放進去,所以我們先給注釋掉,防止之后啟動項目訪問報錯。

 <!-- 掃描sql配置文件:mapper需要的xml文件 -->

<!--<property name="mapperLocations" value="classpath:mapper/*.xml"/>-->

 4.spring-service.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context.xsd
    http://www.springframework.org/schema/tx
    http://www.springframework.org/schema/tx/spring-tx.xsd">
    <!-- 掃描service包下所有使用注解的類型 -->
    <context:component-scan base-package="com.manage.service"/>
    <!-- 1.配置數據庫相關參數properties的屬性:${url} -->
    <context:property-placeholder location="classpath:jdbc.properties"/>
    <!-- 2.數據庫連接池 -->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <!-- 配置連接池屬性 -->
        <property name="driverClass" value="${jdbc.driver}"/>
        <property name="jdbcUrl" value="${jdbc.url}"/>
        <property name="user" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
        <!-- c3p0連接池的私有屬性 -->
        <property name="maxPoolSize" value="30"/>
        <property name="minPoolSize" value="10"/>
        <!-- 關閉連接后不自動commit -->
        <property name="autoCommitOnClose" value="false"/>
        <!-- 獲取連接超時時間 -->
        <property name="checkoutTimeout" value="10000"/>
        <!-- 當獲取連接失敗重試次數 -->
        <property name="acquireRetryAttempts" value="2"/>
    </bean>
    <!-- 配置事務管理器 -->
    <bean id="transactionManager"
          class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <!-- 注入數據庫連接池 -->
        <property name="dataSource" ref="dataSource"/>
    </bean>

    <!-- 配置基於注解的聲明式事務 -->
    <tx:annotation-driven transaction-manager="transactionManager"/>
</beans>

5.spring-web.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context.xsd
    http://www.springframework.org/schema/mvc
    http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
    <!-- 配置SpringMVC -->
    <!-- 1.開啟SpringMVC注解模式 -->
    <!-- 簡化配置:
        (1)自動注冊DefaultAnootationHandlerMapping,AnotationMethodHandlerAdapter
        (2)提供一些列:數據綁定,數字和日期的format @NumberFormat, @DateTimeFormat, xml,json默認讀寫支持
    -->
    <mvc:annotation-driven/>

    <!-- 2.靜態資源默認servlet配置
        (1)加入對靜態資源的處理:js,gif,png
        (2)允許使用"/"做整體映射
     -->
    <mvc:default-servlet-handler/>

    <!-- 3.配置jsp 顯示ViewResolver -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
        <property name="prefix" value="/page/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
    <!-- 4.掃描web相關的bean -->
    <context:component-scan base-package="com.manage.controller"/>
</beans>

 6.log.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="true">
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <!-- encoders are by default assigned the type ch.qos.logback.classic.encoder.PatternLayoutEncoder -->
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <root level="debug">
        <appender-ref ref="STDOUT"/>
    </root>
</configuration>

 以上6個配置文件編寫完之后,我們將Spring配置文件掛載到服務啟動的時候,在web.xml下配置

<!DOCTYPE web-app PUBLIC
        "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
        "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
    <display-name>Archetype Created Web Application</display-name>
    <!--1.配置前置控制器 -->
    <servlet>
        <servlet-name>SpringDispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <!-- 引入spring配置文件 -->
            <param-value>classpath:spring-*.xml</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>SpringDispatcherServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

    <!--2.歡迎文件-->
    <welcome-file-list>
        <welcome-file>/page/index.jsp</welcome-file>
    </welcome-file-list>
</web-app>

 最后在pom.xml文件中加入對xml的掃描,和pluginManagement同級,也在build標簽里面

<!--編譯時包括xml文件和properties文件,不然編譯后不包括此文件-->
<resources>
    <resource>
        <directory>src/main/java</directory>
        <includes>
            <include>*./*.xml</include>
        </includes>
        <filtering>false</filtering>
    </resource>
</resources>

至此,配置文件編寫完畢,接下來我們配置一下tomcat看一下效果

四、配置tomcat服務

點擊右上角【Add Configuration】-->【+】-->【Tomcat server】-->【Local】

配置sever

切換到【Deployment】,點擊【+】,選擇第二個帶【exploded】的

 

生成的Application context會帶  _war_exploded 后綴,本人習慣刪掉,這樣保存之后,之前說的【Server】下的url會自動拼上這個值

配置完成之后,點擊右上角的綠色三角或者左下角綠色三角,啟動tomcat,稍等一會兒瀏覽器就會自動彈出  當初領你進門的那句話 

五、SSM案例

前期的准備工作完成之后, 我們添加一個案例 用戶信息維護

1.數據庫名sm,表名sysuser,我這里使用的mysql數據庫,版本是8.0.26,不知道自己版本的話可以  使用cmd命令查一下版本信息。

mysql -u用戶名 -p密碼

用戶表的DDL語句

CREATE TABLE `sysuser` (
  `id` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL,
  `username` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL,
  `usercode` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL,
  `password` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL,
  `sex` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL,
  `createdate` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL,
  `isvalid` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL,
  `isstop` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL,
  `organid` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

2.生成實體類、xml映射文件。如果沒有工具可以參考一下這里 IDEA創建插件自動生成entity、mapper.xml、dao文件

我這里生成好的文件如下

SysUser.java

package com.manage.entity;

import java.util.Date;

public class SysUser {
    private Integer id;

    private String username;

    private String usercode;

    private String password;

    private Integer sex;

    private Date createdate;

    private Integer isvalid;

    private Integer isstop;

    private Integer organid;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username == null ? null : username.trim();
    }

    public String getUsercode() {
        return usercode;
    }

    public void setUsercode(String usercode) {
        this.usercode = usercode == null ? null : usercode.trim();
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password == null ? null : password.trim();
    }

    public Integer getSex() {
        return sex;
    }

    public void setSex(Integer sex) {
        this.sex = sex;
    }

    public Date getCreatedate() {
        return createdate;
    }

    public void setCreatedate(Date createdate) {
        this.createdate = createdate;
    }

    public Integer getIsvalid() {
        return isvalid;
    }

    public void setIsvalid(Integer isvalid) {
        this.isvalid = isvalid;
    }

    public Integer getIsstop() {
        return isstop;
    }

    public void setIsstop(Integer isstop) {
        this.isstop = isstop;
    }

    public Integer getOrganid() {
        return organid;
    }

    public void setOrganid(Integer organid) {
        this.organid = organid;
    }
}

 SysUser.xml,加上這個文件之后,我們就可以把之前spring-dao.xml中的掃描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.manage.dao.SysUserMapper">
    <resultMap id="BaseResultMap" type="com.manage.entity.SysUser">
        <id column="id" jdbcType="INTEGER" property="id"/>
        <result column="username" jdbcType="VARCHAR" property="username"/>
        <result column="usercode" jdbcType="VARCHAR" property="usercode"/>
        <result column="password" jdbcType="VARCHAR" property="password"/>
        <result column="sex" jdbcType="INTEGER" property="sex"/>
        <result column="createdate" jdbcType="TIMESTAMP" property="createdate"/>
        <result column="isvalid" jdbcType="INTEGER" property="isvalid"/>
        <result column="isstop" jdbcType="INTEGER" property="isstop"/>
        <result column="organid" jdbcType="INTEGER" property="organid"/>
    </resultMap>
    <sql id="Base_Column_List">
        id, username, usercode, password, sex, createdate, isvalid, isstop, organid
    </sql>
    <select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
        select
        <include refid="Base_Column_List"/>
        from sysuser
        where id = #{id,jdbcType=INTEGER}
    </select>
    <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
        delete
        from sysuser
        where id = #{id,jdbcType=INTEGER}
    </delete>
    <insert id="insert" parameterType="com.manage.entity.SysUser">
        insert into sysuser (id, username, usercode,
                             password, sex, createdate,
                             isvalid, isstop, organid)
        values (#{id,jdbcType=INTEGER}, #{username,jdbcType=VARCHAR}, #{usercode,jdbcType=VARCHAR},
                #{password,jdbcType=VARCHAR}, #{sex,jdbcType=INTEGER}, #{createdate,jdbcType=TIMESTAMP},
                #{isvalid,jdbcType=INTEGER}, #{isstop,jdbcType=INTEGER}, #{organid,jdbcType=INTEGER})
    </insert>
    <insert id="insertSelective" parameterType="com.manage.entity.SysUser">
        insert into sysuser
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="id != null">
                id,
            </if>
            <if test="username != null">
                username,
            </if>
            <if test="usercode != null">
                usercode,
            </if>
            <if test="password != null">
                password,
            </if>
            <if test="sex != null">
                sex,
            </if>
            <if test="createdate != null">
                createdate,
            </if>
            <if test="isvalid != null">
                isvalid,
            </if>
            <if test="isstop != null">
                isstop,
            </if>
            <if test="organid != null">
                organid,
            </if>
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="id != null">
                #{id,jdbcType=INTEGER},
            </if>
            <if test="username != null">
                #{username,jdbcType=VARCHAR},
            </if>
            <if test="usercode != null">
                #{usercode,jdbcType=VARCHAR},
            </if>
            <if test="password != null">
                #{password,jdbcType=VARCHAR},
            </if>
            <if test="sex != null">
                #{sex,jdbcType=INTEGER},
            </if>
            <if test="createdate != null">
                #{createdate,jdbcType=TIMESTAMP},
            </if>
            <if test="isvalid != null">
                #{isvalid,jdbcType=INTEGER},
            </if>
            <if test="isstop != null">
                #{isstop,jdbcType=INTEGER},
            </if>
            <if test="organid != null">
                #{organid,jdbcType=INTEGER},
            </if>
        </trim>
    </insert>
    <update id="updateByPrimaryKeySelective" parameterType="com.manage.entity.SysUser">
        update sysuser
        <set>
            <if test="username != null">
                username = #{username,jdbcType=VARCHAR},
            </if>
            <if test="usercode != null">
                usercode = #{usercode,jdbcType=VARCHAR},
            </if>
            <if test="password != null">
                password = #{password,jdbcType=VARCHAR},
            </if>
            <if test="sex != null">
                sex = #{sex,jdbcType=INTEGER},
            </if>
            <if test="createdate != null">
                createdate = #{createdate,jdbcType=TIMESTAMP},
            </if>
            <if test="isvalid != null">
                isvalid = #{isvalid,jdbcType=INTEGER},
            </if>
            <if test="isstop != null">
                isstop = #{isstop,jdbcType=INTEGER},
            </if>
            <if test="organid != null">
                organid = #{organid,jdbcType=INTEGER},
            </if>
        </set>
        where id = #{id,jdbcType=INTEGER}
    </update>
    <update id="updateByPrimaryKey" parameterType="com.manage.entity.SysUser">
        update sysuser
        set username   = #{username,jdbcType=VARCHAR},
            usercode   = #{usercode,jdbcType=VARCHAR},
            password   = #{password,jdbcType=VARCHAR},
            sex        = #{sex,jdbcType=INTEGER},
            createdate = #{createdate,jdbcType=TIMESTAMP},
            isvalid    = #{isvalid,jdbcType=INTEGER},
            isstop     = #{isstop,jdbcType=INTEGER},
            organid    = #{organid,jdbcType=INTEGER}
        where id = #{id,jdbcType=INTEGER}
    </update>
</mapper>

 SysUserMapper.java

package com.manage.dao;

import com.manage.entity.SysUser;

public interface SysUserMapper {
    int deleteByPrimaryKey(Integer id);

    int insert(SysUser record);

    int insertSelective(SysUser record);

    SysUser selectByPrimaryKey(Integer id);

    int updateByPrimaryKeySelective(SysUser record);

    int updateByPrimaryKey(SysUser record);
}

SysUserService.java

package com.manage.service;

import com.manage.entity.SysUser;

public interface SysUserService {
    SysUser getOneById(Integer id);
}

SysUserServiceImpl.java

package com.manage.service.impl;

import com.manage.dao.SysUserMapper;
import com.manage.entity.SysUser;
import com.manage.service.SysUserService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;

@Service
public class SysUserServiceImpl implements SysUserService {
    @Resource
    public SysUserMapper sysUserMapper;

    @Override
    public SysUser getOneById(Integer id) {
        return sysUserMapper.selectByPrimaryKey(id);
    }
}

SysUserController.java

package com.manage.controller;

import com.manage.entity.SysUser;
import com.manage.service.SysUserService;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;

@Controller
@RequestMapping("/user")
public class SysUserController {

    @Resource
    public SysUserService sysUserService;

    @RequestMapping("/getInfo")
    public String getUserInfo(HttpServletRequest request){
        SysUser user = sysUserService.getOneById(1);
        request.setAttribute("user",user);
        return "userinfo";
    }
}

再新建一個jsp頁面用來展示查出的數據

userinfo.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<div>用戶信息</div>
<div>用戶名:${user.username}</div>
<div>用戶編碼:${user.usercode}</div>
</body>
</html>

建好之后我們啟動程序,然后按照controller里面寫的路徑訪問一下

結果顯示頁面並沒有解析jsp的內置作用域,造成這種原因是因為web.xml是我們新建項目的時候自動生成,需要改一下

<!DOCTYPE web-app PUBLIC
        "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
        "http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>

修改為

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
         http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

我們再重啟一下訪問發現就可以了。

 

至此,我們完成了一個SSM框架的搭建和案例的展示。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM