【SSM】mybatis初见

人形机器人人机交互解决方案(2026完整版) 《人形机器人人机交互解决方案(2026完整版)》摘要 本项目针对2026年人形机器人产业爆发式增长需求,提出了一套完整的人机交互解决方案。方案包含十大核心模块(语音识别、情感识别、手势识别等),采用五层架构设计,实现多模态融合交互,响应时间≤32ms,准确率≥99%。覆盖制造业巡检、家庭服务等10大场景,适配20+主流机型。项目总投资4.1亿元,预期年营收8.2亿元,将申请专利120项,培养专业人才300人。通过技术创新解决当前交互体验生硬、安全可控性不足等痛点,助力我国人形机器人产业实现从"跟跑 阅读详情

准备:

  • JDK1.8
  • Eclipse
  • mybatis所需jar包
  • mysql驱动jar
    这里写图片描述

比起hibernate,mybatis要轻量得多(看jar包就知道[偷笑])

第一步:建立web项目,这里因为后期整合,就直接建立web项目。再就是导入上面提到的包了。建立测试数据库。这里就以mall的products和category为例了。
字段如下了:
category:
这里写图片描述
products
这里写图片描述

建立对应实体类(省略getter和setter):

这里写图片描述

这里写图片描述

第二步:在src下配置mybatis-config.xml文件。
配置如下:

<?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>
<!-- 环境配置,默认为development,有详细的错误信息 -->
  <environments default="development">
  <!-- id不是绝对,可以区分多个环境配置,如不同平台数据库  -->
    <environment id="development">
    <!-- 事务管理配置,可选参数"JDBC"/"MANAGED",JDBC事务管理机制或者spring类型的web容器管理 -->
      <transactionManager type="JDBC"/>
      <!-- type可选参数,POOLED为连接池连接,UNPOOLED为非连接池链接 -->
      <dataSource type="POOLED">
      <!-- 数据库的连接配置 -->
        <property name="driver" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/mall"/>
        <property name="username" value="root"/>
        <property name="password" value="123456"/>
      </dataSource>
    </environment>
  </environments>
  <!-- 指定数据库操作映射文件 -->
  <mappers>
    <mapper resource="mapper/products-mapper.xml"/>
  </mappers>
</configuration>

第三步:配置数据库操作的映射文件以及dao接口

<?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="products_dao.ProductsDao">
  <!-- 添加数据 -->
  <insert id="insertProducts" parameterType="entity.Products">
    insert  into products(pname,price,unitsOnStack) values(#{pname},#{price},#{unitsOnStack})
  </insert>
  <!-- 删除数据 -->
  <delete id="deleteProduct" parameterType="int">
    delete from products where pid = #{pid}
  </delete>
  <!-- 更新数据 -->
  <update id="updateProduct" parameterType="entity.Products">
    update products set pname = #{pname} where pid=#{pid}
  </update>

  <!-- 定义一个结果映射,这里包含了products和category的多对一关系 -->
    <resultMap type="entity.Products" id="product">
        <id column="pid" property="pid" javaType="java.lang.Integer" />
        <result column="pname" property="pname" javaType="java.lang.String" />
        <result column="price" property="price" javaType="java.lang.Double" />
        <result column="unitsOnStack" property="unitsOnStack" javaType="java.lang.Double" />
        <!--association配置多对一多方,实体内包含类型类-->
        <association property="category" column="cid"
            select="queryCategoryByID">
        </association>
    </resultMap>
    <!-- 这是category的结果映射,这里包含了category与products的一对多关系 -->
    <resultMap type="entity.Category" id="category">
        <id column="cid" property="cid" />
        <result column="cname" property="cname" />
        <!--collection配置多对一一方,实体内包含商品集合-->
        <collection property="products" column="cid" select="queryProductsByID"></collection>
    </resultMap>
    <!-- 包含两个表的联合结果映射product1 -->
    <resultMap type="entity.Products" id="product1">
        <id column="pid" property="pid" />
        <result column="pname" property="pname" />
        <association property="category" javaType="entity.Category">
            <id column="cid" property="cid" />
            <result column="cname" property="cname" />
            <collection property="products" resultMap="product1"></collection>
        </association>
    </resultMap>

    <!-- 通过id查询的结果映射到category -->
    <select id="queryCategoryByID" parameterType="int" resultMap="category">
        select * from category
        where cid=#{cid}
    </select>
    <!-- 通过id查询的结果映射到product -->
    <select id="queryProductsByID" resultMap="product"
        parameterType="int">
        select * from products where cid=#{cid}
    </select>
    <!-- 将查询的内容映射到product对应的结果映射  -->
    <select id="queryProducts" resultMap="product">
        select * from products
    </select>
      <!-- 将查询的内容映射到category对应的结果映射 -->
    <select id="queryCategory" resultMap="category">
        select * from category
    </select>
  <!-- 最后通过两个表的结果映射所得到的结果 -->
  <select id="queryProductsByUnion" resultMap="product1">
        select * from
        mall.products a left join mall.category b on a.cid=b.cid;
    </select>
  <!-- 动态查询 -->
  <select id="queryProductsByCondition" parameterType="entity.Products" 
  resultType="entity.Products">
  select * from products
  <!-- trim加where前缀和去掉重复的and -->
  <trim prefix="where" suffixOverrides="and">
        <if test="pname != null">
            pname = #{pname} and
        </if>
        <if test="price != null">
            price = #{price} and
        </if>
        <if test="unitsOnStack != null">
            unitsOnStack = #{unitsOnStack}
        </if>
  </trim>
  </select>
</mapper>

dao接口:

package products_dao;

import java.util.List;
import entity.Products;

public interface ProductsDao {
    List<Products> queryProducts();
    int insertProducts(Products pro);
    int deleteProduct(int pid);
    int updateProduct(Products pro);
    List<Products> queryProductsByUnion();
    List<Products> queryProductsByCondition(Products pro);
}

当 查询的数据不是实体类中存在,而是一些特殊业务场景,如联表统计销售额等等,使用返回值类型为map集合就很适合此时的业务,从而没有必要去建立一个实体类

第四步:测试

package test;

import java.io.IOException;
import java.io.Reader;
import java.util.List;

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 entity.Products;
import products_dao.ProductsDao;

public class PrdouctTest {
    public static void main(String[] args) throws IOException {
        String configPath = "mybatis-config.xml";
        //  读取配置
        Reader reader = Resources.getResourceAsReader(configPath);
        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
        SqlSessionFactory factory = builder.build(reader);
        SqlSession session = factory.openSession();

        //  查询
        //  通过接口映射所对应执行的sql语句
        ProductsDao dao = session.getMapper(ProductsDao.class);
        List<Products> list = dao.queryProducts();
        for (Products products : list) {
            System.out.println(products.getPname());
        }

        //  添加
        Products pro = new Products();
        pro.setPname("嘻嘻");
        pro.setPrice(4.0);
        pro.setUnitsOnStack(100.0);

        int rs = dao.insertProducts(pro);
        if(rs>0) {
            System.out.println("恭喜你插入成功");
        }else{
            System.out.println("恭喜你插入失败");
        }
        session.commit();

        // 删除
        int rs1 = dao.deleteProduct(9);
        if(rs1>0) {
            System.out.println("恭喜你删除成功");
        }else{
            System.out.println("恭喜你删除失败");
        }
        session.commit();

        // 更新
        Products pro1 = new Products();
        pro1.setPid(8);
        pro1.setPname("辣条");
        int rs2 = dao.updateProduct(pro1);
        if(rs2>0) {
            System.out.println("恭喜你修改成功");
        }else{
            System.out.println("恭喜你修改失败");
        }
        session.commit();

        // 联表查询
        List<Products> list1=dao.queryProductsByUnion();
        for(Products pro2:list1){
            System.out.println(pro2.getPid()+"  "+pro2.getCategory().getCname());
        }

        // 动态查询
        Products pro3 = new Products();
        pro.setPname("辣条");
        List<Products> list2=dao.queryProductsByCondition(pro3);
        System.out.println(list2.size());

    }
}

写的比较仓促,基本用法都有了。有时间再补充一下。

数字孪生实战:如何用Blender+Unity快速搭建未来工厂3D模型(附资源包) 本文提供了一套利用Blender进行三维建模,再结合Unity构建虚拟仿真环境的实用方案,旨在帮助中小型制造企业低成本、高效率地搭建未来工厂数字孪生原型系统。文章详细介绍了从数据规划、模型优化到场景构建、逻辑仿真与数据对接的全流程,并附有资源包,助力技术团队快速实现从静态展示到动态交互的数字孪生应用。 阅读详情

相关推荐

Ansys疲劳仿真:工程结构寿命评估的实战方法论

做了这么多年仿真,有个感受越来越深——静力学算得再漂亮,疲劳寿命预测不对,项目照样过不了评审。不是因为理论有多复杂,而是因为疲劳损伤的物理机制本身就带有统计属性,材料内部的微观缺陷分布、应力集中位置、载荷谱的随机性,每一项都能让结果偏移20%甚至更多。本文从实战出发,梳理Ansys疲劳仿真的核心流程,重点讲清楚载荷类型选择、S-N曲线处理、应力集中修正这几个最容易出问题的环节。疲劳仿真做好了,最大的收获不是跑出一个漂亮的Damage云图,而是对结构的真实薄弱环节建立起量化的认知。

keyanxiaobaigou的博客 527

mybatis用association指定外键结合select实现级联属性查询

package com.gewb.dao; import java.util.List; import com.gewb.entity.Student; public interface StudentDao { public void addStudent(Student student); // public List findStudentByAddress

jamesge的博客 9032

将CityScapes数据集转换为COCO格式的实例分割数据集

##¥##2019年结束前最后两小时,写出本年度最后一篇博客,不是博主没地方去跨年,实在是Coding乐趣无穷ahhhh ##¥## COCO数据集是研究实例分割的通用数据集,但是针对道路环境的数据较少,对于自动驾驶和移动机器人的应用并不适配。而提供道路环境的实例分割数据的数据集目前有KITTI、CityScapes、Apllo等,CityScapes算是应用较广,数据质量较高的一个,所以,本篇...

陆羽飞的博客 9940

resultMap中association的各个属性

resultMap中association的各个属性的含义: property:映射数据库列的字段或属性。 colum:数据库的列名或者列标签别名。 javaTyp:完整java类名或别名。 jdbcType支持的JDBC类型列表列出的JDBC类型。这个属性只在ins...

念心的博客 2万+

ADI官方例程HDL和No-OS生成Vivado工程

这一步是选择下载源,一般都是选择国内镜像,因为国外的源太慢了,这里选择阿里的镜像,如果没有这个选项可以在下面的User URL里添加就行,选择好源后然后点击下一步。下一步会从你选择的源上下载软件包目录,如果提示Unable to get setup from https://xxxxxx/,返回上一步,选择别的源,例如第二个163网易的源。然后就是你想要安装在哪了,下面的选项好像会决定环境变量存放在哪,不过一般都是个人电脑选择第一个默认的就行,然后点下一步。下好之后双击打开,就是这个界面了,直接点下一步。

代码匠的博客 3832

VN1630A硬件配置指南:手把手教你用CanApe搭建XCP标定工程(附ELF文件配置技巧)

本文详细介绍了如何使用VN1630A硬件和CanApe软件搭建XCP标定工程,包括硬件配置、CanApe工程创建、ELF文件处理及XCP协议层配置等关键步骤。特别针对实际项目中常见的错误和细节问题提供解决方案,帮助工程师高效完成ECU参数标定工作。

git9versioner的博客 1156

mybatis 一对一关系取值association

mybatis 一对一关系取值association mybatis支持一对一取值和一对多取值。简单的来讲就是mybatis实现的如下的功能。 我有一个user表,还有一个duty表,其中每一个人只能属于一个部门,这样每个人和部门就是一对一的关系。这个时候表是这样设计的: user表中的字段DUTYID对应的是duty表中的id字段。那么如果正常是用关联进行查询的话是这样的。

archer的技术故事 5461

EMC辐射发射测试:垂直与水平极化测试原理与实战指南

电磁兼容(EMC)测试是确保电子设备在复杂电磁环境中稳定运行的关键环节,其核心在于评估设备产生的电磁干扰(EMI)强度。辐射发射测试作为EMC测试的重要组成部分,通过测量设备向空间辐射的电磁噪声,判断其是否符合国际标准限值。测试原理基于电磁波的极化特性,即电场矢量的振动方向,主要分为垂直极化和水平极化。理解极化特性对于精准定位辐射源、高效进行EMC整改具有重要技术价值。在工程实践中,垂直极化噪声通常源于线缆辐射等垂直结构,而水平极化噪声多来自PCB走线等水平结构。通过分别测量两种极化方向的辐射最大值,可以全

weixin_32770423的博客 353

mybatis联表查询的几种方式,association和collection的用法

mybatis的association以及collection的用法前言:一、association 的三种用法:第一种用法:association中使用select第二种方法,嵌套 resultMap第三种方法:嵌套 resultMap 简化版二、collection的三种用法:1、第一种方法:用select,跟association 中使用select类似:第二种方法:嵌套resultMap3...

qq_34851243的博客 3825

RAP Draft Handling 全面拆解:从独占 Draft 到协作 Draft 的架构与落地实践

独占 Draft 的启用点在行为定义头部的with draft。with draft;create;update;delete;with draft;上面这段代码来自一个完整的 Draft 启用示例,包含了 Draft 表声明、锁策略、ETag、Draft 动作等关键要素。:告诉框架草稿存哪。:告诉框架如何做并发控制与一致性保护。:把草稿生命周期动作显式暴露出来,让 UI 与事务引擎能正确驱动流程。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 957

数字电视中的 Closed Caption (CC) 字幕标准协议

本文将详细介绍 DVB中的 CC 字幕标准协议,包括数据结构格式、字段定义、字段占用比特数以及字段用途。此外,本文还将举例说明如何从 TS 传输流中解析 CC 字幕信息,并组织打包到电视节目中进行显示。

以实战经验介绍行业知识 670

JavaEE_SSM框架_MyBatis之【人生若只如初见】

Mybatis的介绍 Mybatis是一个半自动的【ORM框架】, Object Relation Mapping:统一自动管理SQL语句【对象关系映射】 Object:Java是一个面向对象的编程语言 Relation:数据库MySQL是一个关系型数据库 Mapping:映射 Mybatis的历史 原是【Apache】的一个开源项目【iBatis】 2010年6...

艾维的博客 256

Unity 热更 之 【YooAsset 热更】几分钟快速了解 YooAsset [功能面板]、以及 [基础代码] 说明

Unity 的资源管理系统不断发展,以适应不同项目的需求和解决特定的问题。AssetBundle 和 Addressable Asset System 是 Unity 官方提供的资源管理解决方案,而 YooAsset 是第三方提供的资源管理系统。简化的API和易用性YooAsset 可能提供了更简单直观的 API,使得资源加载和管理更加容易。对于不熟悉 Addressable 或 AssetBundle 复杂配置的开发者来说,YooAsset 可能是一个更易于上手的选择。性能优化。

仙魁XAN 2955

【DAY2】ssm初见

SSM初见 今天是开始学习ssm的第一天,老师主要讲了如何使用maven新建一个ssm的项目,并使用ssm实现了昨天的登陆功能。 一、项目创建 项目依旧是用IDEA创建,在新建项目中选择Maven,选择下方的webapp,然后Next Maven仓库可选本地,也可使用默认的,这里使用默认的即可。 创建完成后新建两个包,java和resources,分别用来存储java文件和配置文件。 二、配置文件 在resources中那个加入applicationContext.xml文件来配置数据库等内容,spri

HulkWong的博客 280

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

【SSM整合】SpringMVC + Spring + Mybatis整合详细教程

本文为SpringMVC + Spring + Mybatis整合教程相关详细介绍,从数据库数据准备、相关依赖包添加、创建项目基本结构和配置框架,到Mybatis层的编写、Spring层的编写、SpringMVC层的编写,再到前端页面编写等,最后进行运行与测试,按步骤对SSM框架整合进行详细的解析~

小新要变强的博客 5428

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

复习使用SSM(mybatis)

提高开发的效率, 让开发人员把更多的精力集中在业务逻辑处理层面;Java编程语言: SpringPython编程语言: Django Flask TornadoMybatis是一个优秀的持久层框架,底层基于JDBC实现与数据库的交互;使用此框架程序员只需要通过注解或者修改xml配置文件的方式配置好需要执行的SQL语句,MyBatis框架会根据SQL语句生成对应的JDBC代码并对数据库中数据进行增删改查操作。该项目是一款社交媒体应用,用户可以在平台上发表短文等信息,分享自己的想法、心情和生活。

qq_20770569的博客 1275

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

SSM Spring MVC集成mybatis

完成部门基本的 CRUD 和分页查询,完成员工基本的 CRUD、分页查询和过滤查询(根据姓名和邮箱模糊查询,根据部门查询)。

m0_63600788的博客 1611

SSM框架之Mybatis

什么是框架?框架就是对技术的封装,将基础的技术进行封装,便于程序员使用,提高开发效率ssm框架是什么?ssm包括spring、springMvc、Mybatis,是后端企业级开发时会使用到的框架组合,在开发时经常会搭配在一起使用,共同构建企业级web应用程序ssm框架用在哪些方面?1.业务逻辑层:使用spring管理业务逻辑层的Bean,比如复杂的验证,逻辑代码。

@李青龙的博客 897

SSM框架--MyBatis

二、Spring核心功能 1. IOC容器配置 2. AOP切面示例 三、Spring MVC工作流程

m0_74140204的博客 1110

ssm框架mybatis的作用

今天答辩: 老师问了我ssm框架,mybatis的作用 ssm框架是spring mvc,spring和mybatis框架的整合,是标准的mvc模式,讲整个系统划分为表现层,controller层,service层,dao层。使用spring mvc负责请求的转发和视图管理,spring实现业务对象管理,mybatis作为数据对象的持久化引擎。 springmvc 1.客户端发送请求到Di...

weixin_43801836的博客 4134

【SSM框架】——Mybatis详解01+文末案例【源码自取】

正式开始学习mybatis框架,今天主要是了解基础知识,并且完成框架的导入。欢迎小伙伴一起来共同学习。喜欢就来个三连吧!

muzi_longren的博客 1490

SSM整合及MyBatis-Plus的使用

目录前言学习内容什么是SSM?SSM整合三阶段Spring与Spring MVC环境配置Spring与MyBatis的整合配置整合其他组件 前言 前面的文章我们已经学习了Spring、Spring MVC和Mybatis,本节我们就来使用他们整合我们的SSM框架的整合运用。 学习内容 什么是SSM? SSM(Spring+SpringMVC+MyBatis) 框架集由Spring、MyBatis两个开源框架整合而成(SpringMVC是Spring中的部分内容),常作为数据源较简单的web项目的框架。百度百

小柯的的博客 4324

SSM框架之MyBatis

文章目录MyBatis原生态jdbc程序中的问题mybatis框架原理mybatis架构案例log4j.properties的使用SqlMapConfig.xml的使用po类和映射文件的使用创建会话操作数据库mybatis开发dao的方法SqlSession使用范围原始dao开发方法mapper动态代理方法SqlMapConfig.xml的详解properties属性settings(全局参数配置...

MOKE_SPACE 1669

SSM-Mybatis篇

SSM中的Mybatis篇(1): Mybatis是针对数据库进行操作的一个框架,基于jdbc产生的一个便捷的操作数据库的框架,底层是对jdbc进行封装,简化操作数据库的操作量。 Mybatis针对数据库进行操作的两种方式分别是 通过对主配置文件的解析,解析出配置文件中的数据,连接数据库。然后解析配置文件中的sql语句,通过sql语句对数据可进行增删改查,完成对数据库的操作 通过注解的形式解析出sql语句,再对数据库进行操作 这两种方式原理都是相同的,通过对主配置文件的解析来连接数据库,然后通过

bug01111的博客 3106

[ SSM ] 浅谈 SSM 框架(Spring+SpringMVC+MyBatis)

SSM ? 陌生吗 ? 我敢说来看这篇文章的你肯定不陌生~~~ 哈哈哈哈

qq_51577576的博客 5596

SSM 整合Mybatis配置

SSM 整合Mybatis配置 第一步 创建applicatio.xml 主配置文件 配置如下: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springfram

weixin_45221460的博客 1299
上一篇: 【SSM】SpringMVC初见
下一篇: 【SSM】Spring+SpringMVC+Mybatis整合
AwesomeYangIsMe
博客等级 码龄10年 49粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值