SpringBoot商城项目学习

1、持久层

①项目的持久层就是mapper,在源代码的mapper软件包中编写自定义接口,接口中编写自定义方法:

public interface UserMapper {
    Integer insert(User user);
    User findByUsername(String username);
}

②在项目启动类中添加注解@MapperScan(“mapper软件包路径”)告诉项目去哪里找接口。

③接口中定义的只有方法名,在源文件夹中创建mapper文件夹,里面放接口方法的具体映射文件(.xml文件)。文件配置可在mybatis中文版网页中找到,具体实现有四种方法insert、delete、update、select,分别对应数据库的增删改查。

mapper映射文件中具体属性如下所示:

<!--namespace属性:用于指定当前映射文件和哪个接口进行映射,需要指定接口的文件路径,需要标注包的完整路径接口-->
<mapper namespace="com.cy.store.mapper.UserMapper">

    <!--自定义映射规则:resultMap-->
    <!--
    id表示给映射分配一个唯一的id值,对应的就是resultMap=”id“属性的取值
    type:取值是一个类,表示数据库中的查询结果与java中哪个实体类进行结果集映射
    <result><result>将表和类中名称不一致的字段进行匹配,column表示表中的资源名称,property表示类中的属性名称。
    定义匹配规则时,主键不可以省略。
    -->

    <resultMap id="UserEntityMap" type="com.cy.store.entity.User">
        <result column="uid" property="uid"></result>
        <result column="is_delete" property="isDelete"></result>
        <result column="created_user" property="createdUser"></result>
        <result column="created_time" property="createdTime"></result>
        <result column="modified_user" property="modifiedUser"></result>
        <result column="modified_time" property="modifiedTime"></result>
    </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>

    <!--
    resultType:表示查询的结果集类型,只需要指定对应映射类的类型,并且包含完整包接口路径
    resultMap:表示当表的资源和类的对象属性的字段名称不一致时,自定义查询结果集的映射规则
    -->
    <select id="findByUsername" resultMap="UserEntityMap">
        SELECT * FROM t_user WHERE username = #{username}
    </select>
</mapper>

2、实体类

①当项目中有常被使用的公共字段时,可以单独定义一个基类,让其它需要使用公共字段的类继承这个基类。

②公共类中一般要生成set、get方法,toString方法,当类中的对象要进行是否相等的比较时要重写equals方法,重写了equals方法就要重写hashCode方法

③关键字Serializable可以实现类中对象的序列化,序列化可以把对象的状态保存起来,以便于在其它地方读取,当想要保存对象状态或想要把对象状态在网络上进行传播时需要用到。

3、测试类

①当使用@Autowired注解进行自动装配时,有时会报无法自动装配的错误,原因是IDEA默认注入的时候bean必须存在。改成@Autowired(required = false)可解决问题,在要映射的接口上加注解@Repository也可以解决问题。

②注解@SpringBootTest //表示标注当前的类是一个测试类,不会随着项目一起打包。

③注解@RunWith(SpringRunner.class) //表示启动这个单元测试类,需要传递一个参数,必须是SpringRunner的实例类型

④对于单元测试方法,每一个方法都可以独立运行,必须使用@Test注解修饰,返回类型只能是void,方法的参数列表不能指定任何类型,方法的访问修饰符必须是public。

⑤注解@Repository专用于标注DAO类(数据访问层)。

 

                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当前课程中商城项目的实战源码是我发布在 GitHub 上的开源项目 newbee-mall (新蜂商城),目前已有 9900 多个 Star,本课程是一个 Spring Boot 技术栈的实战课程,课程共分为 3 大部分,前面两个部分为基础环境准备和相关概念介绍,第三个部分是 Spring Boot 商城项目功能的讲解,让大家实际操作并实践上手一个大型的线上商城项目,并学习到一定的开发经验以及其中的开发技巧。商城项目所涉及的功能结构图整理如下: 作者寄语本课程录制于2019年,距今已有一段时间。期间,Spring Boot技术栈也有一些版本升级,比如Spring Boot 2.7.x发版、Spring Boot 3.x版本正式版本。对于这些情况,笔者会在本课程实战项目的开源仓库中创建不同的代码分支,保持实战项目的源码更新,保证读者朋友们不会学习过气的知识点。新蜂商城的优化和迭代工作不会停止,不仅仅是功能的优化,在技术栈上也会不断的增加,截止2023年,新蜂商城已经发布了 7 个重要的版本,版本记录及开发计划如下图所示。 课程特色 对新手开发者十分友好,无需复杂的操作步骤,仅需 2 秒就可以启动这个完整的商城项目最终的实战项目是一个企业级别的 Spring Boot 大型项目,对于各个阶段的 Java 开发者都是极佳的选择实践项目页面美观且实用,交互效果完美教程详细开发教程详细完整、文档资源齐全代码+讲解+演示网站全方位保证,向 Hello World 教程说拜拜技术栈新颖且知识点丰富,学习后可以提升大家对于知识的理解和掌握,可以进一步提升你的市场竞争力 课程预览 以下为商城项目的页面和功能展示,分别为:商城首页 1商城首页 2购物车订单结算订单列表支付页面后台管理系统登录页商品管理商品编辑

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值