MyBatis注解开发

MyBatis常用注解

注解对应XML说明
@Insert< insert>新增SQL
@Update< update>更新SQL
@Delete< delete>删除SQL
@Select< select>查询SQL
@Param参数映射
@Results< resultMap>结果映射
@Result< id>< result>字段映射

开发流程:
1.dao包下创建接口

public interface GoodsDAO {@Select("select * from t_goods where current_price between  #{min} and #{max} order by current_price limit 0,#{limt}")public List<Goods> selectByPriceRange(@Param("min") Float min ,@Param("max") Float max ,@Param("limt") Integer limt);@Insert("INSERT INTO t_goods(title, sub_title, original_cost, current_price, discount, is_free_delivery, category_id) VALUES (#{title} , #{subTitle} , #{originalCost}, #{currentPrice}, #{discount}, #{isFreeDelivery}, #{categoryId})")//<selectKey>@SelectKey(statement = "select last_insert_id()" , before = false , keyProperty = "goodsId" , resultType = Integer.class)public int insert(Goods goods);@Select("select * from t_goods")//<resultMap>@Results({//<id>@Result(column = "goods_id" ,property = "goodsId" , id = true) ,//<result>@Result(column = "title" ,property = "title"),@Result(column = "current_price" ,property = "currentPrice")})public List<GoodsDTO> selectAll();

2.mybatis-config.xml中添加mapper

<mapper class="dao.GoodsDAO"/>

or

<package name="dao"/>

3.测试查询方法selectByPriceRange

 	@Testpublic void testSelectByPriceRange() throws Exception {SqlSession session = null;try{session = MyBatisUtils.openSession();GoodsDAO goodsDAO = session.getMapper(GoodsDAO.class);List<Goods> list = goodsDAO.selectByPriceRange(100f, 500f, 20);System.out.println(list.size());}catch (Exception e){throw e;} finally {MyBatisUtils.closeSession(session);}}

4.测试插入方法insert

	@Testpublic void testInsert() throws Exception {SqlSession session = null;try{session = MyBatisUtils.openSession();Goods goods = new Goods();goods.setTitle("测试商品");goods.setSubTitle("测试子标题");goods.setOriginalCost(200f);goods.setCurrentPrice(100f);goods.setDiscount(0.5f);goods.setIsFreeDelivery(1);goods.setCategoryId(43);GoodsDAO goodsDAO = session.getMapper(GoodsDAO.class);//insert()方法返回值代表本次成功插入的记录总数int num = goodsDAO.insert(goods);session.commit();//提交事务数据System.out.println(goods.getGoodsId());}catch (Exception e){if(session != null){session.rollback();//回滚事务}throw e;}finally {MyBatisUtils.closeSession(session);}}

5.测试结果映射

	@Testpublic void testSelectAll() throws Exception {SqlSession session = null;try{session = MyBatisUtils.openSession();GoodsDAO goodsDAO = session.getMapper(GoodsDAO.class);List<GoodsDTO> list = goodsDAO.selectAll();System.out.println(list.size());}catch (Exception e){throw e;} finally {MyBatisUtils.closeSession(session);}}

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

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

相关文章

Milvus+Attu

Milvus 1.下载 https://github.com/milvus-io/milvus/releases/下载milvus-standalone-docker-compose version: 3.5services:etcd:container_name: milvus-etcdimage: quay.io/coreos/etcd:v3.5.5environment:- ETCD_AUTO_COMPACTION_MODErevision- ETCD_AUTO_COMPACTION_R…

小程序开发一个多少钱啊

在今天的数字化时代&#xff0c;小程序已经成为一种非常流行的应用程序形式。由于它们的便捷性、易用性和多功能性&#xff0c;小程序吸引了越来越多的用户和企业。但是&#xff0c;很多人在考虑开发一个小程序时&#xff0c;都会遇到同一个问题&#xff1a;开发一个小程序需要…

JavaWeb基础学习(5)

JavaWeb基础学习 一、Filter1.1 Filter介绍1.2 Filter快速入门1.3、Filter执行流程1.4、Filter使用细节1.5、Filter-案例-登陆验证 二、Listener2.1 Listener介绍2.2、ServletContextListener使用 三、AJAX3.1 AJAX介绍与概念3.2 AJAX快速入门3.3 Axios异步架构3.4 JSON-概述和…

C#__使用流读取和写入数据的简单用法

使用流处理数据的优势&#xff1a;可以一次性搬运数据量大的文件&#xff0c;把数据当做水&#xff0c;一点一点搬运。 数据的传输方向&#xff1a;从外部源传输到程序&#xff08;读取流&#xff09;&#xff1b;从程序传输到外部源&#xff08;读入流&#xff09; …

腾讯mini项目-【指标监控服务重构】2023-08-18

今日已办 watermill 将 key 设置到 message 中 修改 watermill-kafka 源码 将 key 设置到 message.metadata中 接入 otel-sdk 添加 middleware resolveUpstreamCtx 解析上游上下文&#xff0c;开启根Span添加 middleware middleware.InstantAck - 马上ACK&#xff0c;使得多…

面试Java后端

sql 五表联合查询 面试八股 JDK&#xff0c;JRE,JVM之间的区别 JDK&#xff0c;Java标准开发包&#xff0c;它提供了编译、运行Java程序所需的各种工具和资源&#xff0c;包括Java编译器、Java运行时环境&#xff0c;以及常用的Java类库等。 JRE(Java Runtime Environment)&…

Learn Prompt-Prompt 高级技巧:AI-town 虚拟小镇

AI-town可能是2023年最令人鼓舞的AI代理实验之一。我们经常讨论单个LLM的突现能力&#xff0c;但 Agents 突现在大规模下可能会更复杂和迷人。一个AI的种群可以展现出整个文明的演化。 &#x1f389;开始阅读前&#xff0c;如果你对其他文章感兴趣&#xff0c;可以到欢迎页关注…

Anaconda下载安装教程,新手详细

Anaconda的安装包下载分为官网下载和清华源下载&#xff0c; ①官网&#xff1a;Anaconda官网 &#xff08;别的博主说官网较慢&#xff0c;有时候还进不去&#xff0c;我感觉还行&#xff0c;2分钟就下载好了。如果不顺利&#xff0c;请尝试使用清华源&#xff09; ②清华源…

机器学习入门教学——损失函数(极大似然估计法)

1、前言 我们在训练神经网络时&#xff0c;最常用到的方法就是梯度下降法。在了解梯度下降法前&#xff0c;我们需要了解什么是损失(代价)函数。所谓求的梯度&#xff0c;就是损失函数的梯度。如果不知道什么是梯度下降的&#xff0c;可以看一下这篇文章&#xff1a;机器学习入…

性能测试 —— Tomcat监控与调优:status页监控

Tomcat服务器是一个免费的开放源代码的Web 应用服务器&#xff0c;Tomcat是Apache 软件基金会(Apache Software Foundation)Jakarta 项目中的一个核心项目&#xff0c;由Apache、Sun 和其他一些公司及个人共同开发而成。 Tomcat是一个轻量级应用服务器&#xff0c;在中小型系统…

DevExpress WinForms图表组件 - 直观的数据信息呈现新方式!(一)

凭借界面控件DevExpress WinForms全面的2D和3D图表类型的集合&#xff0c;DevExpress WinForms的图表控件设计大大简化了开发者直观地向最终用户呈现信息的方式。 DevExpress WinForms有180组件和UI库&#xff0c;能为Windows Forms平台创建具有影响力的业务解决方案。同时能完…

IDEA——工程项目的两种窗口开发模式

文章目录 引言一、多项目窗口模式的便利1.1 源码 debug 二、多项目窗口模式的弊端三、多项目窗口的版本管理四、单项目、多项目窗口模式转换 引言 idea编辑器有两种窗口模式&#xff0c;一种是单项目窗口&#xff0c;另一种是多项目窗口。 我个人使用较多的是单项目窗口&#…

Android7.1 ROOT权限的获取

修改文件&#xff1a; system/extras/su/su.c system/core/include/private/android_filesystem_config.h system/core/libcutils/fs_config.c frameworks/base/core/jni/com_android_internal_os_Zygote.cpp frameworks/base/cmds/app_process/app_main.cpp device/qcom…

JSON字符串之JS中JSON.parse()

JSON.parse() 方法用来解析JSON字符串&#xff0c;构造由字符串描述的JavaScript值或对象。提供可选的 reviver 函数用以在返回之前对所得到的对象执行变换(操作)。 const json {"result":true, "count":42}; const obj JSON.parse(json);console.log(ob…

Linux 多线程 | 线程安全、死锁、线程同步

在前面的文章中我们讲述了锁的理解、原理、用户级线程库的内容&#xff0c;以及对Linux中的锁和线程进行了封装&#xff0c;本文中将继续对多线程的内容进行讲解。 可重入与线程安全 概念 线程安全&#xff1a;多个线程并发同一段代码时&#xff0c;不会出现不同的结果。常见…

网络安全第一次作业

1、什么是防火墙 防火墙是一种网络安全系统&#xff0c;它根据预先确定的安全规则监视和控制传入和传出的网络流量。其主要目的是阻止对计算机或网络的未经授权的访问&#xff0c;同时允许合法通信通过。 防火墙可以在硬件、软件或两者的组合中实现&#xff0c;并且可以配置为根…

七绝 . 秋寒

题记 拜读署名“淡定人生D”近日发表在“ 今日头条 ”上的古体诗《七绝 . 凉》&#xff0c;本老朽在由衷赞叹该女子才貌双全之时&#xff0c;也对自己寄居养老的成都崇州街子古镇今日下午的秋寒突至天气&#xff0c;情怀涌动&#xff0c;思绪万千&#xff0c;亦作《七绝 . 秋寒…

课程29:.Net Core API限流

🚀前言 本文是《.Net Core从零学习搭建权限管理系统》教程专栏的课程(点击链接,跳转到专栏主页,欢迎订阅,持续更新…) 专栏介绍:以实战为线索,基于.Net 7 + REST + Vue、前后端分离,不依赖任何第三方框架,从零一步一步讲解权限管理系统搭建。 专栏适用于人群:We…

JavaScript小案例-树形菜单(菜单数据为数组)

菜单层级理论上可以无限多&#xff0c;因为是递归渲染。 gif演示图&#xff1a; 代码&#xff1a; 树形菜单.html <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content&quo…

超越创意,从用户创造内容到AI生成内容的新时代

在这个信息爆炸的时代&#xff0c;内容创作正经历前所未有的变革&#xff0c;其频率和多样性令人瞠目结舌。曾经&#xff0c;我们主要依赖传统媒体&#xff0c;需要专业团队为人们打造内容&#xff0c;这被称为专业生成内容&#xff08;PGC&#xff0c;Professional-generated …