使用ssm(spring+springMVC+mybatis)创建一个简单的查询实例(一)
梳理下使用spring+springMVC+mybatis 整合后的一个简单实例:输入用户的 ID,之后显示用户的信息(此次由于篇幅问题,会分几次进行说明,此次是工程的创建,逆向生成文件以及这个简单查询工程的流程说明)
源代码在github上可以下载,地址:https://github.com/guoxia0719/ssm-select
工程运行情况如下所示:

输入查询的用户ID:1时,结果为:

数据库中的数据如下所示:

此次会有开发过程中一些常见的问题,都会根据我自己的实例情况给出建议:
开发工具:IDEA, 数据库:MySQL 使用JDK:1.8
主要文件分为以下几个过程:
1.创建整体的项目文件:FIle—>project,

注意按照图片中的步骤创建,也可以不用,后续可以自己进行修改,下一步就是创建名称,输入你自己的组名和项目名称即可,如本次是groupId:com.eightteen, ArtifactId:test01,进行next


上面的步骤完事后,点击next 进行下一步:

这个图片是你具体创建项目的一些信息,确认完成后点击【Finish】即可。
常见完的项目一般如下所示:

项目创建完成后,会缺少一些文件需要你自己补齐,上面的只是针对如何创建项目,下面显示的是这次需要显示的项目,补齐后的文件如下图所示:

上面的文件做下简单的介绍:
jdbc.properties: 主要是关于数据库信息的配置,有驱动类,连接数据库的url,登陆MySQL的用户名和密码
Personal-GeneratorConfig.xml:主要是用于mybatis的逆向工程,用于根据数据库中的表生成对应的实体类,mapper映射文件,以及和映射文件对应的接口文件
spring-mybatis.xml:用于配置spring和mybatis的整合,其中mybatis是持久层框架,配置数据源,实现映射文件和接口文件的管理,可以操作接口文件用于操作MySQL,简化了很多步骤
spring-mvc.xml:用于配置控制层,实现bean的创建和管理,以及自动注解功能开启,视图解析器用于视图的解析
整体流程:
前台传递过来一个url请求,前端控制器接受到这个请求后,会根据这个请求的url去匹配映射(RequestMapping)到具体的业务处理方法,找到业务处理类后会发送给前端控制器handler,
然后交给映射适配器去执行这个handler(这个所谓的handler,其实就是去用于调用具体的业务处理方法的),业务处理方法执行完成后会返回要给ModelAndView给前端控制器。前端控制器会把ModelAndView交给视图解析器进行解析,解析出的View经过渲染后交给前台界面展示给客户。
我这个简单查询的具体流程就是:
在index.jsp文件中输入要查询的用户ID号码,点击查询后,根据映射的url或者说是from表单中的action:/person/select 去匹配映射文件到PersonController类中的getPerson()方法。
这个方法是调用业务的方法,里面通过接口personService文件中的方法去获取具体的信息,PersonServiceImpl类实现了这个接口,PersonServiceImpl这个类中直接使用PersonMapper接口文件去调用具体的处理方法selectByPrimaryKey(id),根据id号码返回要查询的用户信息,其中PersonMapper接口和PersonMapper.xml映射文件是一一对应的,接口中的方法直接对应到映射文件中的SQL ID号码,namespace(对应接口文件的路径)+ID(对应接口文件中的方法名),这些对应关系都是框架自动进行配置的,我们只需要确认这些文件被扫描到即可。
最终能确定唯一的SQL语句,执行结果会根据配置放到具体的对象或结果集中,直接过去即可。

下面开始具体的填补工程中的内容:
1)在MySQL中创建一个表:Person(特别简单,仅是用于梳理流程,实现项目功能),结构图如下所示:

2)根据创建出的表结构,在idea中逆向生成对应的实体类,映射文件和对应的dao层的接口文件,配置如下所示:
?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<properties resource="jdbc.properties"></properties>
<classPathEntry location="${jdbc.driverLocation}" />
<!--classPathEntry location="D:\zngkpt\m2\repository\mysql\mysql-connector-java\5.1.40\mysql-connector-java-5.1.40.jar" /-->
<context id="context1" targetRuntime="MyBatis3"> <commentGenerator>
<!-- 去除自动生成的注释 -->
<property name="suppressAllComments" value="true" />
</commentGenerator> <!-- 数据库连接配置 -->
<jdbcConnection driverClass="${jdbc.driverClass}"
connectionURL="${jdbc.connectionURL}"
userId="${jdbc.userId}"
password="${jdbc.password}" />
<!--jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/test"
userId="root"
password="mysql" /--> <!-- 非必需,类型处理器,在数据库类型和java类型之间的转换控制-->
<javaTypeResolver>
<property name="forceBigDecimals" value="false"/>
</javaTypeResolver> <!--配置生成的实体包
targetPackage:生成的实体包位置,默认存放在src目录下
targetProject:目标工程名
-->
<javaModelGenerator targetPackage="com.one.entity"
targetProject="src/main/java" /> <!-- 实体包对应映射文件位置及名称,默认存放在src目录下 -->
<sqlMapGenerator targetPackage="com.one.mapper" targetProject="src/main/java" /> <!-- 接口类生成位置 -->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.one.dao" targetProject="src/main/java"/>
<!-- 配置表
schema:不用填写
tableName: 表名
enableCountByExample、enableSelectByExample、enableDeleteByExample、enableUpdateByExample、selectByExampleQueryId:
去除自动生成的例子
-->
<table schema="" tableName="person" enableCountByExample="false" enableSelectByExample="false"
enableDeleteByExample="false" enableUpdateByExample="false" selectByExampleQueryId="false" >
</table>
</context>
</generatorConfiguration>
其中数据库链接配置文件jdbc.properties
jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.connectionURL=jdbc:mysql://localhost:3306/fis?useUnicode=true&characterEncoding=utf-8
jdbc.userId=root
jdbc.password=rootjdbc.driverLocation=E:\\Java\\MySQL\\mysql-connector-java-5.1.43\\mysql-connector-java-5.1.43\\mysql-connector-java-5.1.43-bin.jar
也可以在配置文件中直接把properties文件中的变量直接写死到Personal-GeneratorConfig.xml 文件中,一般不这么做,不利于维护。
文件配置完成以后,按照下图所示点击菜单栏中的run,选择Edit Configuration,

点击完成以后,出现下图所示:

选择maven之后,会出现下图所示的界面:里面包含已经配置完的信息,最主要的是输入命令:mybatis-generator:generate -e

都配置完成以后,执行下图所示的过程:

以上就是根据表结构生成具体的实体类,映射文件及对应接口文件的过程。还有一种直接配置完后,通过Java文件main方法执行生成文件,这里不再具体叙述。
都执行完以后生成的文件如下所示:

到此,逆向生成文件就结束了,下一篇开始讲解关于里面控制文件,服务文件以及配置文件的说明。
使用ssm(spring+springMVC+mybatis)创建一个简单的查询实例(二)
有什么其他问题,欢迎来一起交流学习!
使用ssm(spring+springMVC+mybatis)创建一个简单的查询实例(一)的更多相关文章
- 使用ssm(spring+springMVC+mybatis)创建一个简单的查询实例(三)(错误整理篇)
使用ssm(spring+springMVC+mybatis)创建一个简单的查询实例(一) 使用ssm(spring+springMVC+mybatis)创建一个简单的查询实例(二) 以上两篇已经把流 ...
- 使用ssm(spring+springMVC+mybatis)创建一个简单的查询实例(二)(代码篇)
这篇是上一篇的延续: 用ssm(spring+springMVC+mybatis)创建一个简单的查询实例(一) 源代码在github上可以下载,地址:https://github.com/guoxia ...
- SSM(Spring + Springmvc + Mybatis)框架面试题
JAVA SSM框架基础面试题https://blog.csdn.net/qq_39031310/article/details/83050192 SSM(Spring + Springmvc + M ...
- SSM(Spring +SpringMVC + Mybatis)框架搭建
SSM(Spring +SpringMVC + Mybatis)框架的搭建 最近通过学习别人博客发表的SSM搭建Demo,尝试去搭建一个简单的SSMDemo---实现的功能是对用户增删改查的操作 参考 ...
- SSM Spring+SpringMVC+mybatis+maven+mysql环境搭建
SSM Spring+SpringMVC+mybatis+maven环境搭建 1.首先右键点击项目区空白处,选择new->other..在弹出框中输入maven,选择Maven Project. ...
- SSM(Spring+SpringMVC+Mybatis)框架环境搭建(整合步骤)(一)
1. 前言 最近在写毕设过程中,重新梳理了一遍SSM框架,特此记录一下. 附上源码:https://gitee.com/niceyoo/jeenotes-ssm 2. 概述 在写代码之前我们先了解一下 ...
- SSM(Spring,SpringMVC,Mybatis)框架整合项目
快速上手SSM(Spring,SpringMVC,Mybatis)框架整合项目 环境要求: IDEA MySQL 8.0.25 Tomcat 9 Maven 3.6 数据库环境: 创建一个存放书籍数据 ...
- SSM Spring +SpringMVC+Mybatis 整合配置 及pom.xml
SSM Spring +SpringMVC+Mybatis 配置 及pom.xml SSM框架(spring+springMVC+Mybatis) pom.xml文件 maven下的ssm整合配置步骤
- SSM:spring+springmvc+mybatis框架中的XML配置文件功能详细解释(转)
原文:https://blog.csdn.net/yijiemamin/article/details/51156189# 这几天一直在整合SSM框架,虽然网上有很多已经整合好的,但是对于里面的配置文 ...
随机推荐
- linux安装lamp/lamp/lanmp
wdcp安装lamp/lanp/lanmp 和宝塔(centOS)1. yum install -y wget //yum安装wegt2. wget http://dl.wdlinux.cn/fil ...
- Python linux多版本共存以及虚拟环境管理(转摘)
Python linux多版本共存以及虚拟环境管理 2017年08月01日 18:42:25 sliderSun 阅读数:197更多 个人分类: python 版权声明:本文为博主原创文章,未经博 ...
- docker构建本地仓库后,无法登陆解决办法(CentOS/Ubuntu)
docker版本为:Server Version: 1.12.6 从dockerhub上下载最新的registry镜像. 首先.构建registry 1.下载registry镜像 docker pul ...
- 线段树 HDU-1166 敌兵布阵
敌兵布阵是一个线段树典题,题目如下(点此查看题目出处): Problem Description C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A国 ...
- JavaWeb-----实现第一个Servlet程序
1.Servlet简介 Servlet是在服务器端运行的一个小程序,实际上一个Servlet就是一个Java类,并且可以通过“请求-响应”编程模型来访问的这个驻留在服务器内 存里的servl ...
- Python 语言来编码和解码 JSON 对象
Json函数: json.dumps: Python标准库中的json模块,集成了将数据序列化处理的功能. 将 Python 对象编码成 JSON 字符串 语法: json.dumps(obj, sk ...
- nodejs高并发大流量的设计实现,控制并发的三种方法
nodejs高并发大流量的设计实现,控制并发的三种方法eventproxy.async.mapLimit.async.queue控制并发Node.js是建立在Google V8 JavaScript引 ...
- Python自然语言处理笔记【一】文本分类之监督式分类
一.分类问题 分类是为了给那些已经给定的输入选择正确的标签. 在基本的分类任务中,每个输入都被认为与其他的输入是隔离的.每个类别的标签集是预先定义好的(只有把类别划分好了,才能给输入划分类别). 分类 ...
- Codeforces 528E Triangles 3000 - 计算几何
题目传送门 传送点I 传送点II 传送点III 题目大意 给定$n$的平面上的直线,保证没有三条直线共点,两条直线平行.问随机选出3条直线交成的三角形面积的期望. 显然$S=\frac{1}{2}ah ...
- JS求任意字符串中出现最多的字符以及出现的次数
我爱撸码,撸码使我感到快乐!大家好,我是Counter本节讲讲如何利用JS来查找任意给定的字符串,求字符串中出现次数最多的字符,出现的次数.直接上代码了,该注释的都注释啦.非常轻松加愉快.效果如下: ...