工作问题(SQL)

来源:互联网 发布:非农数据对美元影响 编辑:程序博客网 时间:2024/06/01 17:55

问题1

  • 表1中自增的ID是表2中的一个字段需要的值
  • 表1在ssm框架中insert完之后怎么把自增的ID获取出来,并且表2在insert的时候吧表1中获取出来的值,赋值给表2中的一个字段
  • 备注:表1在表2之前执行

问题1解决

  • 主要是在ssm中怎么获取出来
  • sql中解决方法
INSERT INTO zs_store_order (way,examinePerson,createtime,examinePersonId,status,kind,description) VALUES (0,'系统管理员',GETDATE(),1,1,1,'无');SELECT @@Identity"SQLCommand.CommandText = strSQLId = SQLCommand.ExecuteScalar()"
  • SSM 中解决方法
    1. 在标签中定义”useGeneratedKeys”值为true
    2. 接着定义”keyProperty”值为entity中的字段名(注:不是表中的字段名,是entity中的);
    3. 并且传递进来的参数必须是Bean
    4. 在insert完之后就会把值保存到parameterType类型的对象中字段为keyProperty定义的值中
    5. 在Service中就可以通过传递的对象名点字段名获取出来
    6. 返回值为String
    7. ~至此ok~
    <insert id="addOrder" parameterType="com.zs.common.entity.OrderEntity"  useGeneratedKeys="true" keyProperty="orderId">        insert into zs_store_order        (kind,administrant,way,examinetime,examinePerson,        examinePersonId,status,createtime,description)        values         (#{kind},#{administrant},#{way},#{examinetime},#{examinePerson},        #{examinePersonId},#{status},getDate(),#{description})        </insert>
  • 根据http://blog.csdn.net/tolcf/article/details/39035259做的参照

问题2

  • sqlserver数据库date类型的时间在ssm框架中查询出来会比数据库里的时间少2天
    • 注: 存入的时间正确
      ##### 问题原因: 可能是JDBC驱动的问题,因为sqlserver的JDBC目前只支持JRE1.5和1.6,
    • 解决方法:下载JDBC Driver4.0 安装既可以解决这个问题
  • 如不想更新JDBC的话可以不使用date类型,使用datetime类型,如果只需要datetime类型的年月日的话,可以使用下面解决方法↓
  • 使用convert函数
    • 使用格式convert(varchar(100),字段名, 23) 23代表截取年月日
    • 使用方法如下↓

      select id,convert(varchar(100),字段名,23) as 别名 from 表名