06 mybatis </sql>

文章目录

    • products.sql
    • pom.xml
    • mybatis-config.xml
    • ProductsMapper.xml
    • ProductsMapperImpl.java
    • Products.java
    • DButil.java
    • ProductsMapperImplTest.java
    • MapperTest.java

products.sql


create table products
(product_id       int auto_increment comment '产品ID'primary key,product_name     varchar(100)   null comment '产品名称',brand            varchar(50)    null comment '品牌',price            decimal(10, 2) null comment '价格',color            varchar(20)    null comment '颜色',storage_capacity varchar(10)    null comment '存储容量',description      text           null comment '描述'
)comment '手机产品表';

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.aistat</groupId><artifactId>mybatis_tech</artifactId><version>1.0-SNAPSHOT</version><!--打包类型--><packaging>jar</packaging><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><!--所有依赖--><dependencies><!--        MySQL驱动--><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><version>8.0.31</version></dependency><!--        mybatis依赖--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.15</version></dependency><!--测试环境--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version><scope>test</scope></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.14.8</version><scope>provided</scope></dependency></dependencies></project>

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><settings><setting name="mapUnderscoreToCamelCase" value="true"/><setting name="logImpl" value="STDOUT_LOGGING"/></settings><typeAliases><package name="com.aistart.tech.pojo"/></typeAliases><!--    <typeAliases>-->
<!--        <typeAlias alias="Products" type="com.aistart.tech.pojo.Products"/>--><!--    </typeAliases>--><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="com.mysql.cj.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/mybatisdb"/><property name="username" value="root"/><property name="password" value="root"/><property name="poolMaximumActiveConnections" value="1"/></dataSource></environment><environment id="testdevelopment"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="com.mysql.cj.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/test"/><property name="username" value="root"/><property name="password" value="root"/></dataSource></environment></environments><mappers><mapper resource="mapper/ProductsMapper.xml"></mapper></mappers>
</configuration>

ProductsMapper.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="mapper.ProductsMapper"><sql id="all">product_id, product_name, brand, price, color, storage_capacity, description</sql><sql id="select">select <include refid="all"></include> from productswhere</sql><!--id作为这个sql的唯一id,调用也是通过它--><insert id="insertOne" parameterType="Products">insert into products (product_name,color,price)values (#{productName},#{color},#{price})</insert><delete id="deleteOneById">delete from products where product_id = #{askdksad}</delete><update id="updateProductName" parameterType="Products">update products set product_name = #{productName} where product_id = #{productId}</update><select id="selectOneById" parameterType="int" resultType="com.aistart.tech.pojo.Products">/*
参数名一个时虽然可以随便写,但是不推荐*/select <include refid="all"></include>from products where product_id = #{productId}/*默认调用了get函数,利用反射,根据get+param()的形式找函数并且执行*/</select><!--JDBC>>>>sql>>>>resultSet>>>获取列并遍历>>>>>>--><select id="selectAll" resultType="com.aistart.tech.pojo.Products">select <include refid="all"></include>from products</select><select id="selectOneBynName" resultType="Products"><include refid="select"></include>product_name = #{name}</select>
</mapper>

ProductsMapperImpl.java


package com.aistart.tech.mapper.impl;import com.aistart.tech.mapper.ProductsMapper;
import com.aistart.tech.pojo.Products;
import com.aistart.tech.utils.DButil;
import org.apache.ibatis.session.SqlSession;public class ProductsMapperImpl implements ProductsMapper {@Overridepublic int insertOne(String name) {SqlSession sqlSession = DButil.getSqlSession();Products products = new Products();
//
//        products.setProductName(name);
//        products.setColor("黑色");
//        products.setPrice(19999.99);int rows = sqlSession.insert("insertOne",products );sqlSession.commit();//关闭掉sqlSession.close();return rows;}@Overridepublic Products selectOneById(int id) {SqlSession sqlSession = DButil.getSqlSession();Products one =(Products) sqlSession.selectOne("selectOneById", id);sqlSession.close();return one;}
}

Products.java


package com.aistart.tech.pojo;import lombok.*;@Data
@AllArgsConstructor
@NoArgsConstructor
public class Products {private Integer productId;private String productName;private String brand;private Double price;private String color;private String storageCapacity;private String description;}

DButil.java


package com.aistart.tech.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.InputStream;public class DButil {private static SqlSessionFactory sqlSessionFactory = null;//测试环境下的工厂private static SqlSessionFactory sqlSessionFactoryTest = null;static {//1.builder  一旦创建了 SqlSessionFactory,就不再需要它了
//        SqlSessionFactoryBuilder sqlSessionFactoryBuilder =//2.获取工厂// 获取资源 org.apache.ibatis.io.Resources;try {InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");//根据资源文件创建工厂sqlSessionFactory  = new SqlSessionFactoryBuilder().build(inputStream);//测试环境的创建工厂
//            sqlSessionFactoryTest  = new SqlSessionFactoryBuilder().build(inputStream,"testdevelopment");} catch (IOException e) {throw new RuntimeException(e);}}public static SqlSession getSqlSession(){//获得Sqlsessionreturn sqlSessionFactory.openSession();}public static void close(SqlSession session){session.close();}}

ProductsMapperImplTest.java


package com.aistart.tech.mapper.impl;import com.aistart.tech.mapper.ProductsMapper;
import com.aistart.tech.pojo.Products;
import org.junit.Test;public class ProductsMapperImplTest {ProductsMapper mapper = new ProductsMapperImpl();@Testpublic void test(){Products products = mapper.selectOneById(1);System.out.println(products);}
}

MapperTest.java


import com.aistart.tech.pojo.Products;
import com.aistart.tech.utils.DButil;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;import java.util.HashMap;
import java.util.List;public class MapperTest {@Testpublic void selectAllTest(){SqlSession sqlSession = DButil.getSqlSession();/*查取多个时,调用的是selectAll,必须使用selectList函数查取单个时,调用的是selectOne,必须使用selectOne函数*/List<Products> list = sqlSession.selectOne("mapper.ProductsMapper.selectAll");//默认通过反射直接向属性放值for (Products o : list) {System.out.println(o);}}@Testpublic void deleteTest(){try(SqlSession sqlSession = DButil.getSqlSession()){HashMap<String, Object> map = new HashMap<>();map.put("productName","小米");map.put("price",1999.9);int rows = sqlSession.insert("insertOne", map);sqlSession.commit();System.out.println(rows);}catch (Exception e){}}@Testpublic void insertTest(){SqlSession sqlSession = DButil.getSqlSession();Products products = new Products();products.setProductName("getterTest");//默认调用的时get()函数,sqlSession.insert("insertOne",products);sqlSession.commit();}@Testpublic void updateTest(){SqlSession sqlSession = DButil.getSqlSession();Products products = new Products();products.setProductId(17);products.setProductName("updateTest");sqlSession.update("mapper.ProductsMapper.updateProductName",products);sqlSession.commit();}@Testpublic void selectOneBynNameTest(){SqlSession sqlSession = DButil.getSqlSession();Object o = sqlSession.selectOne("selectOneBynName", "小米");}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/770910.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

知识图谱-图数据库-neo4j (1)踩坑记录

1、neo4j 安装 材料 &#xff1a; openjdk11 (neo4j 最低jdk版本要求) neo4j-community-4.4.30 CentOS 7.8 Release Date: 25 January 2024 Neo4j 4.4.30 is a maintenance release with many important improvements and fixes. Neo4j Deployment Center - Graph Database…

vuex状态管理的使用

一、创建store,单个store的使用 1、 /*** 该文件用于创建vuex中最核心的store*///引入Vuex import Vuex from vuex; import Vue from "vue";//使用vuex来集中管理状态,必要 //new store的前提是必须要使用Vuex插件 Vue.use(Vuex);//创建actions(本质就是对象) 用于…

【前端面试3+1】01闭包、跨域

一、对闭包的理解 定义&#xff1a; 闭包是指在一个函数内部定义的函数&#xff0c;并且该内部函数可以访问外部函数的变量。闭包使得函数内部的变量在函数执行完后仍然可以被访问和操作。 特点&#xff1a; 闭包可以访问外部函数的变量&#xff0c;即使外部函数已经执行完毕。…

vue项目中使用vue-pdf或pdf.Js,实现在页面上预览pdf内容

一。vue-pdf 1. 安装vue-pdf npm install --save vue-pdf2.页面引入 js部分 import pdf from "vue-pdf";data(){return {pdfUrl: "",pageTotal: 0,} }mounted(){this.pdfUrl pdf.createLoadingTask(pdf文件路径url);// 获取页码this.pdfUrl.promise…

Linux 搭建jenkins docker

jekin docker gitee docker 安装 jenkins docker run -d --restartalways \ --name jenkins -uroot -p 10340:8080 \ -p 10341:50000 \ -v /home/docker/jenkins:/var/jenkins_home \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /usr/bin/docker:/usr/bin/docker je…

QT数据类型和容器用法

Qt库提供了基于通用模板的容器类, 这些类可用于存储指定类型的数据项&#xff0c;Qt中这些容器类的设计比STL容器更轻&#xff0c;更安全且更易于使用。容器类也都是隐式共的&#xff0c;它们是可重入的&#xff0c;并且已针对速度/低内存消耗和最小的内联代码扩展进行了优化&a…

【解析几何】 【多源路径】 【贪心】1520 最多的不重叠子字符串

作者推荐 视频算法专题 本身涉及知识点 解析几何 图论 多源路径 贪心 LeetCode1520. 最多的不重叠子字符串 给你一个只包含小写字母的字符串 s &#xff0c;你需要找到 s 中最多数目的非空子字符串&#xff0c;满足如下条件&#xff1a; 这些字符串之间互不重叠&#xff0…

简单讲讲spring事务的传播机制

事务传播机制就像是一个指挥家&#xff0c;控制着程序中的各种操作&#xff08;比如修改数据库&#xff09;何时开始、何时结束&#xff0c;以及如何处理错误。 保证数据一致性&#xff1a;想象一下你在网上购物&#xff0c;你需要先从银行账户扣款&#xff0c;然后再把商品加入…

Wireshark使用实训---分析IP包

1.Wireshark简介和作用 Wireshark是一个开源的网络分析工具&#xff0c;用于捕捉和分析网络数据包。它可以帮助网络管理员和安全专家监控和解决网络问题&#xff0c;同时也可以用于学习和教学网络通信原理。 Wireshark可以在网络中捕获和分析传输的数据包&#xff0c;包括协议…

【Java初阶(五)】类和对象

❣博主主页: 33的博客❣ ▶文章专栏分类: Java从入门到精通◀ &#x1f69a;我的代码仓库: 33的代码仓库&#x1f69a; 目录 1. 前言2.面向对象的认识3.类的认识4. 类的实例化4.1什么是实例化4.2类和对象的说明 5.this引用6.对象初始化6.1 构造方法 7.static关键字8.代码块8.1 …

探索Python中的集成方法:Stacking

在机器学习领域&#xff0c;Stacking是一种高级的集成学习方法&#xff0c;它通过将多个基本模型的预测结果作为新的特征输入到一个元模型中&#xff0c;从而提高整体模型的性能和鲁棒性。本文将深入介绍Stacking的原理、实现方式以及如何在Python中应用。 什么是Stacking&…

算法-数据结构

算法-数据结构 金无足赤人无完人&#xff0c;在处理实际问题的时候我们可以使用到很多合适的数据结构&#xff0c;但目前还没有一个数据结构可以称的上完美。查询速度快的&#xff0c;插入的速度就会慢&#xff1b;插入速度和查询速度都快得&#xff0c;占用的空间就会多&…

PTAxt的考研路

xt是我院19级专业第一&#xff0c;但他认为保研并不能展示他全部的实力&#xff0c;所以他在22年初试一结束就加入了23考研的队伍中&#xff0c;并且他为了填补我院近些年来无北大研究生的空白&#xff0c;毅然决然决定扛起19级的大旗&#xff0c;在学校百年华诞之际献上他最诚…

Springboot项目之mybatis-plus多容器分布式部署id重复问题之源码解析

mybatis-plus 3.3.2 部署多个pod id冲突问题 配置&#xff1a; # 设置随机 mybatis-plus.global-config.worker-id: ${random.int(1,31)} mybatis-plus.global-config.datacenter-id: ${random.int(1,31)}源码解析&#xff1a;MybatisSqlSessionFactoryBean 重点&#xff1a…

mysql数据库查询

MYSQL数据库的搭建 今日目标&#xff1a; 1.搭建数据库 2.实现数据库的增删改查 00-回顾 #dos的常用指令 1. 切换盘符&#xff1a; 盘符名: 2. 切换上一级&#xff1a; cd ../ 3. 切换下一级&#xff1a; cd 目录名 4. 查看当前目录下的所有子目录和子文件&#xff1a; di…

光明源@智慧公厕赋能“厕所革命”主要体现在哪些方面?

当我们提及厕所&#xff0c;不再仅是简单的卫生设施&#xff0c;而是一种对生活品质的关怀与呵护。智慧公厕&#xff0c;作为厕所革命的引领者&#xff0c;以其独特的拟人魅力&#xff0c;彰显着人性化关怀的新风尚。今日&#xff0c;让我们一同探索&#xff0c;智慧公厕是如何…

数据库备份工具(实现数据定时覆盖)

数据库备份工具&#xff08;实现数据定时覆盖&#xff09; 永远热爱&#xff0c;永远执着&#xff01; 工具介绍 自动化测试数据库更新调度程序 这段 Python 脚本自动化了每天定时从生产数据库更新测试数据库的过程。它利用了 schedule 库来安排并执行每天指定时间的更新任务…

在for循环加判断条件当条件都满足时,同时显现的解决方法

一、代码示例 function fu(s) {str ;ste ;console.log(s);let Things s;for (let i 0; i < Things.length; i) {if (Things[i].pid kk) {console.log(Things[i].pid);ste <div class"commodity_nei"><div class"zxc_pic"><div cl…

[CISCN2019 总决赛 Day2 Web1]Easyweb ----不会编程的崽

CISCN的题质量还是很高的。 又是这熟悉的登陆界面。爆破&#xff1f;sql&#xff1f;还是xxe等。先看源码 估摸着也是sql注入。但似乎不是常规注入。同时扫描后台的结果应该也出来了&#xff0c;发现robots.txt 有点懵&#xff0c;后边看了大佬的wp才知道&#xff0c;提示的是*…

车载测试工具 canoe如何使用

其实canoe的使用非常的简单&#xff0c;结合自己的工作项目多多操作就可以了