米米商城项目笔记一(数据库表创建和项目搭建)
使用的相关技术【当前最新技术】:
IDEA:2022+
JDK:1.8
MySQL:8.0+
Maven:3.8+
Tomact:9.0+
-
创建数据库信息
使用
Navicat Premium
软件打开xiaomissm_new_201912-4
SQL语句创建想关的数据库文件信息 -
IDEA项目搭建
-
创建
mimissm
MavenWeb项目工程当发现文件有缺少就及时补回来,如果使用的骨架创建的web工程,需要将原来的
web.xml
删除再重新添加命名不可相同,添加成功后再改回来
否则web识别不了 -
在
main
文件下创建对应的如下包- com.zcl.controller
- com.zcl.service
- com.zcl.utils
根据平常的来发经验是不是还缺少
pojo
以及mapper
包呢,这两个包待会会通过逆向工程
来快速的创建,减少开发繁琐 -
pom.xml
文件依赖坐标的引入使用了集中定义版本号,方便后期的版本升级
<!-- 集中定义依赖版本号 --> <properties> <junit.version>4.12</junit.version> <spring.version>5.2.5.RELEASE</spring.version> <mybatis.version>3.5.1</mybatis.version> <mybatis.spring.version>1.3.1</mybatis.spring.version> <mybatis.paginator.version>1.2.15</mybatis.paginator.version> <mysql.version>8.0.22</mysql.version> <slf4j.version>1.6.4</slf4j.version> <druid.version>1.1.12</druid.version> <pagehelper.version>5.1.2</pagehelper.version> <jstl.version>1.2</jstl.version> <servlet-api.version>3.0.1</servlet-api.version> <jsp-api.version>2.0</jsp-api.version> <jackson.version>2.9.6</jackson.version> </properties> <dependencies> <!-- spring --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</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-jdbc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jms</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-test</artifactId> <version>${spring.version}</version> </dependency> <!-- Mybatis --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>${mybatis.version}</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>${mybatis.spring.version}</version> </dependency> <dependency> <groupId>com.github.miemiedev</groupId> <artifactId>mybatis-paginator</artifactId> <version>${mybatis.paginator.version}</version> </dependency> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>${pagehelper.version}</version> </dependency> <!-- MySql --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>${mysql.version}</version> </dependency> <!-- 连接池 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>${druid.version}</version> </dependency> <!-- junit --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${junit.version}</version> <scope>test</scope> </dependency> <!-- JSP相关 --> <dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>${jstl.version}</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.0.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jsp-api</artifactId> <scope>provided</scope> <version>${jsp-api.version}</version> </dependency> <!-- Jackson Json处理工具包 --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>${jackson.version}</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.4</version> </dependency> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.1</version> </dependency> </dependencies> <!-- 插件配置 --> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> <encoding>UTF-8</encoding> </configuration> </plugin> </plugins> <!--识别所有的配置文件--> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>false</filtering> </resource> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>false</filtering> </resource> </resources> </build>
-
-
Spring整合MyBatis
-
创建
jdbc.properties
数据源信息jdbc.driver=com.mysql.cj.jdbc.Driver jdbc.url=jdbc:mysql://localhost:13306/xiaomissm?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true jdbc.username=root jdbc.password=1234
根据自己的访问连接和端口号以及账号密码进行修改为自己的,还有数据库的名称
使用了mysql8.0以上的不配置?后面的一段配置是不能连接数据库的
-
创建
mybatis_confing.xml
mybatis核心配置文件,配置分页插件拦截器<?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> <!--1、配置分插件拦截器--> <plugins> <plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin> </plugins> </configuration>
由于spring可以整合mybatis就不在上面进行数据源的连接了
-
spring整合mybatis的数据连接信息
<?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.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd "> <!--1、引用外部的数据源连接信息--> <context:property-placeholder location="classpath:jdbc.properties"/> <!--2、配置数据库连接信息--> <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"> <property name="driverClassName" value="${jdbc.driver}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> </bean> <!--3、创建sqlSession工厂对象--> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <!--绑定数据源--> <property name="dataSource" ref="dataSource"/> <!--加载mybatis核心配置文件--> <property name="configLocation" value="classpath:mybatis_confing.xml"/> </bean> <!--4、配置mapper包扫描--> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.zcl.mapper"/> </bean> </beans>
-
-
配置
applictionContext_Service.xml
业务逻辑层当spring的配置内容过多时一般都会使用分层的方式来写,会更加的直观
创建
applictionContext_Service.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: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.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd "> <!--1、指定业务逻辑层的包扫描,当使用@Service注解类时,spring赋值创建对象--> <context:component-scan base-package="com.zcl.service"/> <!--2、设置事务管理器--> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <!--设置数据源,因为是拆分了,所以dataSource报红不需要处理--> <property name="dataSource" ref="dataSource"/> </bean> <!--3、添加事务切面--> <tx:advice id="myadvice" transaction-manager="transactionManager"> <tx:attributes> <!--对事务的所有方法进行声明,查询只能读取--> <tx:method name="*select*" read-only="true"/> <tx:method name="*find*" read-only="true"/> <tx:method name="*get*" read-only="true"/> <tx:method name="*search*" read-only="true"/> <!--有变动的数据都需要事务--> <tx:method name="*insert*" propagation="REQUIRED"/> <tx:method name="*save*" propagation="REQUIRED"/> <tx:method name="*add" propagation="REQUIRED"/> <tx:method name="*delete*" propagation="REQUIRED"/> <tx:method name="*remove*" propagation="REQUIRED"/> <tx:method name="*clear*" propagation="REQUIRED"/> <tx:method name="*update*" propagation="REQUIRED"/> <tx:method name="*modify*" propagation="REQUIRED"/> <tx:method name="*change*" propagation="REQUIRED"/> <tx:method name="*set*" propagation="REQUIRED"/> <!--当没有上面声明的,都支持事务控制--> <tx:method name="*" propagation="SUPPORTS"/> </tx:attributes> </tx:advice> <!--4、完成切面和切入点的织入--> <aop:config> <!--service包下的所有类所有方法,任意参数都最佳事务织入--> <aop:pointcut id="mypointcut" expression="execution(* com.zcl.service.*.*(..))"/> <aop:advisor advice-ref="myadvice" pointcut-ref="mypointcut"/> </aop:config> </beans>
-
配置Spring_mvc核心配置文件
创建
spring_mvc.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.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd "> <!--1、设置controller包扫描器--> <context:component-scan base-package="com.zcl.controller"/> <!--2、设置视图解析器--> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!--设置访问前缀--> <property name="prefix" value="/admin/"/> <!--设置访问后缀--> <property name="suffix" value=".jsp"/> </bean> <!--3、设置文件上传核心组件,id名称是绝对的,不能改--> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> </bean> <!--4、设置注解驱动--> <mvc:annotation-driven/> </beans>
-
配置web.xml文件的开发
- 添加字符编码过滤器【放在第一位】
- 注册springmvc容器
- 注册spring容器
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"> <!--1、添加字符编码过滤器--> <filter> <filter-name>encode</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>forceRequestEncoding</param-name> <param-value>true</param-value> </init-param> <!--响应的强制转换--> <init-param> <param-name>forceResponseEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>encode</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!--2、注册spring_mvc框架--> <servlet> <servlet-name>spring_mvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!--指定spring_mvc配置信息--> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring_mvc.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>spring_mvc</servlet-name> <!--有多种方式拦截--> <url-pattern>*.action</url-pattern> </servlet-mapping> <!--3、注册spring框架--> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applictionContext_*.xml</param-value> </context-param> </web-app>
当监听了
applictionContext
文件之后,在sprin的其他配置文件中配置的dataSource
也不会包红了 -
逆向工程生成
pojo
和mapper
文件- 复制
MyBatis逆向工程
文件夹里面的内容到没有中文路径的盘下 - 在IDEA中打开文件
- 修改
generatorConfig.xml
文件- 修改数据库连接方式
- 修改生成实体类
pojo
和mapper
的类的路径 - 指定生成的数据库
- 将原来生成的
src
文件下的删除掉 - 运行
GeneratorSqlmap
类里面的main
方法进行生成 - 将生成的
pojo
和mapper
文件拷贝到自己的项目中使用即可
- 复制
-
MD5登录加密算法
复制
MD5Util.java
工具类到工具包utils
中创建测试类查看是否可以加密成功
package com.zcl.Test; import com.zcl.utils.MD5Util; import org.junit.Test; /** * 项目名称:mimissm * 描述:MD5加密测试类 * * @author zhong * @date 2022-05-12 10:42 */ public class MD5Test { @Test public void test1(){ String md5 = MD5Util.getMD5("000000"); System.out.println(md5); // c984aed014aec7623a54f0591da07a85fd4b762d } }
将加密的内容复制到数据库用户密码中存储,后面将使用这个密码来登录