##1.使用前的准备
新建一个mybatis框架
准备一个数据库

    `SELECT * FROM `user`
drop table user;
create table user (
id int,
name varchar(20),
othername varchar(20),
job varchar(20)
);
insert into `user` values (1,'贾克斯','万夫莫开','上单'),
(2,'腕豪','妈宝男','上单'),
(3,'炼金术士','辣眼睛','上单'),
(4,'千珏','可可爱爱','打野'),
(5,'卡特林娜','刀锋之舞','中单'),
(6,'维克托','三只手','中单'),
(7,'德莱厄斯','人头狗','上单'),
(8,'悠米','校长','辅助'),
(9,'塞纳','卢仙老婆','AD'),
(10,'卢仙','塞纳伴侣','AD'),
(11,'阿利斯塔','坚实后盾','辅助'),
(12,'嘉文四世','落魄皇子','打野'),
(13,'拉克丝','拳头女儿','中单'),
(14,'伊泽瑞尔','拳头儿子','AD'),
(15,'亚托克斯','见谁都能骂两句','上单'),
(16,'亚索','0-21-0','中单');`
测试环境搭建(少不了这串代码)

···sql

`static SqlSession sqlSession;
static {SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();InputStream inputStream = null;try {inputStream = Resources.getResourceAsStream("Mybatis.xml");} catch (IOException e) {e.printStackTrace();}SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream);// 设置自动提交sqlSession = sqlSessionFactory.openSession(true);
}`

##2.正式开始
####①添加功能
接口部分

`/*** 登录的方法,* 需要返回一个对象,因为登录要比对别的内容* 也要传入一个对象,* @param* @return*/
Heroes LoginById(int id);`

xml部分

   ````<select id="LoginById" resultType="login_utils.Heroes">select * from user where id = #{id}</select>

测试部分```java@Testpublic void testLoginById(){int id = 19;String name = "腕豪";Heroes heroes = new Heroes();//这里除了id之外都是nullheroes.setId(id);//这里面返回的是一个heroes对象,虽然传入的是id,但是返回的是*Heroes resultSet = sqlSession.selectOne("login.Login.LoginById", id);//查出是一个封装的类型System.out.println(resultSet);//从封装类型中寻找内容,并用这个东西做一系列判断if (resultSet == null || resultSet.getName()==null ){System.out.println("用户不存在");}else {String newName = resultSet.getName();if (name.equals(newName)) {System.out.println("登录成功!");} else {System.out.println("登陆失败!");}}}
####②注册功能
接口部分

/**
* 注册的方法,返回值只有影响的行数
*/
int register(Heroes heroes);
`


xml部分
`<insert id="register">insert into user values (#{id},#{name},#{othername},#{job})
</insert>

`


测试部分

`@Test
public void testRegister(){
Heroes heroes = new Heroes();
heroes.setId(20);
heroes.setName(“格温”);
heroes.setOthername(“剪刀妹”);
heroes.setJob(“上单”);
int insert = sqlSession.insert(“login.Login.register”, heroes);
if (insert>0){
System.out.println(“注册成功”);
}else {
System.out.println(“注册失败”);
}

}`

####③
接口部分

/** * 删除英雄的方法 * 也是只有与影响的行数 */ int deleteHeroesByName(String name);


xml部分
`    <delete id="deleteHeroesByName">delete from user where name = #{name}
</delete>

`


测试部分

@Test public void testDelete(){ Heroes heroes = new Heroes(); int delete = sqlSession.delete("login.Login.deleteHeroesByName","腕豪"); System.out.println(delete); }


####④
接口部分

/** * 修改英雄的方法 */ int updateHeroByName(String name);


xml部分
`<update id="updateHeroByName">update user set othername = "擦,大哥" where name = #{name}
</update>

测试部分

   `@Testpublic void testUpdate(){Heroes heroes = new Heroes();int update = sqlSession.update("login.Login.updateHeroByName","悠米");System.out.println(update);}`

##3.注意
###①
sqlSession.方法名(“抽象方法的全限定类名”,“要操作的目标”),这里是我的一个犯错点
###②修改SQL语句不熟悉
update user set othername = “擦,大哥” where name = #{name}
本次set和表user全丢了

如何用动态代理功能实现英雄数据库的添加删除判存以及修改功能?相关推荐

  1. DISCUZ网站DIY后,导致DIY功能失效,无法在前台删除已创建的DIY功能解决办法

    DISCUZ网站DIY后,导致DIY功能失效,无法在前台删除已创建的DIY功能解决办法,这是一个经常会遇到的问题,在程序调试过程中经常的会遇到这样的问题,这里提供一个自己常用的解决办法,供遇到这个问题 ...

  2. oracle判断修改,【数据库】Oracle实现判断条件批量修改功能

    背景: 由于拆库项目发展,需要对表进行简单重构:业务要求迁移的表需要存在 '添加人ID','添加人','添加时间','修改人ID','修改人','修改时间'几个字段,原表不存在的这几个字段需要进行新增 ...

  3. Angular +Ionic实现增加,删除,编辑,修改功能。

    常用的开发中,前端项目主要负责数据的表层处理. 更多主要数据业务逻辑实际操作是在后端,主要体现在数据的增删改查业务逻辑及其数据库的操作上. 今日简单罗列一下前端项目中数据表层的增删改查功能: 一,增, ...

  4. 原生js实现购物车添加删除商品、计算价格功能

    购物车 功能需求: 根据数据创建购物车内容: 实现购物车添加商品功能: 实现购物车商品数量的增加.减少: 实现购物车商品的删除功能: 购物车的全选功能: 无货商品不可修改数量.不计入总价: 底部计算总 ...

  5. mysql数据库怎么添加主键约束_mysql修改表时怎么添加主键约束?

    mysql中可以通过"ALTER TABLE 表名 ADD PRIMARY KEY(字段名);"语句在修改数据表时添加主键约束:当在修改表时要设置表中某个字段的主键约束时,要确保设 ...

  6. AOP的底层实现-CGLIB动态代理和JDK动态代理

    AOP是目前Spring框架中的核心之一,在应用中具有非常重要的作用,也是Spring其他组件的基础.它是一种面向切面编程的思想.关于AOP的基础知识,相信多数童鞋都已经了如指掌,我们就略过这部分,来 ...

  7. Spring中的静态代理和动态代理

    一.什么是代理? 代理是一种设计模式,提供了对目标对象另外的访问方式,即通过代理对象访问目标对象.可以不修改目标对象,对目标对象功能进行拓展.在我们学习Spring的时候就会发现,AOP(面向切面编程 ...

  8. 从一个Spring动态代理Bug聊到循环依赖

    文章目录 Bug复现 结论 @PostConstruct的在Bean的生命周期的哪一步 一般代理类的生成时机在生命周期的哪一步 解决办法 两个思路 1.不生成代理类 2.在生成代理类之后再进行数据的初 ...

  9. 支撑Java框架的基础技术:泛型,反射,动态代理,cglib

    以Spring为例要想看明白他的源码需要彻底理解Java的一些基础技术泛型,反射同时对于一些高级技术例如动态代理,cglib和字节码技术也需要掌握,下面就按章节来一一说清楚这些技术的核心部分,最后手写 ...

最新文章

  1. Php-SPL库中的迭代器类详解(转)
  2. 记录网页爬虫注意的几个问题
  3. mysql三范式_MySQL设计之三范式的理解
  4. 如何快速找到settype被assign的product category
  5. 美团门票公布清明假期数据:单日入园人次超200万
  6. 计算机会计系统审计的内容包括什么,会计电算化系统审计.docx
  7. python调用webservice接口实例_python调用各种接口,webservice,c接口,com接口,socket协议方法...
  8. python开发软件的实例-由Python编写的MySQL管理工具代码实例
  9. datagrid 什么时候结束编辑_小规模纳税人免税政策什么时候结束?有答复了
  10. python生存曲线_Python从零开始第五章生物信息学⑤生存分析(log-rank)
  11. 【数据预测】基于matlab LSTM神经网络空调能耗数据预测【含Matlab源码 051期】
  12. Express中间件
  13. VMware vCenter Converter Standalone
  14. 微软晓晓朗读录音工具windows-文字转语音
  15. 路由器信号分为2.4G和5G,有什么区别?
  16. P4197 【Peaks】克鲁斯卡尔重构树详解
  17. 医疗软件还能怎么做,才能更进一步。
  18. E-NCAP增加黑暗场景下AEB测试,红外夜视或成主流配置
  19. Java - 说一下表达式语言(EL)的隐式对象及其作用。
  20. 安卓手机后台Service自动转发短信

热门文章

  1. 云计算需要学习什么开发语言
  2. 例化74LS160实现数字电子钟
  3. U盘“无法访问F:\ 指定不存在的设备”
  4. 【RPA之家教程】11.输出方法
  5. Unity C# 网易云信【短信服务】
  6. OpenCasCade7.2(OCC)+vc10的配置过程
  7. linux实验报告5,实验报告5linux进程管理.docx
  8. 用友“老朋友”,开启新合作!
  9. python外星人入侵代码提示has no attri_Python代码报错看不懂?记住这20个报错提示单词轻松解决bug...
  10. 用抽象工厂模式开奶茶店