Maven搭建SpringMVC+Spring+MyBatis框架
来源:互联网 发布:有机玻璃 亚克力 知乎 编辑:程序博客网 时间:2024/05/21 21:36
一. 框架详情
Spring 是一个轻量级的Java开发框架,它是为了解决企业应用开发的复杂性而创建的。Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。 简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。
SpringMVC 属于SpringFrameWork的后续产品,分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。
MyBatis 是一个基于Java的持久层框架。MyBatis提供的持久层框架包括SQL Maps和Data Access Objects(DAO)它消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java映射成数据库中的记录。
二. 创建Maven项目
1.项目结构如下
2. Maven引入需要的JAR包
<properties><spring.version>3.2.8.RELEASE</spring.version><json-version>1.8.4</json-version><xml-version>1.4.7</xml-version><!-- mysql驱动版本号 --><mysql-driver.version>5.1.29</mysql-driver.version><mybatis.version>3.2.8</mybatis.version><slf4j.version>1.7.18</slf4j.version><log4j.version>1.2.17</log4j.version> </properties> <dependencies> <!-- 添加jstl依赖 --> <dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>javax</groupId> <artifactId>javaee-api</artifactId> <version>7.0</version> </dependency> <!-- 添加junit4依赖 --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> </dependency> <!-- 添加spring核心依赖 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</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-oxm</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-jdbc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</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-test</artifactId> <version>${spring.version}</version> </dependency><!-- 添加mybatis依赖 --><dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>${mybatis.version}</version></dependency><!-- 添加mybatis/spring整合包依赖 --><dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.2.2</version></dependency><!-- 添加mysql驱动依赖 --><dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>${mysql-driver.version}</version></dependency><!-- 添加数据库连接池依赖 --><dependency> <groupId>commons-dbcp</groupId> <artifactId>commons-dbcp</artifactId> <version>1.2.2</version></dependency><dependency> <groupId>com.mchange</groupId> <artifactId>c3p0</artifactId> <version>0.9.2.1</version></dependency><!-- 添加fastjson --><dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.1.41</version></dependency><!-- 添加日志相关jar包 --><dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>${log4j.version}</version></dependency><dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>${slf4j.version}</version></dependency><dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>${slf4j.version}</version></dependency><!-- log end --><!-- 映入JSON --><dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-mapper-asl</artifactId> <version>1.9.13</version></dependency><!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core --><dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.8.0</version></dependency><!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind --><dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.8.0</version></dependency><dependency> <groupId>com.fasterxml.jackson.jaxrs</groupId> <artifactId>jackson-jaxrs-json-provider</artifactId> <version>2.4.1</version></dependency><dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.1</version></dependency><dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.4</version></dependency><dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> <version>1.9</version></dependency><dependency> <groupId>javax.ws.rs</groupId> <artifactId>jsr311-api</artifactId> <version>1.0</version></dependency><dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <version>2.6</version></dependency><dependency> <groupId>org.codehaus.groovy</groupId> <artifactId>groovy-all</artifactId> <version>2.2.2</version></dependency><dependency> <groupId>net.sf.json-lib</groupId> <artifactId>json-lib</artifactId> <version>2.4</version> <classifier>jdk15</classifier></dependency><dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.0</version></dependency><dependency> <groupId>commons-httpclient</groupId> <artifactId>commons-httpclient</artifactId> <version>3.1</version></dependency><dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.3.6</version></dependency> </dependencies> <build> <pluginManagement> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>2.4</version> <configuration> <warSourceDirectory>src/main/webapp</warSourceDirectory> <warName>Spring4MVCRestServiceDemo</warName> <failOnMissingWebXml>false</failOnMissingWebXml> </configuration> </plugin> </plugins> </pluginManagement> <finalName>com.ttook.springmvc</finalName> </build>
3.创建model
创建一个model包并在其下创建一个Person.Java文件。
package com.ttook.springmvc;public class Person { private static final long serialVersionUID = -3727979363425652597L;private int uid; private String uname; private String usex; private int uage; private String uaddress;public Person() { super();} public Person(int uid, String uname, String usex, int uage, String uaddress) { this.uid = uid; this.uname = uname; this.usex = usex; this.uage = uage; this.uaddress = uaddress; } public int getUid() { return uid; } public void setUid(int uid) { this.uid = uid; } public String getUname() { return uname; } public void setUname(String uname) { this.uname = uname; } public String getUsex() { return usex; } public void setUsex(String usex) { this.usex = usex; } public int getUage() { return uage; } public void setUage(int uage) { this.uage = uage; } public String getUaddress() { return uaddress; } public void setUaddress(String uaddress) { this.uaddress = uaddress; }}
4.创建dao接口
创建一个包dao,并在其下创建一个PersonDao.java文件作为DAO接口。
package com.ttook.springmvc.dao; import com.ttook.springmvc.Person; import org.springframework.stereotype.Repository; @Repository public interface PersonDao { public Person queryPersonById(int id) ; }
5.实现dao接口
在resource/mappering包下创建一个PersonMapper.xml文件作为上一步创建的DAO接口的实现。
<?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.ttook.springmvc.dao.PersonDao"> <select id="queryPersonById" parameterType="java.lang.Integer" resultType="com.ttook.springmvc.Person"> SELECT * FROM testTable WHERE uid = #{uid} </select></mapper>
6. 创建service接口
package com.ttook.springmvc.service;import com.ttook.springmvc.Person;import java.util.List;public interface IPersonServices { public Person queryPersonById(int id); public List<Person> queryPersonAll(int id);}
7. 实现service接口
package com.ttook.springmvc.service;import com.ttook.springmvc.Person;import com.ttook.springmvc.dao.PersonDao;import org.apache.log4j.Logger;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import java.util.List;@Servicepublic class IPersonServicesImpl implements IPersonServices { private static final Logger logger = Logger.getLogger(IPersonServicesImpl.class); @Autowired PersonDao personDao; public Person queryPersonById(int id) { logger.info("queryPersonById === " + id); Person person = personDao.queryPersonById(id); return person; } public List<Person> queryPersonAll(int id) { return null; }}
8. 创建controller接口
package com.ttook.springmvc.controller;import com.ttook.springmvc.Person;import org.springframework.stereotype.Repository;import org.springframework.web.bind.annotation.*;import javax.ws.rs.core.MediaType;@Repositorypublic interface IPersonController { @RequestMapping(value = "/hello", produces = "text/plain;charset=UTF-8") public @ResponseBody String hello();@RequestMapping(value = "/say/{msg}", produces = "application/json;charset=UTF-8")public @ResponseBodyString say(@PathVariable(value = "msg") String msg);@RequestMapping(value = "/getPerson/{id:\\d+}", method = RequestMethod.GET, produces = "application/json;charset=UTF-8")public @ResponseBodyString getPerson(@PathVariable("id") int id);@RequestMapping(value = "/deletePerson/{id:\\d+}", method = RequestMethod.DELETE)public @ResponseBody Object deletePerson(@PathVariable("id") int id) ;/** * 推荐使用,这种可以解决绝大多数问题 * @param person * @return */@RequestMapping(value = "/addPerson", method = RequestMethod.POST, produces = {MediaType.APPLICATION_JSON,"application/json;charset=UTF-8"}, consumes = {MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})public String addPerson(Person person);@RequestMapping(value = "/updatePerson", method = RequestMethod.PUT)public @ResponseBody Object updatePerson(@RequestBody Person person);}
9. 实现controller接口
package com.ttook.springmvc.controller;import com.ttook.springmvc.Person;import com.ttook.springmvc.service.IPersonServices;import net.sf.json.JSONObject;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestBody;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.ResponseBody;import org.apache.log4j.Logger;import javax.annotation.Resource;@Controller@RequestMapping("/test")public class IPersonControllerImpl implements IPersonController { /** 日志实例 */ private static final Logger logger = Logger.getLogger(IPersonControllerImpl.class); @Autowired IPersonServices iPersonServices; public @ResponseBody String hello() { logger.info("hello........"); return "你好!hello"; } public @ResponseBody String say(@PathVariable(value = "msg") String msg) { return "{\"msg\":\"you say:'" + msg + "'\"}"; } public @ResponseBody String getPerson(@PathVariable("id") int id) { Person person=iPersonServices.queryPersonById(id); JSONObject jsonObject = JSONObject.fromObject(person); logger.info(jsonObject); logger.info(jsonObject.toString()); return jsonObject.toString(); } public Object deletePerson(@PathVariable("id") int id) { logger.info("删除人员信息id=" + id); JSONObject jsonObject = new JSONObject(); jsonObject.put("msg", "删除人员信息成功"); return jsonObject; } public @ResponseBody String addPerson(@RequestBody Person person) { logger.info("注册人员信息成功id=" + person.getUid()); JSONObject jsonObject = new JSONObject(); jsonObject.put("msg", "注册人员信息成功"); return jsonObject.toString(); } public @ResponseBody Object updatePerson(@RequestBody Person person) { logger.info("更新人员信息id=" + person.getUid()); JSONObject jsonObject = new JSONObject(); jsonObject.put("msg", "更新人员信息成功"); return jsonObject.toString(); }}
5. 相关配置文件配置,整合SSM框架
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 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>springMVCRestful</display-name> <!--JDBC--> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- 防止Spring内存溢出监听器 --> <listener> <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class> </listener> <!-- spring mvc servlet--> <servlet> <servlet-name>springMVCRestful</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springMVC.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springMVCRestful</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <!-- 如果有乱码我们则需要配置字符编码集的过滤器来防止乱码问题 --> <!-- 编码过滤器 --> <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>utf-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list></web-app>
spring.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:tx="http://www.springframework.org/schema/tx" 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/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <context:component-scan base-package="com.ttook.springmvc"/> <!-- 第一种方式:加载一个properties文件 --> <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location" value="classpath:jdbc.properties"/> </bean> <!-- 配置数据源 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="${driverClasss}"/> <property name="url" value="${jdbcUrl}"/> <property name="username" value="${username}"/> <property name="password" value="${password}"/> <!-- 初始化连接大小 --> <property name="initialSize" value="${initialSize}"></property> <!--连接池最大数量 --> <property name="maxActive" value="${maxActive}"></property> <!--连接池最大空闲 --> <property name="maxIdle" value="${maxIdle}"></property> <!--连接池最小空闲 --> <property name="minIdle" value="${minIdle}"></property> <!--获取连接最大等待时间 --> <property name="maxWait" value="${maxWait}"></property> </bean> <!-- mybatis和spring完美整合,不需要mybatis的配置映射文件 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> <!-- 自动扫描mapping.xml文件 --> <property name="mapperLocations" value="classpath:mapping/PersonMapper.xml"></property> </bean> <!-- DAO接口所在包名,Spring会自动查找其下的类 --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.ttook.springmvc.dao"/> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property> </bean> <!-- (事务管理)transaction manager, use JtaTransactionManager for global tx --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"/> </bean> <!-- (事务管理)transaction manager, use JtaTransactionManager for global tx --> <tx:annotation-driven transaction-manager="transactionManager"/></beans>
springMVC.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-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> <!-- 初始化com.ttook.springmvc目录下面的bean --> <context:component-scan base-package="com.ttook.springmvc"></context:component-scan> <!--避免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><!--配置spring MVC的注解 驱动 --><mvc:annotation-driven/></beans>
jdbc.properties文件
driverClasss=com.mysql.jdbc.DriverjdbcUrl=jdbc:mysql://192.168.1.117:3306/数据库名?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNullusername=账号password=密码#定义初始连接数initialSize=0#定义最大连接数maxActive=20#定义最大空闲maxIdle=20#定义最小空闲minIdle=1#定义最长等待时间maxWait=60000
6. 请求接口地址并返回json数据
请求地址:http://localhost:8088/lxf/test/getPerson/1001返回值: {"uaddress":"北京","uage":27,"uid":1001,"uname":"XXX","usex":"男"}
0 0
- springmvc+spring+mybatis+maven框架搭建
- Maven+Spring+SpringMVC+MyBatis框架的搭建
- Maven搭建SpringMVC+Spring+MyBatis框架
- Maven搭建SpringMVC+Spring+MyBatis框架
- Maven搭建SpringMVC+Spring+MyBatis框架
- Spring+SpringMVC+Mybatis+Maven搭建的框架
- maven+springMVC+mybatis框架搭建
- maven+springMVC+mybatis框架搭建
- Maven搭建SpringMVC+Mybatis框架
- maven spring springmvc mybatis搭建
- MAVEN+spring+springmvc+mybatis+mysql框架搭建+git管理
- Maven+Spring+SpringMVC+MyBatis框架的搭建(开篇)
- Maven+Spring+SpringMVC+MyBatis框架的搭建(一)
- Maven+Spring+SpringMVC+MyBatis框架的搭建(二)
- 手把手Maven搭建SpringMVC+Spring+MyBatis框架(超级详细版)
- intellij16用maven搭建spring+springmvc+mybatis框架
- 手把手Maven搭建SpringMVC+Spring+MyBatis框架(超级详细版)
- 手把手Maven搭建SpringMVC+Spring+MyBatis框架(超级详细版)
- C++第4次作业
- 详解c++指针的指针和指针的引用
- 十分钟让你明白Objective-C的语法(和Java、C++的对比)
- PowerHA 6.1 配置超级详细手册
- 实数转化为字符串
- Maven搭建SpringMVC+Spring+MyBatis框架
- 一个Android RecyclerView万能分割线
- jquery.validationEngine 自定义验证的使用方法
- LCD设备驱动(一)
- Android手机控制树莓派制作的四驱小车
- Java中Error与Exception的区别
- 探索使用JAVA将汉字解析成拼音
- 每日一题 No.28 main函数的参数学习
- 动态规划----树型DP----树的最大独立集