版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
———————————————————————————————题目:Mybatis培训,MyBatis是支持普通SQL查询过程和高级映射的优秀持久层框架MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的XML或注解用于配置和原始映射JavaPOJO(inOldJavaObjects,普通Java对象),JDBC-→dbutils-→MyBatis-编写第一个基于mybaits的测试例子【【mybatismybatis-【MYSQL驱动包mysql-connector-java-5.1.7-useCREATETABLEuseCREATETABLEusers(idINTPRIMARYKEYAUTO_INCREMENT,NAMEVARCHAR(20),ageINT);INSERTINTOusers(NAME,age)VALUES('Tom',12);<!DOCTYPEconfigurationPUBLIC"-////DTDConfig3.0//EN" publicpublicclass{privateintid;privateintage;}<selectid="getUser"parameterType="int"select*fromuserswhereid=#{id}" <mapper {Stringresource=Readerreader=//创建能执行映射文件中sql的sqlSessionStringstatement=//usersql}}XML的实insertintousers(name,age)values(#{name},#{age});deletefromuserswhereid=#{id}updateuserssetname=#{name},age=#{age}whereid=#{id}select*fromuserswhereid=#{id}select*fromusers2).2).在config.xml <mapper3).daoSqlSessionsession=sessionFactory.openSession();Useruser=session.selectOne(URI+".selectUser",id);returnuser;}注解的实@Insert("insertintousers(name,age)values(#{name},#{age})")publicintinsertUser(Useruser);publicintdeleteUserById(intid);@Update("updateuserssetname=#{name},age=#{age}whereid=#{id}")publicintupdateUser(Useruser);publicUsergetUserById(intid);@Select("select*fromusers")publicList<User>getAllUser();}2).2).在config <mapper3).daoSqlSessionsession=sessionFactory.openSession();Useruser=mapper.getUserById(id);}.####4.2.为实体类定义别名,简化sql映射xml文件中 .11.perties(方式一log4j.xml(方式二 (%F:%L)\n"<logger<loggerorder_idINTPRIMARYKEYorder_priceFLOATINSERTINTOorders(order_no,order_price)VALUES('aaaa',23);INSERTINTOorders(order_no,order_price)VALUES('bbbb',33);INSERTINTOorders(order_no,order_price)VALUES('cccc',22);{privateint}}方式一方式一:通过在sql语句中定义别方式二:通过select*fromorderswhereorder_id=#{id}一对一关根据班级id查询班级信息(带老师的信息t_idINTPRIMARYKEYt_namec_idINTPRIMARYKEYteacher_idINTALTERTABLEclassADDCONSTRAINTfk_teacher_idFOREIGNKEY(teacher_id)REFERENCESINSERTINTOteacher(t_name)VALUES('LS1');INSERTINTOclass(c_name,teacher_id)VALUES('bj_a',1);publicpublicclass{privateintid;}publicclass{privateintid;} <selectid="getClass"parameterType="int"resultMap="ClassResultMap">select*fromclassc,teachertwherec.teacher_id=t.t_idandc.c_id=#{id}SELECT*FROMclassWHERESELECT*FROMteacherWHERE //1是上一个查询得到的teacher_idselect*fromclasswhereSELECTt_idid,t_namenameFROMteacherWHEREpublicvoidtestOO()SqlSessionsqlSession=}SqlSessionsqlSession=}一对多关根据 查询对应的班级信息,包括学生,老s_idINTPRIMARYKEYclass_idINTINSERTINTOstudent(s_name,class_id)VALUES('xs_A',1);INSERTINTOstudent(s_name,class_id)VALUES('xs_B',1);INSERTINTOstudent(s_name,class_id)VALUES('xs_C',1);INSERTINTOstudent(s_name,class_id)VALUES('xs_D',2);INSERTINTOstudent(s_name,class_id)VALUES('xs_E',2);INSERTINTOstudent(s_name,class_id)VALUES('xs_F',2);publicpublicclass{privateintid;}publicclassClassesprivateintid;privateintid;privateTeacherteacher;privateList<Student>students;}方式一:嵌套结果: select*fromclassc,teachert,studentswherec.teacher_id=t.t_idandc.C_id=s.class_idandSELECT*FROMclassWHERESELECT*FROMteacherWHERE //1是上一个查询得到的teacher_idSELECT*FROMstudentWHERE select*fromclasswherec_id=#{id} SELECTt_idid,t_namenameFROMteacherWHEREt_id=#{id}SELECTs_idid,s_namenameFROMstudentWHERESqlSessionsqlSession=}SqlSessionsqlSession=}提出需求实现多条件查询用户(模糊匹配,在指定的最小值到最大值之间准备数据表和数据idintprimarykeyauto_increment,namevarchar(10),ageinsertintod_user(name,age)values('Tom',12);insertintod_user(name,age)values('Bob',13);insertintod_user(name,age)values('Jack',18);privateintminAge;privateintprivateintid;privateintid;privateintage;<!DOCTYPEmapperPUBLIC"-////DTDMapper3.0//EN" <mapper<selectid="getUser"parameterType="com.atguigu.day03_mybatis.test6.ConditionUser"select*fromd_userwhereage>=#{minAge}andReaderreader=SqlSessionsqlSession=sessionFactory.openSession();Stringstatement=List<User>list=sqlSession.selectList(statement,newConditionUser("%a%",1,12));}}提出需求查询得到或女性的数量,如果传入的是0就女性否则是准备数据库表和过程idintprimarykeyauto_increment,namevarchar(10),insertintop_user(name,)values('A',"男");insertintop_user(name,)values('B',"女");insertintop_user(name,)values('C',"男");#或女性的数量,0)DELIMITERCREATEPROCEDUREmybatis.ges_user_count(IN _id=0SELECTCOUNT(*)FROMmybatis.p_userWHEREp_user. SELECTCOUNT(*)FROMmybatis.p_userWHEREp_user. ENDIF;$DELIMITERSET@user_count=SELECT@user_count;publicpublicclass{privateStringid;privateString }<mapper<mapper p=new _id",ObjectreturnValue=sqlSession.selectOne(statement,par 一级缓存:基于PerpetualCache的HashMap本地缓存,其作用一级缓存:基于PerpetualCache的HashMap本地缓存,其作用域为Session,当Sessionflush或close之后,该Session中的所有Cache就将清空。二级缓存与一级缓存其机制相同,默认也是采用PerpetualCache,HashMap 其作用域为Mapper(Namespace),并且可自定义源,如Ehcache。C/U/Dselect中的缓存将被clear1)提出需求idINTPRIMARYKEYAUTO_INCREMENT,NAMEVARCHAR(20),ageINSERTINTOc_user(NAME,age)VALUES('Tom',12);INSERTINTOc_user(NAME,age)VALUES('Jack',11);publicpublicclassUserimplementsprivateintid;privateintage;}"<mapperselect*fromc_userwhere测试*一级缓存:Session级的缓存(默认开启SqlSessionsession=Useruser=session.selectOne(statement,1);*session=MybatisUtils.getSession();4.没有执行过增删改的操作(这些操作都会清理缓存newUser(2,"user",23));}<mapper<mapper*Stringstatement=SqlSessionsession=MybatisUtils.getSession();Useruser=session.selectOne(statement,1);user=session2.selectOne(statement,1);}根据时间表(比如no 缓存会列表集合或对象(无论查询方法返回什么)的1024个 size="512"//最多缓存512个 "/>//user_birthdayDATE,user_salaryDOUBLE)编码实体类:publicpublicclassUserprivateintid;privateStringname;privateDatebirthday;privatedouble}DAO接口UserMapperpublicpublicinterfaceUserMappervoidsave(Useruser);voidupdate(Useruser);voiddelete(intid);UserfindById(intid);List<User>findAll();}SQL映射文件<!DOCTYPEmapperPUBLIC"-////DTDMapper3.0//EN" <mapper<!--insertintos_user(user_name,user_birthday,user_salary)updates_usersetuser
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年物理学科题库(附答案)
- 八年级劳动简单维修达标检测教案
- 蜂巢图教学课件
- 分层设计课件
- 副词课件语文课件
- 妇产科B超介绍课件
- 房产经纪人课件
- 飞船绘本课件
- 分层动画模板课件
- 防暴组演练模板课件
- 水土保持工程施工规范
- 2026年新人教版三年级上册数学第二单元《混合运算》教学设计
- 国核电力规划设计研究院有限公司招聘4人笔试历年难易错考点试卷带答案解析
- 《电子竞技场馆运营服务规范》
- 无人机行业应用典型项目教程
- 2025~2026学年上海市杨浦区上学期六年级数学期中考试
- GB/T 21496-2025动植物油脂油脂沉淀物含量的测定离心法
- 辽宁省点石联考2025-2026学年高二(上)月考物理试卷(12月)(含答案)
- 穿越机基础课件
- SNCR脱硝系统知识培训课件
- 2025年广州铁路局校园招聘机考真题
评论
0/150
提交评论