MyBatis——商品的类别

Posted 基础较差的cs菜鸟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MyBatis——商品的类别相关的知识,希望对你有一定的参考价值。

MyBatis——商品的类别

实验要求
本实验要求根据商品表在数据库中创建一个product表,根据商品类别表在数据库中创建一个category表,并通过MyBatis查询商品类别为白色家电的商品的所有信息。

实验内容

表1 商品表(product)
商品编号(id)商品名称(goodsname)商品单价(price)商品类别(typeid)
1电视机4999.991
2冰箱3888.882
3空调2777.772
4洗衣机1666.662
表2 商品类别表(category)
商品类别编号(id)商品类别名称(typename)
1黑色家电
2白色家电

该案例需要实现以下功能:

  • 通过MyBatis查询商品类别为白色家电的商品的所有信息

实验分析
本实验主要考查对MyBatis的关联映射的掌握。

  • 建立好实验所需的数据库及表(其中需要用到外键)。
  • 需要在项目的src/main/resource目录下创建数据库连接的配置文件和MyBatis的核心配置文件和mapper文件夹。
  • 再在src/main/java下创建一个实体类Category,编写商品类别的基本信息;实体类Goods,编写商品的基本信息。
  • 再创建工具类MyBatisUtils。
  • 最后在src/test/java下创建一个测试类Test1完成实验内容。

商品表product和商品类别表category及外键的设置

代码实现

Resource

db.properties(数据库连接配置文件)

driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/test?serverTimezone=UTC&\\ characterEncoding=utf8&useUnicode=true&useSSL=false
username=root
password=1

mybatis-config.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>
    <!--  外部属性文件读取  -->
    <properties resource="db.properties"> </properties>
    <settings>
        <!--    打开延迟加载的开关    -->
        <setting name="lazyLoadingEnabled" value="true"/>
        <!--    将积极加载改成消息加载,即按需加载    -->
        <setting name="aggressiveLazyLoading" value="false"/>
        <!--    开启二级缓存    -->
        <setting name="cacheEnabled" value="true"/>
    </settings>
    <!-- 别名  -->
    <typeAliases>
        <package name="com.cqust.pojo"/>
    </typeAliases>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="$driver"/>
                <property name="url" value="$url"/>
                <property name="username" value="$username"/>
                <property name="password" value="$password"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="mapper/CategoryMapper.xml"/>
    </mappers>
</configuration>


CategoryMapper.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="com.cqust.pojo.Category">
	<!--注意:当关联查询出的列名相同时,需要使用别名区分-->
    <select id="findGoodsByTypename" resultMap="findGoodsByTypenameResult">
        select c.*,p.id as product_id,p.goodsname,p.price from product p,category c
            where c.id=p.typeid
                and c.typename=#typename
    </select>
    <resultMap id="findGoodsByTypenameResult" type="category">
        <id property="id" column="id"/>
        <result property="typename" column="typename"/>
        <!--    嵌套结果    -->
		<!-- 一对多关联映射:collection   ofType表示属性集合中元素的类型,List<Goods>属性即Goods类 -->
        <collection property="goodsList" ofType="Goods">
            <id property="id" column="product_id"/>
            <result property="goodsname" column="goodsname"/>
            <result property="price" column="price"/>
        </collection>
    </resultMap>
</mapper>

pojo层

Category类

package com.cqust.pojo;

import java.util.List;

public class Category 
    private int id;					//商品类别编号
    private String typename;		//商品类别名称
    private List<Goods> goodsList;	//商品列表

    public int getId() 
        return id;
    

    public void setId(int id) 
        this.id = id;
    

    public String getTypename() 
        return typename;
    

    public void setTypename(String typename) 
        this.typename = typename;
    

    public List<Goods> getGoodsList() 
        return goodsList;
    

    public void setGoodsList(List<Goods> goodsList) 
        this.goodsList = goodsList;
    

    @Override
    public String toString() 
        return "Category" +
                "id=" + id +
                ", typename='" + typename + '\\'' +
                ", goodsList=" + goodsList +
                '';
    


Goods类

package com.cqust.pojo;

import java.util.List;

public class Goods 
    private int id;				//商品编号
    private String goodsname;	//商品名称
    private double price;		//商品单价

    public int getId() 
        return id;
    

    public void setId(int id) 
        this.id = id;
    

    public String getGoodsname() 
        return goodsname;
    

    public void setGoodsname(String goodsname) 
        this.goodsname = goodsname;
    

    public double getPrice() 
        return price;
    

    public void setPrice(double price) 
        this.price = price;
    

    @Override
    public String toString() 
        return "Goods" +
                "id=" + id +
                ", goodsname='" + goodsname + '\\'' +
                ", price=" + price +
                '';
    


utils层

MyBatisUtils类

package com.cqust.utils;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.Reader;

/**
 * 工具类
 */
public class MyBatisUtils 
    private static SqlSessionFactory sqlSessionFactory = null;
    //初始化SQLSessionFactory对象
    static 
        try
            //使用MyBatis提供的Resource类加载MyBatis的配置文件
            Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
            //构建SQLSessionFactory
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
         catch (Exception e)
            e.printStackTrace();
        
    
    //获取SqlSession对象的方法
    public static SqlSession getSession()
        //若传入true表示关闭事务控制,自动提交;false表示开启事务控制
        return sqlSessionFactory.openSession(true);
    


测试层

Test1(测试类)

import com.cqust.pojo.Student;
import com.cqust.utils.MyBatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import java.util.ArrayList;
import java.util.List;

public class Test1 
   /**
     * 一对多
     */
    @Test
    public void findGoodsByTypenameTest()
    	//通过工具类生成SqlSession对象
        SqlSession session = MyBatisUtils.getSession();
        //使用session查询typename为白色家电的的商品
        Category category = session.selectOne("findGoodsByTypename","白色家电");
        //在控制台输出查询结果
        System.out.println(category);
        //关闭SqlSession
        session.close();
    



实验运行结果:

实验小结
  本实验主要考察了首先对开发中涉及的数据表之间,以及对象之间的关联关系,并由此引出了MyBatis框架中对关联关系的处理;然后通过此案例对MyBatis框架处理实体对象之间的3种关联关系进行了详细讲解;MyBatis还讲解了MyBatis 的缓存机制,包括一级缓存和二级缓存。通过学习MyBatis关联映射和缓存机制的内容,读者可以了解数据表之间及对象之间的3种关联关系,熟悉MyBatis 的缓存机制,并能够在MyBatis框架中熟练运用3种关联关系进行查询,熟练配置MyBatis缓存,从而提高项目的开发效率。

谢谢浏览!

基于java+Spring+SpringMVC+mybatis茅台酒业电商平台_白酒销售

现如今,酒业电商平台是商业贸易中的一条非常重要的道路,可以把其从传统的实体模式中解放中来,网上购物可以为消费者提供巨大的便利。通过酒业电商平台这个平台,可以使用户足不出户就可以了解现今的流行趋势和丰富的商品信息,为用户提供了极大的方便,酒业电商平台的主要功能包含:商品类别管理、商品的信息管理、订单管理、用户的管理等。网站分为管理员、会员用户这二种用户平台。酒业电商平台主要使用MySQL作为数据库管理系统,开发环境是Java,这是一个基于Web技术的B/S结构的酒业电商平台。实现了一个酒业电商平台网站。能够让广大消费者体验到网上平台购物的乐趣,为网上购物提供了一个管理高效的、决策科学化、安全有效的电子商务平台。

关键词:酒业电商平台,MySQL,MyEclipse ,商业贸易

酒业电商平台共分为两个部分,一部分是面向用户的前台部分,包括:用户的注册、登陆、查看商品信息、购物、提交订单、对商品进行查询等操作。另外一部分是网站的后台管理部分,这部分包括:对普通用户的账号进行删除、更改、查询管理,商品的管理、订单的管理等。

目 录
第1章 绪论 1
1.1 背景和研究意义 1
1.2 论文研究的主要内容 1
1.3 国内外现状 2
1.4 论文结构 2
第2章 关键技术介绍 3
2.1 JSP语言介绍 3
2.2 SSM简介 3
2.3 HTML/CSS简介 4
2.4 MYSQL介绍 4
第3章 系统分析 5
3.1 功能需求分析 5
3.2数据流程分析 7
3.3可行性分析 9
3.3.1 经济可行性 9
3.3.2 功能可行性 9
3.3.3 技术可行性 9
第4章 系统设计 10
4.1体系结构设计 10
4.2功能模块设计 11
4.3数据库设计 13
4.3.1 概念模型设计 13
4.3.2 数据库表设计 14
第5章 系统实现 20
5.1数据库连接实现 20
5.2系统前台主要功能实现 20
5.2.1 首页实现 20
5.2.2商品分类展示实现 22
5.2.3商品详情实现 23
5.2.4购物车实现 24
5.3系统后台主要功能实现 26
5.3.1管理员登陆实现 26
5.3.2商品管理实现 27
5.3.3订单管理实现 28
第6章 系统测试 30
6.1 测试用例 30
6.2 测试结果分析 31
第7章 结 论 33
参考文献 34
致 谢 35

以上是关于MyBatis——商品的类别的主要内容,如果未能解决你的问题,请参考以下文章

使用mybatis报错constructor found in com.atguigu.mybatis.bean.Department matching [java.lang.Integer, jav

mybatis报错:java.lang.IllegalArgumentException: invalid comparison: java.util.Arrays$ArrayList and jav

mybatis学习笔记-订单商品数据模型分析

mybatis报Error updating database. Cause: java.lang.IllegalArgumentException: invalid comparison: jav

Mybatis实现if trim

mybatis系列-09-订单商品数据模型