zoukankan      html  css  js  c++  java
  • SSMM(spring+springmvc+maven+mybatis)框架整合

    总体流程

    • 启动mysql
      • 启动mysql server(docker版)
      • 启动mysql client(这里使用navicat)
      • 建库
      • 建表
    • 创建mvn项目
      • 手工创建mvn项目
      • 引入spring、springmvc、mybatis以及json相关依赖(即jar)
      • 引入mysql库配置(src/main/resources)
      • 引入spring配置文件(src/main/resources)
      • 创建基本包结构(controller、service、dao、mapper、model)
      • 创建src/main/resources/mapper包,用于放置*Mapper.xml
      • 配置web.xml,使spring生效
    • 使用mybatis-generator创建mybatis的xml文件、mapper层接口、model层
      • 下载mybatis-generator-core-1.3.2.jar和mysql-connector-java-5.1.37.jar,并放置在同一个包例如"mybatis-generator"下

      • 在该包下创建generatorConfig.xml文件并编写
      • 执行生成命令
      • 将model层生成的类拷贝到项目中的model包里
      • 将mapper层生成的接口拷贝到项目中的mapper包里
      • 将生成的xml文件拷贝到src/main/resources/mapper包下
    • 编写dao、service、controller
    • 浏览器或postman测试

    一、启动mysql

    1、启动docker引擎

    • 双击Docker图标(应用程序)

    2、启动mysql server(docker容器)

    • 先删除容器
    • 1 docker rm -f mysql:5.7
    • 再启动容器
    • 1 docker run --name mysql5.7 -e MYSQL_ROOT_PASSWORD=123456 -v /Users/wangna/Desktop/docker-data/mysql/data:/var/lib/mysql -v /Users/wangna/Desktop/docker-data/mysql/file/my.cnf:/etc/my.cnf -p 3306:3306 -d  mysql:5.7

            或者用

    • docker start mysql5.7
    • 检查是否已经启动容器
    • docker ps -a

    3、启动mysql client(即打开navicat,连接mysql server)

    • 双击"navicat for mysql"图标(应用程序)

    4、创建数据库

    • 打开连接(即双击连接)
    • 在连接上右击,创建数据库(前提,该连接内没有该数据库)

    5、创建数据表

    二、创建mvn项目

    1、手工创建mvn项目

    • 创建后,先使用mvn clean install构建项目,之后引入eclipse

    注意点:

    • war包(即必须有web.xml),这个在之后的springboot中可以去掉(springboot可以直接使用jar包启动web项目)
    • 引入eclipse出错后,查看Problems窗口的提示,一步一步进行修改
    • pom.xml中需要引入properties中需要引入
    • 1     <properties>
      2         <java.version>1.8</java.version>
      3         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      4         <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
      5     </properties>
      • 第一条:指定jdk版本

      • 后两条:处理中文问题
    • pom.xml中需要引入jdk1.8的maven编译插件
    •  1 <build>
       2         <plugins>
       3             <plugin>
       4                 <groupId>org.apache.maven.plugins</groupId>
       5                 <artifactId>maven-compiler-plugin</artifactId>
       6                 <configuration>
       7                     <source>1.8</source>
       8                     <target>1.8</target>
       9                     <encoding>utf-8</encoding>
      10                 </configuration>
      11             </plugin>
      12         </plugins>
      13     </build>
      View Code

    2、在pom.xml文件中引入spring、springmvc、mybatis以及json相关依赖(即jar)

    • spring核心包:core、bean、context
    •  1      <dependency>
       2             <groupId>org.springframework</groupId>
       3             <artifactId>spring-core</artifactId>
       4             <version>${spring.version}</version>
       5         </dependency>
       6         <dependency>
       7             <groupId>org.springframework</groupId>
       8             <artifactId>spring-beans</artifactId>
       9             <version>${spring.version}</version>
      10         </dependency>
      11         <dependency>
      12             <groupId>org.springframework</groupId>
      13             <artifactId>spring-context</artifactId>
      14             <version>${spring.version}</version>
      15         </dependency>
      16     </dependencies>

      别忘了版本:

    • <spring.version>4.2.4.RELEASE</spring.version>
    • springmvc:web、webmvc
    •  1                      <!-- spring mvc -->
       2         <dependency>
       3             <groupId>org.springframework</groupId>
       4             <artifactId>spring-web</artifactId>
       5             <version>${spring.version}</version>
       6         </dependency>
       7         <dependency>
       8             <groupId>org.springframework</groupId>
       9             <artifactId>spring-webmvc</artifactId>
      10             <version>${spring.version}</version>
      11         </dependency>
    • 数据库相关
      • spring-jdbc
      • 1         <dependency>
        2             <groupId>org.springframework</groupId>
        3             <artifactId>spring-jdbc</artifactId>
        4             <version>${spring.version}</version>
        5         </dependency>
      • mysql-connector-java(Java连接mysql的必须包)

      • 1         <dependency>
        2             <groupId>mysql</groupId>
        3             <artifactId>mysql-connector-java</artifactId>
        4             <version>5.1.27</version>
        5             <scope>runtime</scope>
        6         </dependency>
    • tomcat-jdbc(数据源,更好的开源实现是druid)
    • 1         <dependency>
      2             <groupId>org.apache.tomcat</groupId>
      3             <artifactId>tomcat-jdbc</artifactId>
      4             <version>7.0.47</version>
      5         </dependency>
    • mybatis:
      • mybatis
      • 1         <dependency>
        2             <groupId>org.mybatis</groupId>
        3             <artifactId>mybatis</artifactId>
        4             <version>${mybatis.version}</version>
        5         </dependency>

        版本:

      • <mybatis.version>3.2.8</mybatis.version>
      • mybatis-spring:mybatis与spring进行集成的包
      • 1         <dependency>
        2             <groupId>org.mybatis</groupId>
        3             <artifactId>mybatis-spring</artifactId>
        4             <version>${mybatis-spring.version}</version>
        5         </dependency>

        版本:

      • <mybatis-spring.version>1.2.2</mybatis-spring.version>
    • json相关(使用Jackson)
      • core
      • annotations
      • databind
    •  1                 <!-- json -->
       2         <dependency>
       3             <groupId>com.fasterxml.jackson.core</groupId>
       4             <artifactId>jackson-annotations</artifactId>
       5             <version>${jackson.version}</version>
       6         </dependency>
       7         <dependency>
       8             <groupId>com.fasterxml.jackson.core</groupId>
       9             <artifactId>jackson-core</artifactId>
      10             <version>${jackson.version}</version>
      11         </dependency>
      12         <dependency>
      13             <groupId>com.fasterxml.jackson.core</groupId>
      14             <artifactId>jackson-databind</artifactId>
      15             <version>${jackson.version}</version>
      16         </dependency>

      版本:

    • <jackson.version>2.6.4</jackson.version>

    3、引入mysql库配置(src/main/resources)

    jdbc.properties

    1 jdbc.driverClassName = com.mysql.jdbc.Driver
    2 jdbc.url = jdbc:mysql://localhost:3306/wangna?zeroDateTimeBehavior=convertToNull&amp;useUnicode=true&amp;characterEncoding=utf-8
    3 jdbc.username = root
    4 jdbc.password = 123456
    View Code
    • jdbc.driverClassName:数据库驱动(Java连接数据库必须有的),其中com.mysql.jdbc.Driver来源于mysql-connector-java这个依赖包
    • jdbc.url:
      • 格式:jdbc:mysql://ip:port/数据库名
      • 例:jdbc:mysql://localhost:3306/wn
        • localhost即本地ip,等于127.0.0.1
    • jdbc.username:数据库用户名,默认是root
    • jdbc.password:数据库密码,就是启动mysql容器的命令中的MYSQL_ROOT_PASSWORD的值

    4、引入spring配置文件(src/main/resources)

    spring.xml

     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.2.xsd
     8                            http://www.springframework.org/schema/context 
     9                            http://www.springframework.org/schema/context/spring-context-3.2.xsd
    10                            http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd">
    11                            
    12     <!-- 注解扫描 -->
    13     <context:component-scan base-package="com.wn"/>
    14     <!-- 启动jackson -->
    15     <mvc:annotation-driven />
    16     <!-- 引入属性文件 -->
    17     <context:property-placeholder location="classpath:jdbc.properties"/>
    18     
    19     <!-- 引入数据源 -->
    20     <bean id="xxxDataSource" class="org.apache.tomcat.jdbc.pool.DataSource" destroy-method="close">
    21         <property name="driverClassName" value="${jdbc.driverClassName}" />
    22         <property name="url" value="${jdbc.url}" />
    23         <property name="username" value="${jdbc.username}" />
    24         <property name="password" value="${jdbc.password}" />
    25     </bean>
    26     
    27     <!-- 引入mybatis -->
    28     <bean id="xxxSqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    29         <property name="dataSource" ref="xxxDataSource" />
    30         <property name="mapperLocations">
    31             <list>
    32                 <value>classpath*:mapper/*Mapper.xml</value>
    33             </list>
    34         </property>
    35     </bean>
    36     <bean id="xxxMapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    37         <property name="basePackage" value="com.wn.mapper" />
    38         <property name="sqlSessionFactoryBeanName" value="xxxSqlSessionFactory" />
    39     </bean>
    40 </beans>
    View Code
    • <context:component-scan>:扫描基础包,用于使注解生效,eg.com.wn,那么com.wn及其子包com.wn.*下的注解都会生效
    • <mvc:annotation-driven />:启动jackson,这里注意springmvc自动返回json数据的三步

      • 引入jackson的三个包
      • 启动该注解
      • 在controller层中类或方法上添加@ResponseBody注解
    • context:property-placeholder:将外部文件引入到该文件中,进而在后续的配置中使用外部文件的配置属性,例如:引入jdbc.properties,之后数据源的配置就可以使用jdbc.properties中的属性

    • <bean>
      • 数据源:使用jdbc.properties中的四个属性进行构建,其中org.apache.tomcat.jdbc.pool.DataSource来源于tomcat-jdbc这个依赖包
      • sqlSessionFactory:mybatis的部分,需要根据之前创建的数据源以及将要扫描的Mapper.xml来创建,其中org.mybatis.spring.SqlSessionFactoryBean来源于mybatis-spring依赖包
      • MapperScannerConfigurer:mybatis的部分,需要根据之前创建的sqlSessionFactory和mapper层接口的包(见5)

    5、创建基本包(package)结构(controller、service、dao、mapper、model)

    • eg.com.wn.controller,这里的基础包com.wn与spring.xml中的<context:component-scan>一样

    6、创建src/main/resources/mapper的folder包,用于放置*Mapper.xml

    • 这里的src/main/resources/mapper/*Mapper.xml与spring.xml中的xxxSqlSessionFactory的mapperLocations的值classpath*:mapper/*Mapper.xml一样

    7、配置web.xml,使spring生效

     1     <servlet>
     2         <servlet-name>dispatcherServlet</servlet-name>
     3         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
     4         <init-param>
     5             <param-name>contextConfigLocation</param-name>
     6             <param-value>classpath*:spring*.xml</param-value>
     7         </init-param>
     8         <load-on-startup>1</load-on-startup>
     9     </servlet>
    10     <servlet-mapping>
    11         <servlet-name>dispatcherServlet</servlet-name>
    12         <url-pattern>/</url-pattern>
    13     </servlet-mapping>
    14 
    15     <filter>
    16         <filter-name>encodingFilter</filter-name>
    17         <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    18         <init-param>
    19             <param-name>encoding</param-name>
    20             <param-value>UTF-8</param-value>
    21         </init-param>
    22         <init-param>
    23             <param-name>forceEncoding</param-name>
    24             <param-value>true</param-value>
    25         </init-param>
    26     </filter>
    27     <filter-mapping>
    28         <filter-name>encodingFilter</filter-name>
    29         <url-pattern>/*</url-pattern>
    30     </filter-mapping>
    View Code
    • 设置DispatcherServlet
      • 指定spring配置文件(即上述的spring.xml)所在的位置与名称
      • 指定该servlet的扫描路径为根路径"/",即该项目下的所有请求都会被DispatcherServlet所拦截并分发到相应的controller类中的方法上
    • 配置CharacterEncodingFilter:处理中文问题

    三、使用mybatis-generator创建mybatis的xml文件、mapper层接口、model层

    1、下载mybatis-generator-core-1.3.2.jar和mysql-connector-java-5.1.37.jar,并放置在同一个包例如"mybatis-generator"下

    2、在该包下创建generatorConfig.xml文件

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <!DOCTYPE generatorConfiguration
     3   PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
     4   "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
     5 <generatorConfiguration>
     6     <!--数据库驱动-->
     7     <classPathEntry    location="mysql-connector-java-5.1.37.jar"/>
     8     <context id="mysql">
     9         <!-- 用于防止生成大量注释 -->
    10         <commentGenerator>
    11             <property name="suppressDate" value="true"/>
    12             <property name="suppressAllComments" value="true"/>
    13         </commentGenerator>
    14         <!--数据库链接地址账号密码-->
    15         <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/wn" userId="root" password="123456">
    16         </jdbcConnection>
    17         <javaTypeResolver>
    18             <property name="forceBigDecimals" value="false"/>
    19         </javaTypeResolver>
    20         <!--生成Model类存放位置-->
    21         <javaModelGenerator targetPackage="com.wn.model" targetProject="xxx">
    22             <property name="enableSubPackages" value="true"/>
    23             <property name="trimStrings" value="true"/>
    24         </javaModelGenerator>
    25         <!--生成映射文件存放位置-->
    26         <sqlMapGenerator targetPackage="njkj" targetProject="xxx">
    27             <property name="enableSubPackages" value="true"/>
    28         </sqlMapGenerator>
    29         <!--生成mapper接口存放位置-->
    30         <javaClientGenerator type="XMLMAPPER" targetPackage="com.wn.mapper" targetProject="xxx">
    31             <property name="enableSubPackages" value="true"/>
    32         </javaClientGenerator>
    33         <!--生成对应表及类名-->
    34         <table tableName="t_book" domainObjectName="Book" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false">  
    35         </table>
    36 
    37     </context>
    38 </generatorConfiguration>
    View Code

    说明:每一条的含义参见http://www.cnblogs.com/java-zhao/p/5569714.html

    3、执行命令(在"mybatis-generator"包下)

    • 进入"mybatis-generator"包
    • 创建xxx包
    • java -jar mybatis-generator-core-1.3.2.jar -configfile generatorConfig.xml -overwrite

    4、将生成的类、接口、xml拷贝到项目中

    • 将model层生成的类拷贝到项目中的model包里
    •  1 package com.wn.model;
       2 
       3 import java.util.Date;
       4 
       5 public class Book {
       6     private Integer id;
       7 
       8     private String bookName;
       9 
      10     private String author;
      11 
      12     private Date publishDate;
      13 
      14     public Integer getId() {
      15         return id;
      16     }
      17 
      18     public void setId(Integer id) {
      19         this.id = id;
      20     }
      21 
      22     public String getBookName() {
      23         return bookName;
      24     }
      25 
      26     public void setBookName(String bookName) {
      27         this.bookName = bookName == null ? null : bookName.trim();
      28     }
      29 
      30     public String getAuthor() {
      31         return author;
      32     }
      33 
      34     public void setAuthor(String author) {
      35         this.author = author == null ? null : author.trim();
      36     }
      37 
      38     public Date getPublishDate() {
      39         return publishDate;
      40     }
      41 
      42     public void setPublishDate(Date publishDate) {
      43         this.publishDate = publishDate;
      44     }
      45 }
      View Code
    • 将mapper层生成的接口拷贝到项目中的mapper包里
    •  1 package com.wn.mapper;
       2 
       3 import com.wn.model.Book;
       4 
       5 public interface BookMapper {
       6     int deleteByPrimaryKey(Integer id);
       7 
       8     int insert(Book record);
       9 
      10     int insertSelective(Book record);
      11 
      12     Book selectByPrimaryKey(Integer id);
      13 
      14     int updateByPrimaryKeySelective(Book record);
      15 
      16     int updateByPrimaryKey(Book record);
      17 }
      View Code
    • 将生成的xml文件拷贝到src/main/resources/mapper包下
    •  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="com.wn.mapper.BookMapper">
       4     <resultMap id="BaseResultMap" type="com.wn.model.Book">
       5         <id column="id" property="id" jdbcType="INTEGER" />
       6         <result column="book_name" property="bookName" jdbcType="VARCHAR" />
       7         <result column="author" property="author" jdbcType="VARCHAR" />
       8         <result column="publish_date" property="publishDate" jdbcType="TIMESTAMP" />
       9     </resultMap>
      10     <sql id="Base_Column_List">
      11         id, book_name, author, publish_date
      12     </sql>
      13     <select id="selectByPrimaryKey" resultMap="BaseResultMap"
      14         parameterType="java.lang.Integer">
      15         select
      16         <include refid="Base_Column_List" />
      17         from t_book
      18         where id = #{id,jdbcType=INTEGER}
      19     </select>
      20     <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
      21         delete from t_book
      22         where id = #{id,jdbcType=INTEGER}
      23     </delete>
      24     <insert id="insert" parameterType="com.wn.model.Book">
      25         insert into t_book (id, book_name, author,
      26         publish_date)
      27         values (#{id,jdbcType=INTEGER}, #{bookName,jdbcType=VARCHAR},
      28         #{author,jdbcType=VARCHAR},
      29         #{publishDate,jdbcType=TIMESTAMP})
      30     </insert>
      31     <insert id="insertSelective" parameterType="com.wn.model.Book">
      32         insert into t_book
      33         <trim prefix="(" suffix=")" suffixOverrides=",">
      34             <if test="id != null">
      35                 id,
      36             </if>
      37             <if test="bookName != null">
      38                 book_name,
      39             </if>
      40             <if test="author != null">
      41                 author,
      42             </if>
      43             <if test="publishDate != null">
      44                 publish_date,
      45             </if>
      46         </trim>
      47         <trim prefix="values (" suffix=")" suffixOverrides=",">
      48             <if test="id != null">
      49                 #{id,jdbcType=INTEGER},
      50             </if>
      51             <if test="bookName != null">
      52                 #{bookName,jdbcType=VARCHAR},
      53             </if>
      54             <if test="author != null">
      55                 #{author,jdbcType=VARCHAR},
      56             </if>
      57             <if test="publishDate != null">
      58                 #{publishDate,jdbcType=TIMESTAMP},
      59             </if>
      60         </trim>
      61     </insert>
      62     <update id="updateByPrimaryKeySelective" parameterType="com.wn.model.Book">
      63         update t_book
      64         <set>
      65             <if test="bookName != null">
      66                 book_name = #{bookName,jdbcType=VARCHAR},
      67             </if>
      68             <if test="author != null">
      69                 author = #{author,jdbcType=VARCHAR},
      70             </if>
      71             <if test="publishDate != null">
      72                 publish_date = #{publishDate,jdbcType=TIMESTAMP},
      73             </if>
      74         </set>
      75         where id = #{id,jdbcType=INTEGER}
      76     </update>
      77     <update id="updateByPrimaryKey" parameterType="com.wn.model.Book">
      78         update t_book
      79         set book_name = #{bookName,jdbcType=VARCHAR},
      80         author = #{author,jdbcType=VARCHAR},
      81         publish_date = #{publishDate,jdbcType=TIMESTAMP}
      82         where id = #{id,jdbcType=INTEGER}
      83     </update>
      84 </mapper>
      View Code
      • namespace="com.wn.mapper.BookMapper":namespace的值必须是生成的mapper接口的全类名
      • resultMap
        • 作用:对应数据库表与生成的model类的属性对应关系
        • resultMap下的type="com.wn.model.Book"必须是生成的model类的全类名
      • select
        • id:一定是mapper接口的方法名,eg。也就是说,当dao调用mapper接口中的selectByPrimaryKey的时候,该方法会自动调用BookMapper.xml中的id=selectByPrimaryKey下的语句,或者说,BookMapper.xml就是BookMapper接口的实现类
        • resultMap:返回值类型,还有一个是resultType(作业?
        • parameterType:参数(入参)类型
        • 获取入参用#{id}
      • delete
        • id:同上
      • insert
      • update
      • updateSelective
        • <set>标签:做了两件事
          • 添加了set
          • 去掉尾部的","

    四、编写dao、service、controller

    1、BookDao

     1 package com.wn.dao;
     2 
     3 import org.springframework.beans.factory.annotation.Autowired;
     4 import org.springframework.stereotype.Repository;
     5 
     6 import com.wn.mapper.BookMapper;
     7 import com.wn.model.Book;
     8 
     9 @Repository
    10 public class BookDao {
    11     @Autowired
    12     private BookMapper bookMapper;
    13 
    14     // 添加
    15     public boolean add(Book book) {
    16         return bookMapper.insert(book) == 1 ? true : false;
    17     }
    18 
    19     // 显示
    20     public Book selectById(Integer id) {
    21         return bookMapper.selectByPrimaryKey(id);
    22     }
    23 
    24     // 删除
    25     public boolean deleteById(Integer id) {
    26         return bookMapper.deleteByPrimaryKey(id) == 1 ? true : false;
    27     }
    28 
    29     // 修改
    30     public boolean updateById(Book book) {
    31         return bookMapper.updateByPrimaryKey(book) == 1 ? true : false;
    32     }
    33 }

    2、BookService

     1 package com.wn.service;
     2 
     3 import java.util.Date;
     4 
     5 import org.springframework.beans.factory.annotation.Autowired;
     6 import org.springframework.stereotype.Service;
     7 
     8 import com.wn.dao.BookDao;
     9 import com.wn.model.Book;
    10 
    11 @Service
    12 public class BookService {
    13     @Autowired
    14     private BookDao bookDao;
    15 
    16     // 添加
    17     public boolean addBook(String bookName, String author, Date publishDate) {
    18         Book book = new Book();
    19         book.setBookName(bookName);
    20         book.setAuthor(author);
    21         book.setPublishDate(publishDate);
    22 
    23         return bookDao.add(book);
    24     }
    25 
    26     // 显示
    27     public Book getBook(Integer id) {
    28         return bookDao.selectById(id);
    29     }
    30 
    31     // 删除
    32     public boolean deleteBook(Integer id) {
    33         return bookDao.deleteById(id);
    34     }
    35 
    36     // 修改
    37     public boolean updateBook(Integer id, String bookName, String author, Date publishDate) {
    38         Book book = getBook(id);
    39         book.setBookName(bookName);
    40         book.setAuthor(author);
    41         book.setPublishDate(publishDate);
    42 
    43         return bookDao.updateById(book);
    44     }
    45 }

    3、BookController

     1 package com.wn.controller;
     2 
     3 import java.text.ParseException;
     4 import java.util.Date;
     5 
     6 import org.apache.commons.lang3.time.DateFormatUtils;
     7 import org.apache.commons.lang3.time.DateUtils;
     8 import org.springframework.beans.factory.annotation.Autowired;
     9 import org.springframework.format.annotation.DateTimeFormat;
    10 import org.springframework.web.bind.annotation.PathVariable;
    11 import org.springframework.web.bind.annotation.RequestMapping;
    12 import org.springframework.web.bind.annotation.RequestMethod;
    13 import org.springframework.web.bind.annotation.RequestParam;
    14 import org.springframework.web.bind.annotation.RestController;
    15 
    16 import com.wn.model.Book;
    17 import com.wn.resp.BookResp;
    18 import com.wn.service.BookService;
    19 
    20 @RestController
    21 @RequestMapping("/book")
    22 public class BookController {
    23     @Autowired
    24     private BookService bookService;
    25 
    26     // 添加
    27     @RequestMapping(value = "/add", method = RequestMethod.POST)
    28     public boolean addBook(@RequestParam("bookName") String bookName, @RequestParam("author") String author,
    29             @RequestParam("publishDate") String publishDateStr) {
    30         try {
    31             Date publishDate = DateUtils.parseDate(publishDateStr, "yyyy-MM-dd HH:mm:ss");
    32             return bookService.addBook(bookName, author, publishDate);
    33         } catch (ParseException e) {
    34             e.printStackTrace();
    35         }
    36         return false;
    37     }
    38 
    39     @RequestMapping(value = "/add2", method = RequestMethod.POST)
    40     public boolean addBook2(@RequestParam("bookName") String bookName, @RequestParam("author") String author,
    41             @RequestParam("publishDate") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date publishDate) {
    42         return bookService.addBook(bookName, author, publishDate);
    43     }
    44 
    45     // 显示
    46     @RequestMapping(value = "/{id}", method = RequestMethod.GET)
    47     public BookResp getBook(@PathVariable("id") Integer id) {
    48         Book book = bookService.getBook(id);
    49         String dateStr = DateFormatUtils.format(book.getPublishDate(), "yyyy-MM-dd HH:mm:ss");
    50         BookResp resp = new BookResp();
    51         resp.setId(book.getId());
    52         resp.setAuthor(book.getAuthor());
    53         resp.setBookName(book.getBookName());
    54         resp.setPublishDate(dateStr);
    55         return resp;
    56     }
    57 
    58     // 删除 被注释的是删除方法一
    59     // @RequestMapping(value = "/delete", method = RequestMethod.DELETE)
    60     // public boolean deleteBook(@RequestParam("id") Integer id) {
    61     // return bookService.deleteBook(id);
    62     // }
    63 
    64     @RequestMapping(value = "/delete/{id}", method = RequestMethod.DELETE)
    65     public boolean deleteBook(@PathVariable("id") Integer id) {
    66         return bookService.deleteBook(id);
    67     }
    68 
    69     // 修改
    70     @RequestMapping(value = "/update", method = RequestMethod.PUT)
    71     public boolean updateBook(@RequestParam("id") Integer id, @RequestParam("bookName") String bookName,
    72             @RequestParam("author") String author,
    73             @RequestParam("publishDate") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date publishDate) {
    74         return bookService.updateBook(id, bookName, author, publishDate);
    75     }
    76 }

    为了解决日期问题

     1 package com.wn.resp;
     2 
     3 public class BookResp {
     4     private Integer id;
     5 
     6     private String bookName;
     7 
     8     private String author;
     9 
    10     private String publishDate;
    11 
    12     public Integer getId() {
    13         return id;
    14     }
    15 
    16     public void setId(Integer id) {
    17         this.id = id;
    18     }
    19 
    20     public String getBookName() {
    21         return bookName;
    22     }
    23 
    24     public void setBookName(String bookName) {
    25         this.bookName = bookName == null ? null : bookName.trim();
    26     }
    27 
    28     public String getAuthor() {
    29         return author;
    30     }
    31 
    32     public void setAuthor(String author) {
    33         this.author = author == null ? null : author.trim();
    34     }
    35 
    36     public String getPublishDate() {
    37         return publishDate;
    38     }
    39 
    40     public void setPublishDate(String publishDate) {
    41         this.publishDate = publishDate;
    42     }
    43 }

    五、浏览器或postman测试(举例用postman测试)

    1、添加

    成功会返回true

    2、显示

    成功返回json串:

    1 {
    2   "id": 3,
    3   "bookName": "PE",
    4   "author": "dawei",
    5   "publishDate": "2014-11-08 11:11:11"
    6 }

    3、删除

    成功返回true,另一种方法如下:

    4、修改

  • 相关阅读:
    SQlServer 从系统表 sysobjects 中获取数据库中所有表或存储过程等对象
    Win7 Print Spooler服務自动关闭
    C# 数据流操作 Stream 相关
    GRUB引导故障解决
    RAID配置层+配额
    磁盘一
    权限管理及归属
    cenos7关闭防火墙 安全机制
    linux用户管理-----账号管理和权限归属设置
    yum 仓构建,源代码安装
  • 原文地址:https://www.cnblogs.com/wangna----558169/p/6056596.html
Copyright © 2011-2022 走看看