本人大三,第一次写博客,还有许多不懂得地方,如果有不当的地方 欢迎各位指教

项目地址:https://github.com/qq571831158/Springmvc-spring-mybatisDemo

首先看一张目录结构图:

创建步骤:

1.创建maven  webapp工程,

创建完后的目录结构为:

2.添加项目依赖(添加jar包)

需要的jar包:

spring-webmvc,

spring-test,

spring-orm,

commons-dbcp,

mybatis,

mybatis-spring,

mysql-connector-java,

commons-fileupload,

jstl,jackson-core,

jackson-databind,

jackson-mapper-asl,

cors-fiflter,(这个包为跨域访问的,不是必须的,前后端分离,为了方便测试,所以加上了。)

log4j,

slf4j-log4j12

添加这些依赖到pom.xml中,可以去这个网站搜索添加到maven:http://mvnrepository.com(PS:最后会发项目链接,大家也可以去我项目的pom.xml里面拷贝)

3、创建数据库:

下面是我的建表语句:

CREATE TABLE USERINFO(

`id` int NOT NULL AUTO_INCREMENT,

`username` varchar(50) NOT NULL,

`password` varchar(50) NOT NULL,

`nickname` varchar(50),

`user_picture` varchar(100),

`islogin` int,

`isactive` int,

`last_modeify` timestamp NULL,

`create_date` timestamp NULL,

`create_ip` varchar(50),

KEY(id),

PRIMARY KEY(username)

);

4.配置mybatis的generator插件:

这个插件可以自动生成mybatis的mapper,model,dao

在pom.xml的 build节点下添加如下:

 <!--mybatis 自动生成dao,model,mapper,generaotr插件--><plugins><plugin><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-maven-plugin</artifactId><version>1.3.2</version><configuration><verbose>true</verbose><overwrite>true</overwrite></configuration></plugin></plugins>

如图所示:

然后在目录结构下的src/main/resources中创建generatorConfig.xml:

此文件配置的是需要自动生成的文件的位置等信息,不懂得自行百度。

文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfigurationPUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN""http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"><generatorConfiguration><!--引入配置文件--><properties resource="config.properties"></properties><!-- 数据库驱动包位置 --><classPathEntry location="${jdbc.driverClassLocation}"/><context id="default" targetRuntime="MyBatis3"><commentGenerator><property name="suppressDate" value="true"/><property name="suppressAllComments" value="true"/></commentGenerator><!-- 数据库链接URL、用户名、密码 --><jdbcConnectiondriverClass="${jdbc.driver}"connectionURL="${jdbc.url}"userId="${jdbc.username}"password="${jdbc.password}"></jdbcConnection><!-- 非必需,类型处理器,在数据库类型和java类型之间的转换控制--><javaTypeResolver><property name="forceBigDecimals" value="false"/></javaTypeResolver><!-- Model模型生成器,用来生成含有主键key的类,记录类 以及查询Example类targetPackage     指定生成的model生成所在的包名targetProject     指定在该项目下所在的路径--><javaModelGenerator targetPackage="com.ch.model"targetProject="src/main/java"><!-- 是否允许子包,即targetPackage.schemaName.tableName --><property name="enableSubPackages" value="true"/><!-- 是否对model添加 构造函数 --><property name="constructorBased" value="true"/><!-- 是否对类CHAR类型的列的数据进行trim操作 --><property name="trimStrings" value="true"/><!-- 建立的Model对象是否 不可改变  即生成的Model对象不会有 setter方法,只有构造方法 --><property name="immutable" value="false"/></javaModelGenerator><!--Mapper映射文件生成所在的目录 为每一个数据库的表生成对应的SqlMap文件 --><sqlMapGenerator targetPackage="com.ch.mapping"targetProject="src/main/java"><property name="enableSubPackages" value="true"/></sqlMapGenerator><!-- 生成DAO的包名和位置 --><javaClientGenerator type="XMLMAPPER" targetPackage="com.ch.dao"targetProject="src/main/java"><property name="enableSubPackages" value="true"/></javaClientGenerator><!-- 要生成那些表(更改tableName和domainObjectName就可以) --><table tableName="USERINFO" domainObjectName="Userinfo"enableCountByExample="false" enableUpdateByExample="false"enableDeleteByExample="false" enableSelectByExample="false"selectByExampleQueryId="false"/></context>
</generatorConfiguration>

在resources目录下继续创建config.properties;此文件是generator.xml中用到的数据库配置。内容如下:
#jdbc 连接对象
#mysql jar文件位置
jdbc.driverClassLocation = /Users/apple/.m2/repository/mysql/mysql-connector-java/5.1.34/mysql-connector-java-5.1.34.jarjdbc.driver = com.mysql.jdbc.Driver
jdbc.url = jdbc:mysql://localhost:3306/ssmtest
jdbc.username = root
jdbc.password = 689571

接下来,点击idea右上角的

选择Edit Configurations,进入后,点击左上角的➕,选择maven

选择后,在Name出输入名字,任意都可以

在command line 中输入:

mybatis-generator:generate -e

然后点击Apply,OK.

接着,到src/main目录下,新建一个java目录,然后在此目录上点击右键把此目录作Sources Root,做完后,你会发现java目录变成了蓝色,如图:

然后,点击右上角的绿色小三角

在看看你的java目录下,

发现,自动生成了,mapping,model,dao的interface,致此,mybatis的文件生成完成。

5.整合spring,mybatis:

在resources目录下创建beans.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:mvc="http://www.springframework.org/schema/mvc"xmlns:context="http://www.springframework.org/schema/context"xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-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/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd "><!--载入配置文件--><context:property-placeholder location="classpath:config.properties"/><!--自动扫描service--><context:component-scan base-package="com.ch.service,com.ch.dao"/><!--mybatis数据源,这里用的是apache的dbcp--><bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"><property name="driverClassName" value="${jdbc.driver}"/><property name="url" value="${jdbc.url}"/><property name="username" value="${jdbc.username}"/><property name="password" value="${jdbc.password}"/><property name="testWhileIdle" value="true"/><property name="testOnBorrow" value="true"/><property name="testOnReturn" value="false"/><property name="timeBetweenEvictionRunsMillis" value="30000"/><property name="maxActive" value="30"/><property name="minIdle" value="5"/><property name="initialSize" value="5"/></bean><!--mybatis 核心类--><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource"/><property name="configLocation" value="classpath:spring-mybatis.xml"/><!--配置mybatis映射文件mapper的位置,如果配置文件在src/main/java目录下,maven默认不会编译,参考我pom.xml的,build,当然也可以放在resources目录下,那样就可以访问到--><property name="mapperLocations" value="classpath*:com/ch/mapping/*.xml"/></bean><!--事物管理--><bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource"/></bean><!--事物通知--><tx:advice id="txAdvice" transaction-manager = "txManager"><tx:attributes><tx:method name="insert*" propagation="REQUIRED"/><tx:method name="update*" propagation="REQUIRED"/><tx:method name="delete*" propagation="REQUIRED"/><tx:method name="save*" propagation="REQUIRED"/><tx:method name="find*" read-only="true"/><tx:method name="get*" read-only="true"/></tx:attributes></tx:advice>
</beans>

在创建spring-mybatis.xml,mybatis的配置文件为空,此处创建是为了留作以后扩展:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
</configuration>

至此,spring,mybatis整合完毕。

6.在java目录下创建controller包,service包,bean包

7.整合springmvc:在resources目录下创建dispatcher-servlet.xml:
<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"xmlns:tx="http://www.springframework.org/schema/tx" xmlns:util="http://www.springframework.org/schema/util"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd"><!--可扫描注解的包--><mvc:annotation-driven /><context:component-scan base-package="com.ch.controller"/><!--视图解析器--><bean id="jspViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"><!--<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>--><property name="prefix" value="/WEB-INF/"/><property name="suffix" value=".jsp"/></bean><!--消息转换器--><bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"><property name="supportedMediaTypes"><list><value>application/json;charset=UTF-8</value><value>text/html;charset=UTF-8</value></list></property></bean><bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"><property name="messageConverters"><list><ref bean="mappingJacksonHttpMessageConverter"/></list></property></bean><!--文件上传--><bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"><property name="maxUploadSize" value="10485760"/><property name="defaultEncoding" value="UTF-8"/></bean>
</beans>

然后修改/WEB-INF/web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee"xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"id="WebApp_ID" version="3.0"><display-name>Archetype Created Web Application</display-name><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:beans.xml</param-value></context-param><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><servlet><servlet-name>dispatcher-servlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:dispatcher-servlet.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>dispatcher-servlet</servlet-name><url-pattern>*.do</url-pattern></servlet-mapping><!-- 3.编码过滤器,解决中文乱码 --><filter><filter-name>SpringEncoding</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></filter><filter-mapping><filter-name>SpringEncoding</filter-name><url-pattern>/*</url-pattern></filter-mapping><!--CORS跨域访问,不是必须,此处为方便前断测试,部署时最好删去--><filter><filter-name>CORS</filter-name><filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class><async-supported>true</async-supported><init-param><param-name>cors.allowOrigin</param-name><param-value>*</param-value></init-param><init-param><param-name>cors.supportedMethods</param-name><param-value>GET, POST, HEAD, PUT, DELETE</param-value></init-param><init-param><param-name>cors.supportedHeaders</param-name><param-value>Accept, Origin, X-Requested-With, Content-Type, Last-Modified</param-value></init-param><init-param><param-name>cors.exposedHeaders</param-name><param-value>Set-Cookie</param-value></init-param><init-param><param-name>cors.supportsCredentials</param-name><param-value>true</param-value></init-param></filter><filter-mapping><filter-name>CORS</filter-name><url-pattern>/*</url-pattern></filter-mapping>
</web-app>

至此,springmvc,spring整合完毕。

8.在dao包下创建impl包。然后在impl包下创建UserinfoMapperImpl继承SqlSessionDaoSupport实现UserinfoMapper
package com.ch.dao.impl;import com.ch.dao.UserinfoMapper;
import com.ch.model.Userinfo;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.support.SqlSessionDaoSupport;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;/*** Created by apple on 2017/4/25.*/
@Repository
public class UserinfoMapperImpl extends SqlSessionDaoSupport implements UserinfoMapper {@Autowiredpublic void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory){super.setSqlSessionFactory(sqlSessionFactory);}public int deleteByPrimaryKey(String username) {return 0;}public int insert(Userinfo record) {return 0;}public int insertSelective(Userinfo record) {return 0;}public Userinfo selectByPrimaryKey(String username) {return this.getSqlSession().selectOne("com.ch.dao.UserinfoMapper.selectByPrimaryKey",username);}public int updateByPrimaryKeySelective(Userinfo record) {return 0;}public int updateByPrimaryKey(Userinfo record) {return 0;}
}


千万别忘了在类上加上@Repository注解


9.新建service:在service包下新建UserinfoService,因为处理的业务简单,这里直接拷贝UserinfoMapper的内容:
package com.ch.service;import com.ch.model.Userinfo;/*** Created by apple on 2017/4/25.*/
public interface UserinfoService {int deleteByPrimaryKey(String username);int insert(Userinfo record);int insertSelective(Userinfo record);Userinfo selectByPrimaryKey(String username);int updateByPrimaryKeySelective(Userinfo record);int updateByPrimaryKey(Userinfo record);
}

继续在service包下新建impl包,在impl包中新建UserinfoServiceImpl实现UserinfoSerice:
package com.ch.service.impl;import com.ch.dao.UserinfoMapper;
import com.ch.model.Userinfo;
import com.ch.service.UserinfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;/*** Created by apple on 2017/4/25.*/
@Service
public class UserinfoServiceImpl implements UserinfoService {@AutowiredUserinfoMapper userinfoMapper;public int deleteByPrimaryKey(String username) {return 0;}public int insert(Userinfo record) {return 0;}public int insertSelective(Userinfo record) {return 0;}public Userinfo selectByPrimaryKey(String username) {return userinfoMapper.selectByPrimaryKey(username);}public int updateByPrimaryKeySelective(Userinfo record) {return 0;}public int updateByPrimaryKey(Userinfo record) {return 0;}
}

千万别忘了在类上加上@Service注解

10.创建bean:在bean包下新建类OBeanBase,此类为返回json数据的载体:
package com.ch.bean;/*** Created by apple on 2017/4/25.*/
public class OBeanBase {private String code;private String message;private Object contents;public String getCode() {return code;}public void setCode(String code) {this.code = code;}public String getMessage() {return message;}public void setMessage(String message) {this.message = message;}public Object getContents() {return contents;}public void setContents(Object contents) {this.contents = contents;}public void setInfo(String code,String message){this.message = message;this.code = code;}public OBeanBase(){}
}

继续在该包下创建类UserLoginIBean,此类为请求json数据自动转换的类
package com.ch.bean;/*** Created by apple on 2017/4/25.*/
public class UserLoginIBean {private String username;private String password;public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}
}

11.创建controller:
package com.ch.controller;import com.ch.bean.OBeanBase;
import com.ch.bean.UserLoginIBean;
import com.ch.model.Userinfo;
import com.ch.service.UserinfoService;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;/*** Created by apple on 2017/4/25.*/
@Controller
@RequestMapping(value = "/user")
public class UserinfoController {@AutowiredUserinfoService userinfoService;@ResponseBody@RequestMapping(value = "/login", method = RequestMethod.POST)public OBeanBase doLogin(@RequestBody UserLoginIBean userLoginIBean) {Logger logger = Logger.getLogger("DAO");OBeanBase carrier = new OBeanBase();Userinfo userinfo = userinfoService.selectByPrimaryKey(userLoginIBean.getUsername());if (userinfo != null) {if (userinfo.getPassword().equals(userLoginIBean.getPassword())) {System.out.println(userinfo.getNickname());carrier.setInfo("S01", "登录成功");logger.debug("登录成功");carrier.setContents(userinfo);} else {carrier.setInfo("E01", "密码错误");}} else {carrier.setInfo("E03", "无此账号");}return carrier;}
}

12.发布:点击右上角的

选择Edit,添加tomcat:

填写Name,在ApplicationServer中选择自己的Tomcat,

接着点击Deployment,点击下角的➕,选择Artifacts

选择下面的war exploded

然后点击OK,APPLY,OK

12.在pom.xml中的build节点下加入:
       <!--java目录下xml文件默认不会打包,此处手动打包,否则报错-->       <resources>           <resource>               <directory>src/main/java</directory>               <includes>                   <include>**/*.xml</include>               </includes>               <filtering>true</filtering>           </resource>       </resources>

然后点击启动Tomcat。

13,打开postman(谷歌的软件,要翻墙去谷歌商店下载)测试API成功。发布。

再次附上地址:https://github.com/qq571831158/Springmvc-spring-mybatisDemo

转载于:https://www.cnblogs.com/OrangeCheng/p/6765184.html

idea+springmvc+spring+mybatis+maven整合返回json数据web api-相关推荐

  1. 孙宇java_[JAVA] 孙宇老师Struts2+Hibernate4+Maven+EasyUI+SpringMvc+Spring+Mybatis+Maven整合课程...

    资源介绍 孙宇老师Struts2+Hibernate4+Maven+EasyUI+SpringMvc+Spring+Mybatis+Maven整合课程 ===============课程目录===== ...

  2. 手把手教你整合 SpringMvc+Spring+MyBatis+Maven

    注:该教程是参考孙宇老师的<SpringMvc+Spring+Mybatis+Maven整合视频教程1>整理的,花了我六个多小时,边复习视频边调代码边写教程,保证该教程每一步都能正确执行, ...

  3. Spring MVC 3.0 返回JSON数据的方法

    Spring MVC 3.0 返回JSON数据的方法 1. 直接 PrintWriter 输出 2. 使用 JSP 视图 3. 使用Spring内置的支持 // Spring MVC 配置 <b ...

  4. Spring MVC Controller中返回json数据中文乱码处理

    问题 在使用spring MVC Controller的过程中,发现返回到客户端的的中文出现乱码.后台Java代码: @RequestMapping(value = "/upload&quo ...

  5. 基于Maven+SpringMVC+Spring+MyBatis+Layui整合框架,超详细的SSM整合❤️

    人生有太多不如意,我们要学会去努力 参考文档:layUI文档:spring家族文档:mybatis文档 前言:SSM 整合 整合的思路是: 先创建spring框架 通过spring整合spring m ...

  6. 结合Layui框架,实现SpringMVC+Spring+Mybatis,SSM整合案例CRUD(超详细代码,外加说明)

    首先: 你需要去Layui官网下载UI框架.你可能会问,为什么用Layui实现页面效果?简单来说就是:简单.好用.上手快,作为JAVA后端开发人员,Layui无疑是非常友好的,拿来即用. 页面效果图: ...

  7. 1.springMVC+spring+Mybatis的整合思路

    视频教程地址:http://edu.51cto.com/sd/2cfc2 SSM整合的过程:就是把一些东西交给spring管理,也就是添加配置文件的一个过程.那么有哪些东西我们要交给spring管理呢 ...

  8. springmvc提供RestController方法接口返回json数据中文乱码

    web应用使用@RestController @RequestMapping 注解提供http接口 项目中遇到被调用接口后返回的json数据中出现中文乱码的问题 @RequestMapping(met ...

  9. maven工程建立和SSM(springMVC+spring+mybatis)整合

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 1.环境: maven 版本:3.5.1 ecelipse mars.2 JDK  :  jdk1. ...

最新文章

  1. linux nat 端口,linux – iptables nat只是端口25?
  2. MyBatis Review——输入输出映射
  3. 箱形图适用于哪种数据_盘点 | 十分钟进阶Excel数据可视化
  4. ML之DT:基于DT决策树算法(对比是否经特征筛选FS处理)对Titanic(泰坦尼克号)数据集进行二分类预测
  5. Python天天美味(22) - 拷贝对象(深拷贝deepcopy与浅拷贝copy)
  6. jMeter parallel controller 无法使用 CSV Data config 提供的变量?
  7. 蓝牙核心规范5.1:革新精确定位技术
  8. php分析图片中水印的位置,关于ThinkPHP打水印及设置水印位置的分析
  9. 人工智能在fpga的具体应用_“基于FPGA的人工智能应用技术师资培训”圆满落幕!...
  10. Linuxqt制作文本编辑器_Python实操!速收藏!学习使用Python创建文本编辑器应用程序
  11. 解决报错(4种情况):0x00007FF614F73B96 处(位于 XXX.exe 中)引发的异常: Microsoft C++ 异常: cv::Exception,位于内存位置 0x000XXX
  12. 拼多多平台API接入文档
  13. 原理 拉普拉斯金字塔_十三 高斯金字塔和拉普拉斯金字塔
  14. linux命令弹出移动硬盘,usb设备(移动硬盘或U盘),弹出时提示“有进程或程序占用,无法弹出”。解决办法...
  15. 【渝粤教育】国家开放大学2018年秋季 0062-21T港台文学专题讲座 参考试题
  16. 大时代,小过客——《激荡三十年》优秀读后感范文4600字
  17. JSP ssh房地产项目管理系统myeclipse开发mysql数据库MVC模式java编程计算机网页设计
  18. 工作中PUSH用到的统计命令
  19. 红糖水白糖水的转换--郝汉森
  20. JavaScript 事件和事件类型

热门文章

  1. WIN10极限清理 C盘空间
  2. 硅谷高管中国行感受:思维太单一,996式加班意义不大
  3. python flask热更新_客户端python热更新
  4. 设计模式常用的七大原则总结
  5. 数据结构第一节课感受
  6. 设计模式五:原型模式
  7. linux lvm删除分区,Linux LVM中的PV物理卷(硬盘或分区)删除方法
  8. perl linux 遍历文件,Perl/Linux过滤大文件与其他文件的内容
  9. 3DMM(3D Morphable Model)原理和实现
  10. java8中switch不能,switch 语句