环境搭建目录
文章目录
- 环境搭建目录
- 11-后台-环境搭建-工程结构和清单
- 12-后台-环境搭建-创建工程
- 上传到码云(gitee)
- 13-后台-环境搭建-建立工程间依赖关系
- 14-后台-环境搭建-物理建模-原则
- 15-后台-环境搭建-物理建模-操作
- 16-后台-环境搭建-MBG(逆向工程)
- 17-后台-环境搭建-父工程管理依赖
- 18-后台-环境搭建-依赖信息来源
- 19-后台-环境搭建-整合MyBatis-目标(Spring 整合 MyBatis)
- 20-后台-环境搭建-整合MyBatis-思路
- 21-后台-环境搭建-整合MyBatis-操作清单
- 22-后台-环境搭建-整合MyBatis-加入具体依赖
- 23-后台-环境搭建-整合MyBatis-数据库连接信息
- 24-后台-环境搭建-整合MyBatis-创建Spring配置文件
- -后台-环境搭建-整合MyBatis-配置数据源
- 25-后台-环境搭建-整合MyBatis-配置SqlSessionFactoryBean
- 26-后台-环境搭建-日志系统-简介——见下一篇文章
11-后台-环境搭建-工程结构和清单
先不管前台,只专注与后台管理
注意:不是非得这么设计,只是这样是比较合理的
架构上的没有百分百规定,只要你是合法的,合理的,逻辑性的,思路清晰的就行
然后根据这份清单吧实际的工程项目列出来
注意他们的依赖关系 01是父工程,它的子工程是02、03、04 而05和06 是独立的工程,与01是平级的只不过是普通工程
12-后台-环境搭建-创建工程
atcrowdfunding01-admin-parent
groupId:com.atguigu.crowd
artifactId:atcrowdfunding01-admin-parent
packaging:pom
------------------------------------------------------------
接下来是WenUI模块
atcrowdfunding02-admin-webui
groupId:com.atguigu.crowd
artifactId:atcrowdfunding02-admin-webui
packaging:war
------------------------------------------------------------
接着选择 Next(下一步)
因为WenUI是一个web工程,所以打包的方式要选择war
这个解决方式上一章节见过,让eclipse给我们生成一个就好了
这里不过多赘述,直接说最快速的解决办法
点一下即可(巨简单,但是你要不会的话,就怎么都不会)
实际上可能生成的还不够,但是maven项目的话,倒也是够用了,maven项目不需要lib文件夹来放jar包
下面的就都是jar包工程了,很好理解
其实都是为了web层去服务了
后面都是重复这个操作了
atcrowdfunding03-admin-component
groupId:com.atguigu.crowd
artifactId:atcrowdfunding03-admin-component
packaging:jar
------------------------------------------------------------
重复这个操作把04也完成
atcrowdfunding04-admin-entity
groupId:com.atguigu.crowd
artifactId:atcrowdfunding04-admin-entity
packaging:jar
------------------------------------------------------------
这样就完成了
这里需要注意的是其实他们都在parent目录下,只是eclipse这样给我们显示了,便于我们开发而已
接下来 我们把剩下的创建完
==注意05和06,这两个工程不依赖于01 ==
05、和06不是子模块,是独立工程哦,千万注意
atcrowdfunding05-common-util
groupId:com.atguigu.crowd
artifactId:atcrowdfunding05-common-util
packaging:jar
依照05把06也创建好,最终如下
------------------------------------------------------------
atcrowdfunding06-common-reverse
groupId:com.atguigu.crowd
artifactId:atcrowdfunding06-common-reverse
packaging:jar
最终如下
==注意,05和06,这两个工程不依赖于01 ==
至此创建工程就完成了
这样有什么好处呢,好处之一就是:自动帮我们关联了,如下:
maven里面的继承关系(其实也包含聚合这些)已经帮我们自动配置好了
为我们节省了很多时间,我们不需要再配置基础关系,以后安装的时候也只需要安装父工程就行了,因为聚合,其它的子工程会自动安装
上传到码云(gitee)
特别需要注意的地方
前期准备我就不说了,属于gitee的基础知识看gitee
总之就是在gitee(码云)上创建一个仓库,然后现在我们上传到对应的仓库
唯一需要注意的就是,怎么避免这种尴尬,我们上传完git之后再拉取下来就变成这样了
所以比较好的解决办法是 用父工程的名字做工作空间或者用父工程的名字做仓库名称,二选一
这里推荐用父工程的名字做gitee仓库名,因为这个我测试过
上传到码云(gitee)
强烈推荐新手或者老手严谨一些,一个一个项目上传,不要学我,我这里只是讲思路
勾不上的下次重复一次操作,再来一次就行
然后同样的方法吧05、06也上传上去
13-后台-环境搭建-建立工程间依赖关系
工程架子建立后之后想一想,他们之间有什么依赖关系
可以不手写他们的依赖,直接用eclipse图形化界面设置也很方便
点一下Add…会弹出如下界面
下面都是同样的操作了
== 这样依赖关系就建立好了 ==
14-后台-环境搭建-物理建模-原则
这里就涉及到 SSM整合
先做spring和mybatis整合,
再做spring和springMvc整个
先做spring和mybatis整合,那么肯定就要涉及到数据库
设计数据库其实有一个名词 叫做物理建模
这里可以联想到我们的 物理删除和逻辑删除,物理的意思你就明白了
第一范式:原子性 —— 不可再分——任何一个字段里面的值不能再拆开,
比如上面的 “部门岗位” 这个字段 包含了部门又包含了岗位,这就不符合第一范式了,因为它违背了原子性即可再分
违背了三大范式会有哪些影响 数据冗余等等
勿删问题等等,增删改查都会受到影响
总之就是满足三大范式就是,对逻辑合理、性能提高都是有帮助的
15-后台-环境搭建-物理建模-操作
规则在特情况下是可以变通的,
比如生活中的红绿灯,大家都说红灯停绿灯行;
但是假如一个老奶奶走得很慢,绿灯已经变成红灯了她还在路中间难道车辆就开车撞她吗?
显然不是的,出于人道主义,我们都应该等老奶奶过去再开始正常通行
这种情况下法律法规也不会判断你违法,所以规则在特定情况下是可以变通的
猜一下后台管理员表会有哪些字典
我先来猜一下
字段 | 描述 | 字段类型 |
---|---|---|
id | id号 | int类型吧 |
Name | 姓名 | varChar(string)类型 |
sex | 性别 | int 类型1男 2女 |
age | 年龄 | int类型吧 |
menu | 菜单权限 | 暂时不知道 |
暂时我就能总结出这么多来,那么对不对呢?
其实这就考验一个程序员的经验和技术了,能不能从最开始就知道需要哪些字段
而不是做到一半才知道,然后再去加字段,这样会比较麻烦,至少大体上有哪些字段要知道
点击管理员入口就会出现如下管理员登录的入口
根据上面的原型页面我们看到管理员表需要包含如下字段
账号
密码
名称
邮箱地址
创建数据库和管理员表(注意这里用的是MySQL)
-- 3.2 创建数据库
CREATE DATABASE `project_crowd` CHARACTER SET utf8;
---3.3 创建管理员数据库表
use project_crowd;
drop table if exists t_admin;
create table t_admin
( id int not null auto_increment,# id(未设置成主键状态)
login_acct varchar(255) not null,# 登录账号
user_pswd char(32) not null, # 登录密码
user_name varchar(255) not null, # 昵称
email varchar(255) not null, # 邮件地址
create_time char(19), # 创建时间
primary key (id) # 设置主键
)
插入一条数据
16-后台-环境搭建-MBG(逆向工程)
MBG是Mybatis generator英文的缩写,是根据数据库中的表,反向生成实体类,DAO,Mapper文件的插件
我们这里使用的工具是eclipse(sts),idea那块的逆向工程封装得也很好,那块以后的项目里面再说
总之MBG就是可以自动生成实体类,DAO,Mapper的一个技术
MBG是非常重要的,也是非常有用的,有了这个技术,我们可以少写很多代码
具体操作:
拷贝(复制)之后
来这里粘贴
你可能会问,为什么要在poom.xml里面配置这些,
因为配置了这些你才能连接上数据库,
连接上数据库你才能够知道有哪些表
这样MBG逆向工程才能够去自动生成Dao和mapper(实体类在mybatis里面没有dao,只有mapper,mapper层就是dao层)
pom 配置完了之后,我们需要创建 generatorConfig.xml文件,这是逆向工程的文件
eclipse的格式化(Ctrl+Shift+F),如果格式化快捷键失效,查看是不是输入法占用了快捷键
<?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>
<!-- mybatis-generator:generate -->
<context id="atguiguTables" targetRuntime="MyBatis3">
<commentGenerator>
<!-- 是否去除自动生成的注释 true:是;false:否 -->
<property name="suppressAllComments" value="true" />
</commentGenerator>
<!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
<jdbcConnection
driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/project_crowd"
userId="root"
password="123456">
</jdbcConnection>
<!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL
和 NUMERIC 类型解析为java.math.BigDecimal -->
<javaTypeResolver>
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
<!-- targetProject:生成Entity类的路径 -->
<javaModelGenerator targetProject=".\src\main\java"
targetPackage="com.atguigu.crowd.entity">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
<!-- 从数据库返回的值被清理前后的空格 -->
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!-- targetProject:XxxMapper.xml映射文件生成的路径 -->
<sqlMapGenerator targetProject=".\src\main\java"
targetPackage="com.atguigu.crowd.mapper">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
</sqlMapGenerator>
<!-- targetPackage:Mapper接口生成的位置 -->
<javaClientGenerator type="XMLMAPPER"
targetProject=".\src\main\java"
targetPackage="com.atguigu.crowd.mapper">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
</javaClientGenerator>
<!-- 数据库表名字和我们的entity类对应的映射指定 -->
<table tableName="t_admin" domainObjectName="Admin" />
</context>
</generatorConfiguration>
所以总结一下,逆向工程其实非常简单,就两步,
第一步是加jar包,即pom文件加依赖,
第二步就是在src/main/resources路径下添加generatorConfig.xml
执行逆向生成操作的 Maven 命令
mybatis-generator:generate
执行逆向生成操作的 Maven 命令
mybatis-generator:generate
这一步是将实体类补充满足
另外需要注意 mapper.java和mapper.xml是对应的
逆向工程生成的资源各归各位
WebUI 工程将来在 Tomcat 上运行时,
现在 resources 目录下的资源会直接放在 WEB-INF/classes 目录(也就是类路径)下,
所以放在 resources 目录下运行的时候更容 易找到。
注意是包名一起拖过去
注意这个mapper拖过来之后要继续改一下
怎么改呢?
放到webUI的原因是部署到tomcat之后,会比较方便
然后把其它地方用不到的mybatis的依赖删掉,没必要出现肉眼可见的冗余
至此逆向工程完毕
一定要学会,逆向工程后面还有很多地方要用得到
17-后台-环境搭建-父工程管理依赖
<properties>
<!-- 声明属性,对Spring的版本进行统一管理 -->
<atguigu.spring.version>4.3.20.RELEASE</atguigu.spring.version>
</properties>
<dependencyManagement>
<dependencies>
<!-- Spring依赖 -->
<!-- https://mvnrepository.com/artifact/org.springframework/spring-orm -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${atguigu.spring.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${atguigu.spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${atguigu.spring.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.aspectj/aspectjweaver -->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.9.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/cglib/cglib -->
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
<version>2.2</version>
</dependency>
<!-- 数据库依赖 -->
<!-- MySQL驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.3</version>
</dependency>
<!-- 数据源 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.31</version>
</dependency>
<!-- MyBatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.2.8</version>
</dependency>
<!-- MyBatis与Spring整合 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.2.2</version>
</dependency>
<!-- MyBatis分页插件 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>4.0.0</version>
</dependency>
<!-- 日志 -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.7</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
<!-- 其他日志框架的中间转换包 -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>1.7.25</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jul-to-slf4j</artifactId>
<version>1.7.25</version>
</dependency>
<!-- Spring进行JSON数据转换依赖 -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.8</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.8</version>
</dependency>
<!-- JSTL标签库 -->
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!-- junit测试 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!-- 引入Servlet容器中相关依赖 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<!-- JSP页面使用的依赖 -->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1.3-b06</version>
<scope>provided</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.5</version>
</dependency>
</dependencies>
</dependencyManagement>
粘贴完记得看一下代码,格式不友好的话,需要按 Ctrl+Shift+F 格式化一下代码
18-后台-环境搭建-依赖信息来源
到专门网站搜索 https://mvnrepository.com
19-后台-环境搭建-整合MyBatis-目标(Spring 整合 MyBatis)
Spring 整合 MyBatis我们要达到一个什么样子的目标,这个要明确
20-后台-环境搭建-整合MyBatis-思路
21-后台-环境搭建-整合MyBatis-操作清单
22-后台-环境搭建-整合MyBatis-加入具体依赖
注意这里要结合开发文档
另外mybatis核心包其实也有了,如果开发文档里面有也删掉(按道理应该开发文档已经整理好了),
但是这不是必须要删掉的,只是没必要重复
下图的操作可以看一下他们之间的关系
23-后台-环境搭建-整合MyBatis-数据库连接信息
jdbc.user=root
jdbc.password=123456
jdbc.url=jdbc:mysql://localhost:3306/project_crowd?useUnicode=true&characterEncoding=UTF-8
jdbc.driver=com.mysql.jdbc.Driver
24-后台-环境搭建-整合MyBatis-创建Spring配置文件
在mybatis文件夹下
创建 mybatis-config.xml和
spring-persist-mybatis.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
</configuration>
-后台-环境搭建-整合MyBatis-配置数据源
spring-persist-mybatis.xml文件初始代码,复制如下代码
<?xml version="1.0" encoding="UTF-8"?><!-- 加载外部属性文件 -->
<context:property-placeholder location="classpath:jdbc.properties"/>
org.springframework
spring-test
test
commons-logging
commons-logging
junit
junit
test
注意不用把父工程的剪切过来,而是引用父工程的就行了
整合的好处就是 整合以后IOC容器里面有啥,我们这个类里面就可以去装配它
bug排查
如果没有出现成功标志,而是报错了咋解决
第一步 看caused by后的内容
第二步 看配置文件(一般都是配置文件出错)
第三步 查看mysql数据库服务器是否开启 或数据库信息名称是否匹配
根据caused by后的内容
1、sqlSessionFactoryBean创建不了
2、mybatis-config.xml没有找到
逐一解决
最终解决办法
1、路径改一下,看看项目的路径有没有错
2、注解漏掉,我这里就是漏掉注解了,导致报错
卡了几天,终于可以往下走了 /哭笑
25-后台-环境搭建-整合MyBatis-配置SqlSessionFactoryBean
配置SqlSessionFactoryBean,我们还是对照前面这一张图来理解
注意是改这个文件:spring-persist-mybatis.xml,下面的图片文件标注错了
运行试一下
这样就说明成功了