最新要闻
- 美食博主三亚买3888元海鲜被好心人提醒多花1700:当事人心累
- 热消息:秋裤先别着急脱!“春捂”到底该“捂”哪儿?
- 前沿资讯!2023年安卓之光!小米13 Ultra手机壳曝光:背部造型抢眼
- 餐馆接到网吧10个外卖订单 结果被刷9个差评 店主:下次亲自送餐
- 天天微速讯:门店2299元 GXG男士羊毛大衣0.8折清仓大促:实付199元!
- 世界热资讯!乐堡苏打气泡酒12罐到手19.9元:低糖0脂无负担
- 威马员工在线讨薪:被恶心到了、恶心的事还有更多
- 广州塞车登“热搜”?“甜蜜的烦恼”重回一线城市,中国经济活力加快恢复
- 80、90后泪目 国产暗黑《赵云传重制版》试玩
- 1岁男童误食降糖药成植物人:愿康复顺利
- 环球速看:中央人民广播电台民族节目中心
- 秒睡令人羡慕?医生提醒:可能是种睡眠障碍
- 《流浪地球2》科幻成真?武汉国博用特效“加建”太空电梯
- 《原子之心》种族主义漫画引争议:涉嫌歧视黑人!官方道歉
- 世界速读:我国载人航天将对国际开放 多国航天员希望参与中国空间站
- 每日热讯!驱动拖后腿 Intel显卡被低估:2000元档A770理论可刚RTX 3070
广告
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
天天讯息:day04-原生的API&注解方式
(资料图)
原生的API&注解方式
1.MyBatis原生的API调用
1.1原生API快速入门
需求:在前面的项目基础上,使用MyBatis原生的API完成,即直接通过SqlSession接口的方法来完成操作
1.2代码实现
MyBatisNativeTest.java,演示原生的API操作
其实底层还是使用的映射的xml文件的sql语句
package com.li.mapper;import com.li.entity.Monster;import com.li.util.MybatisUtils;import org.apache.ibatis.session.SqlSession;import org.junit.Before;import org.junit.Test;import java.util.Date;import java.util.List;/** * @author 李 * @version 1.0 * 演示使用 Mybatis原生API操作 */public class MyBatisNativeTest { private SqlSession sqlSession; //初始化方法 @Before public void init() { sqlSession = MybatisUtils.getSqlSession(); //sqlSession的运行类型是DefaultSqlSession System.out.println("sqlSession运行类型--" + sqlSession.getClass()); } //使用sqlSession原生的API调用编写的方法 //其实还是去找映射的Mapper.xml文件的sql语句 @Test public void myBatisNativeCrud() { //添加 /* * @Override * public int insert(String statement, Object parameter) { * return update(statement, parameter); * } * statement-接口方法的完整路径 * parameter-接口方法的入参 */ Monster monster = new Monster(); monster.setAge(100); monster.setBirthday(new Date()); monster.setEmail("kate2@qq.com"); monster.setGender(0); monster.setName("猫精-999"); monster.setSalary(1000); int insert = sqlSession.insert("com.li.mapper.MonsterMapper.addMonster", monster); System.out.println("insert--" + insert); //删除 int delete = sqlSession.delete("com.li.mapper.MonsterMapper.delMonster", 6); System.out.println("delete--" + delete); //修改 Monster monster2 = new Monster(); monster2.setAge(22); monster2.setBirthday(new Date()); monster2.setEmail("king789@qq.com"); monster2.setGender(0); monster2.setName("牛魔王"); monster2.setSalary(8888); monster2.setId(3);//要带上id,如果没有就不知道修改哪个对象了 int update = sqlSession.update("com.li.mapper.MonsterMapper.updateMonster", monster2); System.out.println("update--" + update); //查询--除了查询,其他的都要使用事务提交 List monsters = sqlSession.selectList("com.li.mapper.MonsterMapper.findAllMonster"); for (Monster monster3 : monsters) { System.out.println("monster--" + monster3); } if (sqlSession != null) { sqlSession.commit(); sqlSession.close(); } System.out.println("操作成功!"); }}
2.MyBatis注解方式操作
2.1注解方式快速入门
之前我们是使用xml文件的方式来实现接口声明的方法,现在使用注解方式来完成增删改查
(1)创建接口 MonsterAnnotation.java,添加注解
package com.li.mapper;import com.li.entity.Monster;import org.apache.ibatis.annotations.Delete;import org.apache.ibatis.annotations.Insert;import org.apache.ibatis.annotations.Select;import org.apache.ibatis.annotations.Update;import java.util.List;/** * @author 李 * @version 1.0 * MonsterAnnotation:使用注解的方式来配置我们的接口方法 */public interface MonsterAnnotation { //添加 monster /** * xml文件的配置方式: * * INSERT INTO `monster` * (`age`,`birthday`,`email`,`gender`,`name`,`salary`) * VALUES (#{age},#{birthday},#{email},#{gender},#{name},#{salary}) * */ @Insert(value = "INSERT INTO `monster` " + "(`age`,`birthday`,`email`,`gender`,`name`,`salary`) " + "VALUES (#{age},#{birthday},#{email},#{gender},#{name},#{salary})") public void addMonster(Monster monster); //根据id删除一个Monster @Delete(value = "DELETE FROM `monster` WHERE `id`=#{id}") public void delMonster(Integer id); //修改Monster //注解配置时value可以省略 @Update("UPDATE `monster` " + "SET `age`=#{age},`birthday`=#{birthday},`email`=#{email}," + "gender`=#{gender},`name`=#{name},`salary`=#{salary} " + "WHERE `id`=#{id};") public void updateMonster(Monster monster); //查询-根据id @Select("SELECT * FROM `monster` WHERE id=#{id}") public Monster getMonsterById(Integer id); //查询所有的Monster @Select("SELECT * FROM `monster`") public List findAllMonster();}
(2)修改mybatis-config.xml,对MonsterAnnotation 进行注册
(3)测试
package com.li.mapper;import com.li.entity.Monster;import com.li.util.MybatisUtils;import org.apache.ibatis.session.SqlSession;import org.junit.Before;import org.junit.Test;import java.util.Date;import java.util.List;/** * @author 李 * @version 1.0 */public class MonsterAnnotationTest { private SqlSession sqlSession; private MonsterAnnotation monsterAnnotation; @Before public void init() { sqlSession = MybatisUtils.getSqlSession(); monsterAnnotation = sqlSession.getMapper(MonsterAnnotation.class); //class com.sun.proxy.$Proxy11 System.out.println("monsterAnnotation的运行类型=" + monsterAnnotation.getClass()); } @Test public void addMonster() { Monster monster = new Monster(); monster.setAge(99); monster.setBirthday(new Date()); monster.setEmail("queen@qq.com"); monster.setGender(0); monster.setName("狐狸精"); monster.setSalary(3000); //使用在接口方法配置注解的方式完成对DB的操作 monsterAnnotation.addMonster(monster); //如果是增删改,需要提交事务 if (sqlSession != null) { sqlSession.commit(); sqlSession.close(); } } @Test public void findAllMonster() { //使用接口方法配置注解的方式完成操作 List allMonster = monsterAnnotation.findAllMonster(); for (Monster monster : allMonster) { System.out.println("monster=" + monster); } if (sqlSession != null) { sqlSession.close(); } }}
2.2注意事项和使用细节
如果是通过注解的方式,就不再使用MonsterMapper.xml文件,但是需要在mybatis的配置文件中引入含注解的类/接口
添加时,如果要返回自增长的id值,可以使用@Option注解,组合使用
/** * 1.useGeneratedKeys = true 返回自增的值 * 2.keyProperty = "id" 自增对应的对象属性 * 3.keyColumn = "id" 自增的表字段 * 4.如果 keyProperty 和 keyColumn 的值相同,可以省略 keyColumn */@Insert(value = "INSERT INTO `monster` " + "(`age`,`birthday`,`email`,`gender`,`name`,`salary`) " + "VALUES (#{age},#{birthday},#{email},#{gender},#{name},#{salary})")@Options(useGeneratedKeys = true,keyProperty = "id",keyColumn = "id")public void addMonster(Monster monster);
天天讯息:day04-原生的API&注解方式
【环球新要闻】Git使用
美食博主三亚买3888元海鲜被好心人提醒多花1700:当事人心累
热消息:秋裤先别着急脱!“春捂”到底该“捂”哪儿?
前沿资讯!2023年安卓之光!小米13 Ultra手机壳曝光:背部造型抢眼
餐馆接到网吧10个外卖订单 结果被刷9个差评 店主:下次亲自送餐
天天微速讯:门店2299元 GXG男士羊毛大衣0.8折清仓大促:实付199元!
世界热资讯!乐堡苏打气泡酒12罐到手19.9元:低糖0脂无负担
威马员工在线讨薪:被恶心到了、恶心的事还有更多
广州塞车登“热搜”?“甜蜜的烦恼”重回一线城市,中国经济活力加快恢复
【Tire树】高效统计字符串
80、90后泪目 国产暗黑《赵云传重制版》试玩
1岁男童误食降糖药成植物人:愿康复顺利
环球速看:中央人民广播电台民族节目中心
Ubuntu安装Zabbix6.0
秒睡令人羡慕?医生提醒:可能是种睡眠障碍
《流浪地球2》科幻成真?武汉国博用特效“加建”太空电梯
今头条!【element UI】在 el-select 与 el-tree 结合组件
环球热文:python教程:模块的搜索路径
Python中模块的四种方式
《原子之心》种族主义漫画引争议:涉嫌歧视黑人!官方道歉
世界速读:我国载人航天将对国际开放 多国航天员希望参与中国空间站
每日热讯!驱动拖后腿 Intel显卡被低估:2000元档A770理论可刚RTX 3070
受贿、泄露内幕信息!湖北原副省长曹广晶被公诉
天天快看点丨下周发售!《卧龙:苍天陨落》新预告发布:PC/主机通吃
最新消息:EQ电动车中国表现欠佳 奔驰CEO:打价格战不是好事
环球热点!101岁老人每天赶2场麻将 医生:身体状态70岁
What's past is prologue
全球新资讯:车商不收特斯拉 新车一个月亏7万:新能源二手车都不受待见 厂商频降价
H5N1禽流感致死事件引世卫关注:事发柬埔寨、9年来首次
环球热点评!下单就送鲜蔬汤 海福盛冻干粥5杯大促:券后仅20.9元!
“真香定律”稳定发挥 迈凯伦全新SUV效果图曝光:预计售价282万
世界今日讯!关于修订《中国高尔夫球协会赛事活动管理办法》的通知
环球微头条丨中越边境民族文化艺术考察研究
每日热点:女子在门缝发现针头 是大妈拿注射器推大量不明液体:整栋楼遭殃 网友气愤
地球中心到底有什么?科学家发现竟是一个超大铁球 跟书里讲得不一样
NET6接口项目基础框架项目
Java 8 Lambda 方法引用 简记
全球看热讯:(数据库系统概论|王珊)第七章数据库设计-第三节:概念结构设计
Blender插件:水滴生成器(Droplet Generator)
环球速递!《分布式技术原理与算法解析》学习笔记Day22
消炎止血、除口臭!中药黄芩牙膏大促:3支不到20块(送牙刷)
【世界聚看点】《博德之门3》Xbox版遭遇技术难题
天天快看点丨激光溶脂和吸脂的区别_激光溶脂和吸脂怎么区分
每人1600元!北京要发消费券了:买手机、PC、无人机等都能用
为博流量 女子与前夫摆拍家暴并直播谎称报警:结果被官方通报
当前快看:吸水好干得快:洁丽雅新疆棉毛巾4.98元发车
【Java】ArrayList线程不安全的坑
世界观察:不点拍照按键也能拍照!荣耀Magic 5全新技术曝光:堪比变魔术
全球观热点:自信满满!萌娃觉得自己掌握了英语的窍门 张口让网友沉默
当前播报:电动车里什么最耗电?13类电器功率排名来了!出乎意料
当前关注:义乌市百货有限责任公司
【新要闻】饰组词语接龙_饰组词语
运算符重载
世界要闻:猛男专属 吉利几何E超吸粉特别版上市:9.98万元
全球热点评!《三体》被改编成剧本杀 三体宇宙索赔300万
热资讯!算法正在谋杀新闻 各种日报带头摆烂 十亿中国网友却为此狂欢
联想小新Pro 14天青蓝来了:13代酷睿 1TB硬盘
天天日报丨国产架构的龙芯CPU可以跑QQ了!底层重写、与x86/Arm肩并肩
当前滚动:全商汇深圳控股集团有限公司_全商汇
世界资讯:Eureka高可用集群服务端和客户端配置
今日精选:NEMU PA 1 实验报告
Spark系列 - (4) Spark任务调度
天天快资讯丨第122篇: JS函数一些基本概念
独居老人为家中热闹没装大门 多车误入院子
每日资讯:RTX 4090显卡都能用 长城850W金牌全模电源504元(每瓦0.6元)
day03-自己实现Mybatis底层机制-02
如何设计高并发项目
天天快资讯丨Android 应用接入 Firebase Crashlytics 进行崩溃分析上报
热议:Java 中 hashCode 和 equals 方法是什么?它们和 == 各有什么区别?
热门:沃尔沃XC90 T8充电版:经过最新升级后仍是首选SUV
全球新消息丨网友用AI生成《黑豹2》电影白人版海报 激怒正义人士
面向对象进阶第二天
环球视点!# 009 - 检验 (2)
热讯:邝飚
天天滚动:长度仅23.5mm:尼康尼克尔Z 26mm f/2.8饼干镜头上架
iPhone更香?调查显示近半数安卓用户考虑换苹果
最后一个武侠杂志 《今古传奇·武侠版》停刊:闭关修炼
今日快看!力压西游记、红楼梦 豆瓣9.8分:《大明王朝1566》封神国产剧
【天天快播报】python-函数
焦点热文:58.抽象数据类型
青海首次实现330千伏同塔双回线路中相导线带电消缺
男子工作期间上厕所摔伤:被判工伤
周杰伦发文谈论AI 称AI取代不了音乐创作的美感
今日快讯:86岁老人鸡骨头卡入支气管16年:部分骨头被气管黏膜包住
带货主播李佳琦进浙江一大学招美女主播:教室爆满 女生尖叫
学生点外卖评3星被商家威胁:不删除差评 让学校把你开除
linux中redis下载安装部署启动
环球视讯!21、现有网络模型的使用以及修改
环球看热讯:(数据库系统概论|王珊)第七章数据库设计-第二节:需求分析
世界速读:周鸿祎:ChatGPT迟早会产生自主意识 为人类带来毁灭危机
我国新一代载人登月飞船模型首次展出:将建造月球科研站
每日热议!委员建议:允许重大节日燃放烟花爆竹 应科学限放
吃透8图1模板,人人可以做架构
免费开源的邮件服务器搭建
天天热门:蚁群算法
每日热闻!Prometheus安装部署(主体)
【世界速看料】保时捷新能源车高架冒烟 司机:开得好好的就着了 差点被烧死
环球讯息:罗技Trophy G驾驶舱发布:兼容所有方向盘、踏板、主机和PC
百事通!网友称5千元买洗地机用2小时就坏掉:售后无门