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>com.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框架的搭建和案例的展示。

本文作者:远山伴痴人

本文链接:https://www.cnblogs.com/BKYhailong/p/15438909.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   远山伴痴人  阅读(6828)  评论(8编辑  收藏  举报
编辑推荐:
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
阅读排行:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
展开
🔑
  1. 1 404 not found REOL
  2. 2 Lemon 米津玄師
Lemon - 米津玄師
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.

作词 : 米津玄師

作曲 : 米津玄師

夢ならばどれほどよかったでしょう

未だにあなたのことを夢にみる

忘れた物を取りに帰るように

古びた思い出の埃を払う

戻らない幸せがあることを

最後にあなたが教えてくれた

言えずに隠してた昏い過去も

あなたがいなきゃ永遠に昏いまま

きっともうこれ以上 傷つくことなど

ありはしないとわかっている

あの日の悲しみさえ

あの日の苦しみさえ

そのすべてを愛してた あなたとともに

胸に残り離れない

苦いレモンの匂い

雨が降り止むまでは帰れない

今でもあなたはわたしの光

暗闇であなたの背をなぞった

その輪郭を鮮明に覚えている

受け止めきれないものと出会うたび

溢れてやまないのは涙だけ

何をしていたの

何を見ていたの

わたしの知らない横顔で

どこかであなたが今

わたしと同じ様な

涙にくれ 淋しさの中にいるなら

わたしのことなどどうか 忘れてください

そんなことを心から願うほどに

今でもあなたはわたしの光

自分が思うより 恋をしていたあなたに

あれから思うように 息ができない

あんなに側にいたのにまるで嘘みたい

とても忘れられないそれだけが確か

あの日の悲しみさえ

あの日の苦しみさえ

その全てを愛してたあなたと共に

胸に残り離れない

苦いレモンの匂い

雨が降り止むまでは帰れない

切り分けた果実の片方の様に

今でもあなたはわたしの光