当前位置: 首页 > news >正文

中铁建设集团有限公司招聘信息2021一键优化什么意思

中铁建设集团有限公司招聘信息2021,一键优化什么意思,网页设计尺寸标注,廊坊代运营公司文章目录 1. NONE关闭自动映射2. PARTIAL非嵌套结果映射3. FULL全自动映射 众所周知mybatis中标签 resultMap 是用来处理数据库库字段与java对象属性映射的。通常java对象属性#xff08;驼峰格式#xff09;与数据库表字段#xff08;下划线形式#xff09;是一 一… 文章目录 1. NONE关闭自动映射2. PARTIAL非嵌套结果映射3. FULL全自动映射 众所周知mybatis中标签 resultMap 是用来处理数据库库字段与java对象属性映射的。通常java对象属性驼峰格式与数据库表字段下划线形式是一 一对应的情况下是不用定义 resultMap 标签的是因为数据库表字段会自动映射到java对象的对应属性上的比如数据库表一个字段为USER_NAMEjava对象对应的属性为userName默认情况下会自动映射的。 数据库表字段为什么会和java对象属性自动映射的什么情况下会自动映射什么情况下不会自动映射实现这种自动映射行为就是通过 settings 标签下的autoMappingBehavior属性控制的。 settingssetting nameautoMappingBehavior valuePARTIAL//settingsautoMappingBehavior指定 MyBatis 应如何自动映射列到字段或属性。 该属性有3种取值NONE, PARTIAL, FULL, NONE 表示关闭自动映射PARTIAL 只会自动映射没有定义嵌套结果映射的字段。 FULL 会自动映射任何复杂的结果集无论是否嵌套。如不配置模式是PARTIAL部分映射的。下面分别看下三种情况是如何映射的 1. NONE关闭自动映射 关闭自动映射后数据库表字段就不会自动映射到java对象属性中此时就得自定义 resultMap 。 下面以查询用户信息为例数据库表为USER对应java类为User package com.lzj.bean; public class User {private int id;private String name;private int age;//省略get/set/toString }对应数据库表USER为 mybatis配置文件中 settings 配置如下所示 settings!--设置打印日志工具--setting namelogImpl valueSTDOUT_LOGGING/--关闭自动映射--setting nameautoMappingBehavior valueNONE//settingsmapper文件对应如下所示 select idselectOne parameterTypeint resultTypecom.lzj.bean.Userselect * from user where id#{id} /select然后通过如下案例执行该mapper对应的SQL public void sqlSessionTest(){SqlSessionFactory factory mybatisUtil.getFactory();SqlSession sqlSession factory.openSession(true); //true表示自动提交ListObject list sqlSession.selectList(com.lzj.dao.UserDao.selectOne, 2);System.out.println(输出结果 list.get(0)); }输出结果如下所示发现该SQL命中了数据库中id2的一条数据但是没有映射到user对象上导致打印出的user对象为null。 Logging initialized using class org.apache.ibatis.logging.stdout.StdOutImpl adapter. PooledDataSource forcefully closed/removed all connections. PooledDataSource forcefully closed/removed all connections. PooledDataSource forcefully closed/removed all connections. Cache Hit Ratio [com.lzj.dao.UserDao]: 0.0 Opening JDBC Connection Created connection 671187578.Preparing: select * from user where id? Parameters: 2(Integer)Columns: id, name, ageRow: 2, xiaoli, 26Total: 1 输出结果null那么在关闭自动映射的情况下如何把查到的数据库表数据映射到java对象user中呢可以通过下面自定resultMap标签进行手动映射把mapper文件改成如下方式 resultMap iduserResultMap typecom.lzj.bean.Userresult propertyid columnID/resultresult propertyname columnNAME/resultresult propertyage columnAGE/result/resultMapselect idselectOne parameterTypeint resultMapuserResultMapselect * from user where id#{id}/select然后再执行上述案例输出结果如下所示打印出的user对象已有值说明数据库表中数据映射到了java对象user中。 Logging initialized using class org.apache.ibatis.logging.stdout.StdOutImpl adapter. PooledDataSource forcefully closed/removed all connections. PooledDataSource forcefully closed/removed all connections. PooledDataSource forcefully closed/removed all connections. Cache Hit Ratio [com.lzj.dao.UserDao]: 0.0 Opening JDBC Connection Created connection 953253248.Preparing: select * from user where id? Parameters: 2(Integer)Columns: id, name, ageRow: 2, xiaoli, 26Total: 1 输出结果User{id2, namexiaoli, age26}2. PARTIAL非嵌套结果映射 PARTIAL 只会自动映射没有定义嵌套结果映射的字段。什么意思呢不同于上面案例一个库表对应一个简单的java对象如果两个库表对应一个嵌套的java对象如何进行映射的呢 比如查询用户名下的车辆对应的User类为 package com.lzj.bean;import java.util.List;public class User {private int id;private String name;private int age;private ListCar cars;//省略get/set/toString方法 }对应的Car类为 package com.lzj.bean; public class Car {private String name;private String brand;//省略get/set/toString方法 }数据库表USER如下所示 数据库表CAR如下所示 mybatis的配置文件中setting标签改为如下配置 settingssetting namelogImpl valueSTDOUT_LOGGING/setting nameautoMappingBehavior valuePARTIAL//settingsmapper文件改为如下所示 select idselectOne parameterTypeint resultMapuserResultMapselect * from user where id#{id} /select然后运行下面demo public void sqlSessionTest2(){SqlSessionFactory factory mybatisUtil.getFactory();SqlSession sqlSession factory.openSession(true); //true表示自动提交ListObject list sqlSession.selectList(com.lzj.dao.UserDao.select2, 2);System.out.println(输出结果 list.get(0)); }输出结果如下所示输出的user对象中id、name、age都有值唯独cars没有值说明mybatis只自动映射没有定义嵌套结果映射的字段只映射了user对象中最外层的属性的值没有映射嵌套的CAR数据库表中数据到cars对象中。 Logging initialized using class org.apache.ibatis.logging.stdout.StdOutImpl adapter. PooledDataSource forcefully closed/removed all connections. PooledDataSource forcefully closed/removed all connections. PooledDataSource forcefully closed/removed all connections. Cache Hit Ratio [com.lzj.dao.UserDao]: 0.0 Opening JDBC Connection Created connection 140778365.Preparing: select u.id,u.name,u.age,c.name,c.brand from user u, car c where u.id? Parameters: 2(Integer)Columns: id, name, age, name, brandRow: 2, xiaoli, 26, xiaoli, BYDTotal: 1 输出结果User{id2, namexiaoli, age26, carsnull}那么这种情况下如何把CAR表中数据映射到嵌套的对象cars中呢也是通过resultMap进行自定义映射mapper改为如下方式 resultMap iduserResultMap2 typecom.lzj.bean.User!--由于设置的是非嵌套自动映射库表USER中数据会自动映射到user对象的id、name、age上所以此处没有再自定义映射只指定CAR表中字段数据是如何映射到cars上面的就可以了。--collection propertycars columnNAME ofTypecom.lzj.bean.Carresult propertyname columnNAME/resultresult propertybrand columnBRAND/result/collection /resultMapselect idselect2 resultMapuserResultMap2select u.id,u.name,u.age,c.name,c.brand from user u, car c where u.id#{id} /select然后重新执行上面demo案例结果如下所示发现user对象中嵌套的cars对象中属性也有值了映射成功。 Logging initialized using class org.apache.ibatis.logging.stdout.StdOutImpl adapter. PooledDataSource forcefully closed/removed all connections. PooledDataSource forcefully closed/removed all connections. PooledDataSource forcefully closed/removed all connections. Cache Hit Ratio [com.lzj.dao.UserDao]: 0.0 Opening JDBC Connection Created connection 77215921.Preparing: select u.id,u.name,u.age,c.name,c.brand from user u, car c where u.id? Parameters: 2(Integer)Columns: id, name, age, name, brandRow: 2, xiaoli, 26, xiaoli, BYDTotal: 1 输出结果User{id0, namenull, age0, cars[Car{namexiaoli, brandBYD}]}3. FULL全自动映射 FULL 会自动映射任何复杂的结果集无论是否嵌套。 还是以上面嵌套映射的为例把 settings 配置修改为如下所示 settingssetting namelogImpl valueSTDOUT_LOGGING/setting nameautoMappingBehavior valueFULL//settingsmapper文件修改为如下所示直接返回user对象没有设置resultMap自定义映射 select idselect3 resultTypecom.lzj.bean.Userselect u.id,u.name,u.age,c.name,c.brand from user u, car c where u.id#{id} /select执行上面案例结果输出显示即使没有配置resultMap自定义映射mybatis自动的进行了嵌套结果的映射 Logging initialized using class org.apache.ibatis.logging.stdout.StdOutImpl adapter. PooledDataSource forcefully closed/removed all connections. PooledDataSource forcefully closed/removed all connections. PooledDataSource forcefully closed/removed all connections. Cache Hit Ratio [com.lzj.dao.UserDao]: 0.0 Opening JDBC Connection Created connection 520082748.Preparing: select u.id,u.name,u.age,c.name,c.brand from user u, car c where u.id? Parameters: 2(Integer)Columns: id, name, age, name, brandRow: 2, xiaoli, 26, xiaoli, BYDTotal: 1 输出结果User{id2, namenull, age26, cars[Car{namexiaoli, brandBYD}]}
http://www.zqtcl.cn/news/219126/

相关文章:

  • 深圳网站建设微赢天下做视频网站服务器多少钱
  • 中小企业网站建设与管理课后答案wordpress主题 亚马逊
  • 网站制作关键技术上海网站建设收费
  • 深圳做互联网教网站公司集团管理软件
  • 华宁网站建设网站建设与维护新的体会
  • 网站后台清空北京网站建设厂家
  • 济南建设银行网站应用制作app软件
  • 网站开发实习个人小结关于做展厅的网站
  • 网站设计三把火如何制作动漫网站模板
  • 重庆做网站 哪个好些嘛开通qq空间申请网址
  • 制作网站 太原买的电脑没有wordpress
  • 图书馆建设投稿网站可信网站认证logo
  • 专做阀门网站网站如何做银联在线支付
  • 南通网站seo网页制作图片轮播
  • 高端品牌网站建设哪家好中医网站模板
  • 怎么做多语言网站图片添加文字在线制作
  • js特效演示网站wordpress本地视频
  • 徐州做网站哪个好上海国际人才网
  • 黑龙江省城乡和住房建设厅网站首页公司营业执照查询
  • 锦州北京网站建设支付公司网站建设会计分录
  • 泉州做网站优化价格软件公众号开发
  • 商丘旅游网站的建设攀枝花城市建设网站
  • 网站主页设计素材一条龙做网站
  • 咖啡店网站首页怎么做163邮箱注册
  • 网站开发开源程序网站建设及推广销售话术
  • 门户网站和官网的区别美间在线设计平台
  • 淮南制作网站游戏代理哪个平台正规
  • seo网站推广软件 快排手机网页小游戏
  • 上海免费网站建设品牌长沙com建站网站设计
  • 大网站成本品牌设计风格