MyBatis
weixin_41113108
这个作者很懒,什么都没留下…
展开
-
MyBatis:查询所有结果是Map
1、在接口中添加方法:Map selectAllStudent();2、dao文件:其中selectMap("selsectAll","name");里面的两个属性,其中selectAll是映射文件中的id,而这里的mapkey放查询出结果类的属性,随便一个属性都可以(可以是name,也可以是id),我们这里放的是name,什么意思呢?就是查询出的结果,以name作为key,整个对象作转载 2018-01-07 21:43:37 · 1786 阅读 · 0 评论 -
MyBatis:二级缓存
基本知识:分类:内置二级缓存(其主要任务是映射)外置第三方产品内置二级缓存:开启方法:在映射文件中添加<cache/>标签操作的实体类实现serializabel接口映射文件实现接口底层工作原理:二级缓存底层也是map,key(hashCode+StatementId+增删改对二级缓存的影响:会刷新二级缓存,但和一级不同的是将value置为null,并未删除整个Entry对象,即key...转载 2018-03-28 08:31:24 · 781 阅读 · 0 评论 -
MyBatis:查询缓存关联及一级缓存
缓存工作原理查询缓存介绍:我们查询通过网络连接数据库服务器,会受网络带宽的限制,所以我们在应用服务器的内存中开辟块空间,即缓存空间,里面盛放的是多个查询结果。缓存工作原理:执行查询时,先到缓存中查看有没有,如果有直接返回,没有再去DB中查询,查到的结果先给缓存,再给sql。MyBatis查询缓存分类:(1)、一级缓存(Sqlsession缓存):其默认是开启的,无法关闭,作用范围为namespa...转载 2018-03-28 08:32:36 · 252 阅读 · 0 评论 -
MyBatis:延迟加载介绍及配置
一、什么是延迟加载:代码中有查询语句,当执行到查询语句时,并不是马上去DB中查询,而是根据设置的延迟策略将查询向后推迟。二、MyBatis的延迟加载只能在对关联对象进行查询时使用延迟加载。三、主加载对象、关联对象、主表、关联表的概念:比如我们country表里有多个国家,minister表里有某个国家所对应的官员,我们查country时,并一带将其中的minister查出来,这里的Country就...转载 2018-03-28 08:33:16 · 207 阅读 · 0 评论 -
MyBatis:字段名与属性名不同的解决方案
在实际开发中,普通程序员是没有权利定义实体类和DB的,实体类是由架构师或者项目经理定义,而DB则由DBA定义,所以,字段名和属性名很多时候是不一致的。假如不一致,我们执行增删改是没问题的,但是在执行查询时就出现了问题,如下:DBCountry类xml很明显,实体类里的属性名和DB里的字段名不一致,我们执行查询时,结果如下:结果为此,我们有如下两种解决方案:方案一:为字段名取别名:让别名与属性名相同...转载 2018-03-28 08:33:53 · 153 阅读 · 0 评论 -
MyBatis:自关联查询——多对多查询的实现
假设一名学生可以选多门课,每门课可以由多名同学来选,那么这就涉及到多对多关系。需求:通过查询学生,可以得到这名学生所选全部课程信息。建立DB表:course表:课程名和idstudent表:学生姓名和id中间表:学生id和课程idstudent和course表的内容其实都是相对独立,我们通过一个中间表middle来连接两个表。建立实体类:StudentCourse注意:多对多查询时,双方的地位都是...转载 2018-03-28 08:34:37 · 487 阅读 · 0 评论 -
MyBatis:一对多自关联查询的实现
需求:查询指定栏目及其相关父栏目、祖父栏目。数据库表同上一篇新建接口: NewsLabel selectNewsLabelParentById(int id);实体类映射文件这个查询其实也是递归,查询得到相关栏目的pid,作为查询其父栏目的id测试类查询结果...转载 2018-03-28 08:35:20 · 158 阅读 · 0 评论 -
MyBatis:自关联介绍及多对一自关联查询的实现
什么是自关联?在多对一、一对多、多对多查询实际应用中可能会遇到这样的情况:多个表的内容在一个表里,比如下面这个网页结构示意图各个栏目,栏目下有子栏目,子栏目下有孙栏目,但是都属于新闻栏目,比如我们想通过查询SN得到下面的子栏目以及孙栏目,就需要用到自关联查询。需求:查询指定栏目及其下面的子栏目、孙栏目。DB表实体类将其看作一方,然后关联属性是多方即Set<NewsLabel> chil...转载 2018-03-28 08:36:17 · 4456 阅读 · 0 评论 -
MyBatis:关联查询——一对一查询及一对一共享主键的解决方案
需求:假设丈夫和妻子是一对一关系,我们通过丈夫查询到妻子创建两个SQL表:husband和wife,我们将外键设在husband里如图:husbandwife注意:一对多、多对一时,我们将外键设在多方,而一对一设在任何一方都可以。而在实体类里,我们的外键定义和表中定义的一致创建两个实体类:WifeHusband创建接口:Husband selectHusbandById(int hid);情况一:...转载 2018-03-28 08:36:57 · 199 阅读 · 0 评论 -
MyBatis:关联查询——多对一查询(详解association)
需求:通过minister查询到country方法一:多表关联查询:映射文件说明:association标签和collection标签不同,collection标签是封装集合,而association封装的属性。Minister类测试类查询结果情况二:多表单独查询: ...转载 2018-03-28 08:37:44 · 310 阅读 · 0 评论 -
Mybatis实现批量删除操作
一. 这里主要考虑两种参数类型:数组或者集合.而这点区别主要体现在EmpMapper.xml文件中标签的collection属性:当collection=”array“时,表名参数为数组;当collection=”list“时,表名参数为集合.二. 注意:无论Mybatis是与mysql数据库结合,还是与Oracle数据库,都同样适合如下设置与操作.三. 具体示例如下:EmpMapper.xml:...转载 2018-03-30 09:42:18 · 570 阅读 · 0 评论 -
MyBatis:映射文件#{ }里填写内容总结
参数对象的属性参数对象为基本数据类型或者String类型时,起占位符作用map的key当map的key为对象时,填写map的key的属性转载 2018-03-17 10:18:14 · 533 阅读 · 0 评论 -
MyBatis:Mapper的动态代理
我们之前的代码,里面的dao的实现类由我们手工创建,今天我们dao的实现类由框架自动生成。Mapper动态代理的使用要求:session.getMapper()中的参数为所要代理的接口类型映射文件的namespace属性值为所要代理的接口的全限定性类名映射文件中的statement的id名称必须与接口中相应方法的名称相同一、映射文件:转载 2018-01-07 21:44:24 · 243 阅读 · 0 评论 -
MyBatis:映射文件#{ }里填写内容总结
参数对象的属性参数对象为基本数据类型或者String类型时,起占位符作用map的key当map的key为对象时,填写map的key的属性转载 2018-01-07 21:45:44 · 548 阅读 · 0 评论 -
MyBatis:查询所有结果是List
创建接口:List selectAll();一、映射文件——SQL语句:二、测试类:三、结果:转载 2018-01-07 21:46:24 · 6317 阅读 · 0 评论 -
MyBatis:根据id查询
创建接口:Student selectById(int id);一、映射文件——SQL语句:说明:这里的resultType必须要有,属性为bean的全限定性类名,作用是为了封装对象二、测试类:三、结果:转载 2018-01-07 21:47:03 · 5726 阅读 · 0 评论 -
MyBatis:根据姓名模糊查询
创建接口:List selectByName(String name);一、映射文件:说明:还有两种方式可以达到效果,但是容易被sql注入,从而引起系统安全问题,所以这里不再写那两种。这里的jjj是占位符,任何字母都可代替。二、测试类:三、结果:转载 2018-01-07 21:47:45 · 7535 阅读 · 0 评论 -
MyBatis:复合条件查询——对象封装成List类型
需求:找出姓名带“zhang”,并且年龄小于30的创建接口: List selectByCondition(Student student);一、映射文件:说明:小于号在xml文件中不能使用补充:常用符号:<小于号或显示标记>>大于号或显示标记&&可用于显示其它特殊字符"转载 2018-01-07 21:50:16 · 2645 阅读 · 0 评论 -
MyBatis:复合条件查询——对象封装成Map类型
封装成Map类型相对于List类型,使用较为普遍情况一:创建接口:List selectByCondition2(Map map);一、映射文件:说明:这里的#{ }里面放的就是map的key二、测试类:说明:map.put(mapkey,value),所以cname,cage与xml里的mapkey相对应。三、结果:数据库原数据:查询结转载 2018-01-07 21:51:05 · 2322 阅读 · 0 评论 -
MyBatis:关联查询——一对多 多表连接、单独查询(详解resultMap)
我们现在数据库里有两个表:Country,Minister,我们现在通过查询Country的cid来得到Minister里的的信息。两个表如图:CountryMinister一、多表连接查询:创建接口: Country selectCountryById(int cid);country类minister类映射文件:映射文件测试类:转载 2018-01-07 21:52:30 · 25711 阅读 · 2 评论 -
MyBatis:动态SQL标签解读与示例
我们在日常生活中常见到这样的条件查询,条件的填写是自如的,并不是规定好必须都填写或者都不填,那么这就需要我们用的动态sql。总结:test值的OGNL中可以写的值的总结statement调用方法传递过来的对象参数的get属性statement调用方法传递过来的map参数的keystatement调用方法传递过来的map参数的key,这个key若为对象,可以填入"转载 2018-01-07 21:51:54 · 170 阅读 · 0 评论 -
MyBatis:关联查询——一对多 多表连接、单独查询(详解resultMap)
我们现在数据库里有两个表:Country,Minister,我们现在通过查询Country的cid来得到Minister里的的信息。两个表如图:CountryMinister一、多表连接查询:创建接口: Country selectCountryById(int cid);country类minister类映射文件:映射文件测试类:测试类查询结果:对映射文件里的resultMap的详解:详解res...转载 2018-03-28 08:38:29 · 681 阅读 · 0 评论