发表于: 2017-09-01 22:31:15

1 997


一、今日完成

参考师兄的实例,使用IDEA创建一个基于SSM框架的REST风格 maven web项目:

1)向pom.xml中添加<properties>元素,引入jstl、javaee-api、junit、spring-core、spring-web、spring-oxm、spring-tx、spring-jdbc、spring-webmvc、spring-context、spring-context-support、spring-aop、spring-test、mybatis、mybatis-spring、mysql-connector-java、commons-dbcp2、log4j、jackson-mapper-asl、jackson-core、jackson-databind、commons-fileupload、commons-codec等依赖项,配置maven-compiler-plugin、jetty-maven-plugin、mybatis-generator-maven-plugin等插件;

2)在src/main/java/com.jnshu.java_task02/domain目录下,创建model类

定义成员变量分别对应表中字段,定义model类的构造方法、toString方法和setter与getter方法;

3)在src/main/java/com.jnshu.java_task02/domain目录下,创建DAO组件,定义对数据库的CRUD等操作的方法;

@Component      //定义被Spring 管理的Beans
@Repository         //定义DAO层Bean
public interface PersonDao {

void  insertOne (Person one);

void  deleteOne (long id);

void  updateOne(Person one);

Person selectOne(long id);

List<Person> findOne(String name);

}

在mybatis框架下,DAO层也被称为Mapper层,通过SQL语句的映射完成CRUD操作。这里的DAO层组件其实不起作用。但是因为参考实例中有调用DAO类方法,所以依旧沿用创建DAO组件。

4)在src/main/resource目录下创建Spring MVC和mybatis的配置文件jdbc.properties、springmvc-config.xml和spring-mybatis文件

driverClasss=com.mysql.jdbc.Driver
jdbcUrl=jdbc:mysql://localhost:3306/task01?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull
username=acer
password=xyz

#定义初始连接数
initialSize=0
#定义最大连接数
maxActive=20
#定义最大空闲
maxIdle=20
#定义最小空闲
minIdle=1
#定义最长等待时间
maxWait=60000


<?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-4.0.xsd
                         http://www.springframework.org/schema/context
                         http://www.springframework.org/schema/context/spring-context-4.0.xsd">

<!--元素 <context:component-scan/>的作用是扫描类路径中的类,通过相关联的注解创建Bean并注入依赖项-->
   <context:component-scan base-package="com.jnshu.java_task02"/>

<!--避免IE执行AJAX时,返回JSON出现下载文件 -->
   <bean id="mappingJacksonHttpMessageConverter"
         class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
</list>
</property>
</bean>

<!-- 启动SpringMVC的注解功能,完成请求和注解POJO的映射 -->
   <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<ref bean="mappingJacksonHttpMessageConverter"/> <!-- JSON转换器 -->
           </list>
</property>
</bean>

<!-- 定义跳转的文件的前后缀 ,视图模式配置 -->
   <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp"/>
</bean>

<!-- 文件上传配置 -->
   <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 默认编码 -->
       <property name="defaultEncoding" value="UTF-8"/>
<!-- 上传文件大小限制为31M,31*1024*1024 -->
       <property name="maxUploadSize" value="32505856"/>
<!-- 内存中的最大值 -->
       <property name="maxInMemorySize" value="4096"/>
</bean>

</beans>

 <!--元素 <context:component-scan/>的作用是扫描类路径中的类,通过相关联的注解创建Bean并注入依赖项-->
   <context:component-scan base-package="com.jnshu.java_task02"/>

<!--避免IE执行AJAX时,返回JSON出现下载文件 -->
   <bean id="mappingJacksonHttpMessageConverter"
         class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
</list>
</property>
</bean>

<!-- 启动SpringMVC的注解功能,完成请求和注解POJO的映射 -->
   <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<ref bean="mappingJacksonHttpMessageConverter"/> <!-- JSON转换器 -->
           </list>
</property>
</bean>

<!-- 定义跳转的文件的前后缀 ,视图模式配置 -->
   <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp"/>
</bean>

<!-- 文件上传配置 -->
   <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 默认编码 -->
       <property name="defaultEncoding" value="UTF-8"/>
<!-- 上传文件大小限制为31M,31*1024*1024 -->
       <property name="maxUploadSize" value="32505856"/>
<!-- 内存中的最大值 -->
       <property name="maxInMemorySize" value="4096"/>
</bean>

</beans>

5)在src/main/resource目录下创建Mapper XML配置文件,使用select、insert、update、delete元素映射SQL语句:

<!--为这个mapper制定一个为一个namespace,包名+sql映射文件名-->
<mapper namespace="com.jnshu.java_task02.dao.PersonDao">

<!--插入一条记录-->
   <insert id="insertOne"
           parameterType="com.jnshu.java_task02.domain.Person"
           flushCache="false"
           statementType="PREPARED"
           timeout="20"
           useGeneratedKeys="true"
           keyProperty="id">
INSERT INTO person (id ,name, gender, birth_date, country)
VALUES (#{id}, #{name}, #{gender}, #{birth_date}, #{country})
</insert>

<!--删除一条记录-->
   <delete id="deleteOne"
           parameterType="long"
           flushCache="false"
           statementType="PREPARED"
           timeout="20">
DELETE FROM person WHERE id=#{id}
       </delete>

<!--修改一条记录-->
   <update id="updateOne"
           parameterType="com.jnshu.java_task02.domain.Person"
           flushCache="false"
           statementType="PREPARED"
           timeout="20">
UPDATE person
SET name=#{name}, gender=#{gender}, birth_date=#{birth_date}, country=#{country}
       WHERE id=#{id}
       </update>

<!--查找一条记录-->
   <select id="seleteOne"
           parameterType="long"
           resultType="com.jnshu.java_task02.domain.Person"
           flushCache="false"
           timeout="1000"
           statementType="PREPARED">
SELECT *  FROM person WHERE id=#{id}
       </select>

<!--根据姓名查找相关记录-->
   <select id="findOne"
           parameterType="String"
           resultType="com.jnshu.java_task02.domain.Person"
           timeout="1000">
SELECT * FROM person WHERE name=#{name}
       </select>

</mapper>

4)在src/main/resource目录下创建logging配置文件,输出DEBU及以上级别loggings到控制台和项目根目录下的logs/DEBUG.log;


二、明日计划

完成定义其他组件的创建与配置,最后使用jetty运行该web application,最后利用Postman进行测试


三、遇到的问题

对Java  EE模型各层组件的作用以及SSM的框架的流程一知半解,定义service类下的方法时候一直报错,计划明天先把代码跑通,然后再总结SSM框架的流程。


四、收获

学会针对数据库CRUD操作的Spring MVC与mybatis 的XML配置文件常用设置。


禅道:http://task.ptteng.com/zentao/task-view-9932.html

任务开始:8月19日

任务结束:计划9月4日提交任务。

目前看,无延期风险。


返回列表 返回列表
评论

    分享到