一、电脑商城项目:
项目功能:登录,注册,热销商品,用户管理(密码,个人信息,头像,收货地址)、购物车(展示、增加、删除)、订单模块。
二、开发顺序:
注册、登录、用户管理、购物车、商品、订单模块
三、某一个模块的开发:
持久层开发:依据前端页面的设置规划相关的SQL语句,以及进行配置
业务层开发:核心功能控制、业务操作以及异常的处理
控制层开发:接受请求、处理响应
前端开发:JS、jQuery、AJAX连接后台
四、项目搭建步骤:
1.IDEA新建项目,导入jar包
2.配置信息
3.创建数据库
4.测试连接:
启动Springboot主类,是否有对应的Spring图形输出
在单元测试类中测试数据库的连接是否可以正常的加载
5.访问项目的静态资源是否可以正常加载,所有的静态资源放到static目录下
五、注册功能-持久层
1.建表如图所示
2.创建用户的实体类
①.通过表的结构可以提取出表的公共字段,放在一个实体类的基类中,起名叫BaseEntity基类中。
②.创建用户的实体类
六、注册-持久层
通过Mybatis来操作数据库。在做Mybatis开发的流程
6.1规划需要执行的SQL语句
1.用户的注册功能,相当于在做数据的插入操作。
INSERT INTO t_user (username,password) VALUES (值列表)
6.2设计接口和抽象方法
6.2.1定义Mapper接口。在项目的目录结构下创建一个mapper包,在这个包下再根据不同的功能模块来创建mapper接口。创建一个Usermapper的接口。要在接口中定义这两个SQL语句的抽象方法。
package com.example.store.mapper; import com.example.store.entity.User; /** 处理用户数据操作的持久层接口 */ public interface UserMapper { /** * 插入用户数据 * @param user 用户数据 * @return 受影响的行数(增删改都受影响的行数作为返回值,可以根据返回值来判断是否执行成功 */ Integer insert(User user); /** * 根据用户名查询用户数据 * @param username 用户名 * @return 如果找到对应的用户则返回该用户的数据,如果没找到则返回null */ User findByUsername(String username); }
6.2.2在启动类配置mapper接口文件的位置
6.3编写映射
6.3.1定义xml映射文件,与对应的接口进行关联。所有的映射文件都要放置在resources目录下,在这个目录下创建一个mapper文件夹,然后在这个文件夹下存放mapper的映射文件。
6.3.2创建接口对应的映射文件,遵循和接口的名称保持一致即可。创建一个UserMapper.xml文件。
<?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="org.mybatis.example.BlogMapper"> <select id="selectBlog" resultType="Blog"> select * from Blog where id = #{id} </select> </mapper>
6.3.3配置接口中的方法对应上SQL语句。需要借助标签来完成——insert\update\delete\select,对应的是SQL语句的增删改查操作。
<!--自定义映射规则:resultMap标签来完成映射规则的定义--> <!--id属性:标签给这个映射负责分配一个唯一的id值,对应的就是resultMap=“id属性的值”属性的取值 type属性:取值是一个类,表示的是数据库中查询结果与JAVA中哪个实体类进行结果集的映射 --> <resultMap id="UserEntityMap" type="com.example.store.entity.User"> <!--将表的资源和类的属性不一致的字段进行匹配指定,名字一致的字段可以省略不写--> <!-- 配合完成名称不一致的映射: column属性:表示表中的资源名称 property属性:表示类中的属性名称 --> <!--在定义映射规则时,主键是不可以省略的--> <id column="uid" property="uid"/> <result column="is_delete" property="isDelete"/> <result column="created_user" property="createdUser"/> <result column="created_time" property="createdTime"/> <result column="modified_user" property="modifiedUser"/> <result column="modified_time" property="modifiedTime"/> </resultMap> <!--id属性:表示映射的接口方法中的名称,直接在标签的内容部分来编写SQL语句--> <!-- useGeneratedKeys属性:表示开启某个字段的值自增(主键设置为自增) keyProperty属性:标签将表中的哪个字段作为主键进行递增 --> <insert id="insert" useGeneratedKeys="true" keyProperty="uid"> INSERT INTO t_user ( username, password, salt, phone, email, gender, avatar, is_delete, created_user, created_time, modified_user, modified_time) VALUES (#{username}, #{password}, #{salt}, #{phone}, #{email}, #{gender}, #{avatar}, #{isDelete}, #{createdUser}, #{createdTime}, #{modifiedUser}, #{modifiedTime}) </insert> <!-- select语句在执行的时候,查询的结果是一个对象,多个对象--> <!-- resultType:表示查询的结果集类型,只需要指定对应映射类的类型,并且包含完整包接口:resultType="com.example.store.entity.User resultMap: 标签当表的资源和类的对象属性的字段名称不一致时,来自定义查询结果集的映射规则 --> <select id="findByUsername" resultMap="UserEntityMap"> SELECT * FROM t_user WHERE username = #{username} </select>
配置连接。
在 第一次使用 的时候,除了要配置连接,还要配置相应的驱动,否则连接的时候会报错!!!
图中的①②③④⑤分别表示为:
①、连接的名称
②、连接的数据库地址和端口号(连接本地的数据库就默认为localhost,端口号为3306)
③、MySQL数据库的用户名和密码
④、需要连接的数据库名称
⑤、配置完成之后,点击测试连接,查看是否连接成功。
如图连接成功后,就将IDEA和数据库连接成功了。
6.3.4将mapper文件的位置注册到properties对应的配置文件中。
mybatis.mapper-locations=classpath:mapper/*.xml
6.3.5单元测试:
每个独立的层编写完成后需要编写单元测试方法,来测试当前的功能。在test包结构下创建一个mapper包,在这个包下再创建持久层的测试。