Mr.张小白(案例:商品的类别的MyBatis的实现)
商品的类别
一、步骤
1.引入相关依赖pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.zjd</groupId><artifactId>Part4</artifactId><version>1.0-SNAPSHOT</version><dependencies><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.2</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.11</version></dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency></dependencies><build><resources><resource><directory>src/main/java</directory><includes><include>**/*.properties</include><include>**/*.xml</include></includes></resource></resources></build></project>
2.导入数据库数据
1、新建数据库mybatis
CREATE DATABASE mybatis;
2、在mybatis数据库下创建表product
create table product(id int primary key auto_increment,goodsname varchar(20) not null ,price int not null ,typeid int not null
);
3、在product表中插入数据
insert into product(id, goodsname, price, typeid) VALUES
(1,'电视机',5000,1),
(2,'冰箱',4000,2),
(3,'空调',3000,2),
(4,'洗衣机',2000,4);
4、在mybatis数据库下创建表category
create table category(id int primary key auto_increment,typename varchar(20) not null
);
5、在category表中插入数据
insert into category(id, typename) VALUES
(1,'黑色电视'),
(2,'白色电视');
3.创建连接数据库配置文件db.properties
# MySQL的版本在8.0之下的,
mysql.driver=com.mysql.jdbc.Driver
# MySQL的版本在8.0之上的,
mysql.driver=com.mysql.cj.jdbc.Driver
mysql.url=jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC&characterEncoding=utf8&useUnicode=true&useSSL=false
mysql.username=root
mysql.password=root
4.创建myBatis的核心配置文件mybatis-config.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><properties resource="db.properties"/><settings><setting name="cacheEnabled" value="true"/><setting name="lazyLoadingEnabled" value="true"/><setting name="aggressiveLazyLoading" value="false"/></settings><typeAliases><package name="com.zjd.pojo"/></typeAliases><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="${mysql.driver}"/><property name="url" value="${mysql.url}"/><property name="username" value="${mysql.username}"/><property name="password" value="${mysql.password}"/></dataSource></environment></environments><mappers><mapper resource="com/zjd/mapper/CategoryMapper.xml"/></mappers>
</configuration>
5.创建product的实体类Product.java
package com.zjd.pojo;public class Product {private int id;private String goodsname;private int price;private int typeid;@Overridepublic String toString() {return "Product{" +"id=" + id +", goodsname='" + goodsname + '\'' +", price=" + price +", typeid=" + typeid +'}';}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 int getPrice() {return price;}public void setPrice(int price) {this.price = price;}public int getTypeid() {return typeid;}public void setTypeid(int typeid) {this.typeid = typeid;}
}
6.创建category的实体类Category.java
package com.zjd.pojo;import java.util.List;public class Category {private int id;private String typename;private List<Product> product;@Overridepublic String toString() {return "Category{" +"id=" + id +", typename='" + typename + '\'' +", product=" + product +'}';}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<Product> getProduct() {return product;}public void setProduct(List<Product> product) {this.product = product;}
}
7.创建Category.java的映射文件CategoryMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zjd.pojo.Category"><select id="findProductWithCategory" parameterType="Integer"resultMap="ProductWithCategoryResult">SELECT c.*,p.id as typeid,p.goodsname,p.pricefrom category c,product pWHERE c.id=p.typeidand c.id=#{id}</select><resultMap type="com.zjd.pojo.Category"id="ProductWithCategoryResult"><id property="id" column="id"/><result property="typename" column="typename"/><collection property="product" ofType="com.zjd.pojo.Product"><id property="id" column="typeid"/><result property="goodsname" column="goodsname"/><result property="price" column="price"/></collection></resultMap>
</mapper>
8.将映射文件加载到mybatis-config.xml中
<!-- 上图我已加载过 --><mappers><mapper resource="com/zjd/mapper/CategoryMapper.xml"/></mappers>
9.创建MyBatis的工具类MyBatisUtils.java
package com.zjd.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.IOException;
import java.io.Reader;public class MyBatisUtils {public static SqlSessionFactory sqlSession=null;static {try {Reader reader= Resources.getResourceAsReader("mybatis-config.xml");sqlSession=new SqlSessionFactoryBuilder().build(reader);}catch (IOException e){e.printStackTrace();}}public static SqlSession getSession(){return sqlSession.openSession();}
}
9.创建测试类CategoryTest.java测试运行
package Test;import com.zjd.pojo.Category;
import com.zjd.utils.MyBatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;public class CategoryTest {SqlSession session=null;@Beforepublic void Before(){session= MyBatisUtils.getSession();}@Testpublic void findProductWithCategory(){Category category=session.selectOne("com.zjd.pojo.Category.findProductWithCategory",2);System.out.println(category);}@Afterpublic void After(){session.commit();session.close();}
}
二、项目结构
注意:这个项目文件里,除了我们上述的这类文件之外,还有一个log4j.properties文件,这个文件是方便大家查看sql语句运行的情况,下面是它的配置代码(配置时,需要现在pom.xml文件中引入jar包)
1、引入jar包:
<dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency>
2、配置代码:
#全局日志配置
log4j.rootLogger=DEBUG,Console
#控制台输出配置
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
#日志输出级别
log4j.logger.java.sql.ResultSet=INFO
log4j.logger.org.apache=INFO
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
三、本次完成案例:商品的类别
通过MyBatis查询商品类别为白色家电的商品的所有信息
四、重要讯息!!!!!
各位小伙伴有疑问可以私聊我,我会在每周日统一查看回复
路过的小伙伴,该篇文章如果对你有帮助,请留下你的小手(
Mr.张小白(案例:商品的类别的MyBatis的实现)相关推荐
- Mr.张小白(案例:基于Spring MVC实现后台登陆系统验证)
基于Spring MVC实现后台登陆系统验证 一.步骤 1.引入相关依赖pom.xml <?xml version="1.0" encoding="UTF-8&qu ...
- Mr.张小白(案例:学生信息查询系统的MyBatis的实现)
学生信息查询系统 一.步骤 1.引入相关依赖pom.xml <?xml version="1.0" encoding="UTF-8"?> <p ...
- Mr.张小白(案例:基于MyBatis注解的学生管理程序的实现)
基于MyBatis注解的 学生信息查询系统 一.步骤 1.引入相关依赖pom.xml <?xml version="1.0" encoding="UTF-8&quo ...
- 【自我介绍】------Mr.张小白(案例:员工管理系统的MyBatis的实现)
@自我介绍 欢迎各位来看我的这篇文章 你好! 这是我第一次使用发表文章.操作的还不太熟练,在接下来的日子里,希望我能够和CSDN这个大家庭一起成长,一起进步. 新的改变(IDEA使用) 我现在是一名在 ...
- Mr.张小白(案例:基于Spring MVC实现文件上传和下载)
基于Spring MVC实现文件上传和下载 一.步骤 1.引入相关依赖pom.xml <?xml version="1.0" encoding="UTF-8&quo ...
- Mr.张小白【免安装版MySQL的相关配置】
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.MySQL是什么? 二.配置步骤 1.以管理员身份打开cmd(命令行) 2.进入MySQL的bin目录 3.安装M ...
- 【通知】Mr.张小白
通知!!!通知!!!通知!!! 重要的事情说三遍 一.本周由于要准备期末考试,暂缓更新,我将会在考试周结束后进行新一轮的更新,不好意思撒o,0' 下周我将要更新的内容是<图书馆管理系统>有 ...
- java写一个外网访问的接口_【JAVA基础】一个案例搞懂类、对象、重载、封装、继承、多态、覆盖、抽象和接口概念及区别(中篇)...
0 前言 初学JAVA时,总会对一些概念一知半解,相互混淆,不明其设计的用意,如类.对象.重载.封装.继承.多态.覆盖.抽象类.接口概念.为便于理解和巩固,本文将基于一个案例及其变形,展现各个概念的定 ...
- 张小白的渗透之路(二)——SQL注入漏洞原理详解
SQL注入漏洞简介 乱七八糟的就不多说了,自己百度去 SQL注入原理 想要更好的学习SQL注入,那么我们就必须要深入的了解每种数据库的SQL语法及特性.下面通过一个经典的万能密码的例子带大家来拨开一下 ...
最新文章
- 言论丨李开复:中国在AI领域的优势与机会,现阶段AI领域的挑战
- crontab 案例
- 如何备考上海市高等学校计算机一级,如何备考全国计算机一级等级考试
- Linux运维:如何根据端口号查看哪个应用占用?
- php localtion,详解Nginx Location配置
- 成绩排序的c语言算法,成绩排序系统(练习排序算法和复习C语言)
- OpenCV在水平线上校准3个摄像机的实例(附完整源代码)
- java中vector容器,vector向量容器(常用的使用方法总结)
- html网页上传到服务器_JSP+Servlet实现文件上传到服务器功能
- YouTube-DNN优化原理推导
- Qt工作笔记-Qt仿大佬使用关键字(Q_DECL_OVERRIDE与override)
- win10操做系统恢复操做
- 电学 —— 家庭用电中的电学现象
- html空心字体怎么设置,Word或者WPS如何设置阴影空心的特大字体?
- wiznote can't networking
- CAD打印后图形不显示?
- uint8_t范围_uint8_t / uint16_t / uint32_t /uint64_t 是什么数据类型 - 大总结,看完全明白了...
- Silvaco TCAD仿真学习Lesson2——Athena仿真
- 微信 心理测试 软件,敢不敢做一份微信版心理测试?
- 计算机无法识别移动硬盘怎么办,移动硬盘不能识别,教您移动硬盘不能识别怎么办...
热门文章
- 无穷级数积分法:+一元微积分
- 电影赏析 003《斯蒂芬 · 乔布斯》
- 经典排序算法之:冒泡排序
- Python neo4j建立知识图谱,药品知识图谱,neo4j知识图谱,知识图谱的建立过程,智能用药知识图谱,智能问诊必备知识图谱
- 新中大SE(ngpower)凭证修改、删除
- dnf起源版本无限连接服务器,DNF起源版本BUG不断 爆出无限卡金币跨四已炸
- 16.隐函数及参数方程所确定的函数求导
- python对数坐标绘制
- 用JAVA实现一个简易的打砖块小游戏
- 红米note_标注2014916_官方线刷包_救砖包_解账户锁
基于Spring MVC实现后台登陆系统验证 一.步骤 1.引入相关依赖pom.xml <?xml version="1.0" encoding="UTF-8&qu ...
学生信息查询系统 一.步骤 1.引入相关依赖pom.xml <?xml version="1.0" encoding="UTF-8"?> <p ...
基于MyBatis注解的 学生信息查询系统 一.步骤 1.引入相关依赖pom.xml <?xml version="1.0" encoding="UTF-8&quo ...
@自我介绍 欢迎各位来看我的这篇文章 你好! 这是我第一次使用发表文章.操作的还不太熟练,在接下来的日子里,希望我能够和CSDN这个大家庭一起成长,一起进步. 新的改变(IDEA使用) 我现在是一名在 ...
基于Spring MVC实现文件上传和下载 一.步骤 1.引入相关依赖pom.xml <?xml version="1.0" encoding="UTF-8&quo ...
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.MySQL是什么? 二.配置步骤 1.以管理员身份打开cmd(命令行) 2.进入MySQL的bin目录 3.安装M ...
通知!!!通知!!!通知!!! 重要的事情说三遍 一.本周由于要准备期末考试,暂缓更新,我将会在考试周结束后进行新一轮的更新,不好意思撒o,0' 下周我将要更新的内容是<图书馆管理系统>有 ...
0 前言 初学JAVA时,总会对一些概念一知半解,相互混淆,不明其设计的用意,如类.对象.重载.封装.继承.多态.覆盖.抽象类.接口概念.为便于理解和巩固,本文将基于一个案例及其变形,展现各个概念的定 ...
SQL注入漏洞简介 乱七八糟的就不多说了,自己百度去 SQL注入原理 想要更好的学习SQL注入,那么我们就必须要深入的了解每种数据库的SQL语法及特性.下面通过一个经典的万能密码的例子带大家来拨开一下 ...