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

建设制作网站专门做调查的网站

建设制作网站,专门做调查的网站,济南市病疾情最新信息,河南省建设监理协会网站人才十目录 一、解决Java实体类属性与数据库表字段不一致问题 #x1f337;现象1#xff1a;显示字段不对应#xff1a;使用ResultType查询结果为null#xff1b; #x1f337;解决办法#xff1a;字段不对应#xff1a;使用ResultMap解决。 二、数据库的多表查询 #…目录 一、解决Java实体类属性与数据库表字段不一致问题 现象1显示字段不对应使用ResultType查询结果为null 解决办法字段不对应使用ResultMap解决。 二、数据库的多表查询 方式1使用对象user  方式2直接写具体的属性 三、动态SQL的使用 1、if标签单个参数不确定 2、trim标签多个参数不确定搭配if标签一起使用 3、where标签搭配if标签 方式1使用where关键字注意不是where标签 方式2使用标签 4、set标签搭配if标签 5、foreach标签用于批量操作搭配if\where标签 个人小结 一、解决Java实体类属性与数据库表字段不一致问题 在对数据进行增删改查的时候如果是增删改一般会返回受影响的行数所以在mapper.xml文件中可以不设置返回的类型但是对于查询无论查询什么内容都要设置返回的数据类型。如下 查询  增加、删除和修改一般可以不设置返回类型  所以对于select查询标签来说至少需要两个属性 1i属性用于标识实现接口中的哪个方法 2结果映射属性有两种实现标签resultType和resultMap          其中在前一节我们定义用户实体类的时候强调了当时的属性名要与数据库中表的字段名一致就可以使用resultType了。但是在实际开发中Java中的实体类属性一般是小驼峰命名数据库中的字段属性是字母小写并用下划线分隔两者之间的名称可能不一致那么此时就要用到resultMap了。 现象1显示字段不对应使用ResultType查询结果为null xml文件   结果 解决办法字段不对应使用ResultMap解决。 UserMapper.xml文件 resultMap idBaseMap1 typedemo3.model.Userid propertyid columnid/idresult propertyname columnusername/resultresult propertypwd columnpassword/resultresult propertyphoto columnphoto/resultresult propertycreateTime columncreateTime/resultresult propertyupdateTime columnupdateTime/resultresult propertystate columnstate/result/resultMapselect idqueryAllByMap resultMapBaseMap1select * from userinfo/select 结果  注意点                 一个xml文件中可以有多个resultMap只要Id不同就行。我们这里是所有的字段都写了实际没写的字段会按照默认的规则来帮助我们映射当数据库字段和Java属性字段一直的话就会自动映射。通常情况下如果我们写了ResultMap不论是否一致都将属性写全。 二、数据库的多表查询 有两张表  数据库中的左连接操作根据文章表中的用户id查找对应的用户表的用户信息写法如下我们现在就实现这个功能 方式1使用对象user  创建两个类User类和Article类 注意点1这里设置文章表的属性的时候设置一个user对象。  UserMapper与ArticleMapper xml文件 注意点2在ArticleMapper.xml文件中设置user的时候要用association引入UserMapper的ResultMap的路径路径名是UserMapper的namespace名ResultMap的id名称。 测试类  测试结果 注意点3可以看到在文章表中查询出来的结果其中的用户信息是一个user对象来表示的。 方式2直接写具体的属性 注意1这里的文章类我们就不定义user对象了而是要查询用户的Id和用户名我们就将这两个字段定义出来。 注意点2xml文件中也是直接通过resutMap的result定义出用户的Id和用户名不用再引入UserMapper.xml文件中的ResultMap了。 结果  注意点3可以看到最终查询的结果也是具体的用户Id和用户名信息而不是方式1的整个user对象。 三、动态SQL的使用 动态SQL根据输入参数的不同动态的拼接SQL从而完成不同条件下的SQL拼接。         比如在实际场景下有时候我们进行注册有的字段是必填的有的又不是必填的如果在注册用户的时候有不确定的字段传入那么怎么实现呢 1、if标签单个参数不确定 insert idinsertByIfinsert into articleInfo ( title,content,uid if teststate!null,state/if)values ( #{title},#{content},#{uid} if teststate!null,#{state}/if)/insert 1用法  测试结果1当输入state状态   测试情况2不输入state 注意if标签里面的属性是Java对象的属性字段state而不是数据库表中的字段。而insert中的sql语句的字段是数据库表中的字段注意区分~ 2存在问题 当我多个参数都不确定的时候写成id标签的形式会导致逗号放在哪里都存在问题。         如果统一将逗号放在字段前面当第一个字段为null的时候整个SQL最前面就会多一个逗号如果统一将逗号放在字段后面当最后一个字段为null的时候整个SQL最后面就会多一个逗号所以这个时候我们就要用trim标签结合if标签对多个字段都采取动态⽣成的⽅式了。 2、trim标签多个参数不确定搭配if标签一起使用 trim标签中有如下属性 prefix表示整个语句块以prefix的值作为前缀表示从开始suffix表示整个语句块以suffix的值作为后缀表示从   结束prefixOverrides表示整个语句块要去除掉的前缀表示去掉左边的逗号suffixOverrides表示整个语句块要去除掉的后缀表示去掉右边的逗号 insert idinsertByIfinsert into articleInfotrim prefix( suffix) prefixOverrides, suffixOverrides,if testtitle!nulltitle,/ifif testcontent!nullcontent,/ifif testuid!nulluid,/ifif teststate!nullstate/if/trimvaluestrim prefix( suffix) prefixOverrides, suffixOverrides,if testtitle!null#{title},/ifif testcontent!null#{content},/ifif testuid!null#{uid},/ifif teststate!null#{state}/if/trim/insert 在以上 sql 动态解析时会将第⼀个 trim 部分做如下处理 1基于 prefix 配置开始部分加上 ( 2基于 suffix 配置结束部分加上 ) 3多个 if组织的语句都以 , 结尾在最后拼接好的字符串还会以 , 结尾会基于 suffixO verrides 配置去掉最后⼀个 , 4注意 if test“state! null” 中的 state是传⼊对象的属性 测试当不传入state的时候 3、where标签搭配if标签 方式1使用where关键字注意不是where标签 当uid为null的时候  当state为null的时候 当uid和state为null的时候 方式2使用where标签 当uid为null的时候  当state为null的时候 当两个都为null的时候 从上述案例中可以看出where标签的作用 1生成where关键字 2去掉多余的and 3如果没有where条件就不会生成where关键字 4、set标签搭配if标签 当只设置uid值的时候测试通过同样其他情况也是测试通过的。 set作用 1set标签生成set关键字 2去除最后一个逗号。  5、foreach标签用于批量操作搭配if\where标签 批量操作插入、删除、更新等。演示批量删除 collection绑定⽅法参数中的集合如 ListSetMap或数组对象item遍历时的每⼀个对象open语句块开头的字符串close语句块结束的字符串separator每次遍历之间间隔的字符串。 注意collection中除了可以写Llist还可以写参数名称此时对参数进行重命名 个人小结 1、字段名称和程序中的属性名不同的情况可使⽤ resultMap 配置映射。 2、多表查询文章表中有用户Id和用户名要通过文章表查询用户信息有两种方式 1在文章实体类定义属性为user则文章表的xml文件中要通过association引入用户user的ResultMap的地址 2直接在文章的实体类中定义属性用户Id和用户名此时文章表中的xml文件通过resultMap引入这两个属性。 3、动态SQL: 1if标签是基础后面的trim标签、where、set、foreach标签都是结合if标签使用的。 2当只有单个参数不确定的时候使用If标签 3当多个参数不确定要trim标签 4条件不确定的时候用where标签也可以用where关键字加一个条件11 5set标签设置 不确定的属性 6foreach标签批量处理数据插入、删除修改等。collection中传入list等当对接口方法中的参数重命名后collection也可以使用参数的名称。
http://www.pierceye.com/news/904225/

相关文章:

  • 天津 公司网站建设优化网站内容的方法
  • 网站 例能加速浏览器的加速器
  • 黄埔营销型网站建设山东诚铭建设机械有限公司网站
  • 东莞网站建设dgjcwlwordpress添加活动
  • 广州互邦物流网络优化建站关于网站开发的请示
  • 贵阳手机银行app论坛seo招聘
  • 太原建设北路小学网站铜仁市网站建设
  • 网站换服务器怎么做哪个公司做公司网站好
  • 东莞营销网站建设报价阿里云服务器部署网站
  • 品牌企业建站如何建设网站兴田德润简介呢
  • 思行做网站北京西站到大兴机场
  • 长沙网页制作模板的网站c++编程软件
  • 网站备案 人工审核安卓软件下载安装
  • 网站建设公司 专题制作怎么注册订阅号
  • 网站运营内容包含哪些深圳标本制作
  • wordpress 微信导航站南昌有哪些企业网站
  • 网站开发需要的人员南京手机网站
  • 上海网站建设知识 博客网站建设数据库的购买
  • 足彩网站开发网站建设 网站制作
  • 网站开发 定制 多少 钱小程序加盟代理前景
  • 河南网站建设官网wordpress博客主题哪个好
  • 网站建设会计帐务处理青岛发现51例阳性
  • 保定三金网络科技有限公司windows优化大师是哪个公司的
  • 华丰建设股份有限公司网站深圳影视广告在哪里好
  • 企业建设网站需要服务器吗谷德设计网官网首页入口
  • 新手学做网站步骤天津制作网站的公司电话
  • 做网站同行php网站开发平台下载
  • 国外风格网站企业宣传片制作公司哪家好
  • 如何做双版网站wordpress 36kr
  • 东莞企石网站设计最新便民信息汇总