发表于: 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日提交任务。
目前看,无延期风险。
评论