Mybatis向数据库增加数据时遇到的一些问题

最近在做一个项目,使用的框架是Spring MVC,ORM是Mybatis,数据库是oracle11g。本人是第一次使用Mybatis,在使用过程中遇到了一些问题,现将问题总结一下。

1.Mybatis向数据库插入单个对象:

开始我的SQL语句如下,由于主键id字段从webservice接口获取,所以没有用序列自增。在向数据库插值过程中,由于有些字段为空而报错。

<insert id = "addDepartment" parameterType="Department" > 
        insert into T_SYS_DEPT(ID,DEPT_CODE,DEPT_NAME,DEPT_TYPE,PARENT_ID,KEY_WORD,FULL_NAME,DEPT_LEADER)  
        values(#{id},
        #{deptCode},
        #{deptName},
        #{deptType},
        #{parentId},
        #{keyWord},
        #{fullName},
        #{leaderId})     
    </insert>

后修改如下,即为每个字段指明类型。另外需要注意,当数据类型为NUMBER时,应当指定jdbcType类型为NUMERIC,即jdbcType=NUMERIC,不要写成NUMBER。

<insert id = "addDepartment" parameterType="Department" > 
        insert into T_SYS_DEPT(ID,DEPT_CODE,DEPT_NAME,DEPT_TYPE,PARENT_ID,KEY_WORD,FULL_NAME,DEPT_LEADER)  
        values(#{id,jdbcType=NUMERIC},
        #{deptCode,jdbcType=VARCHAR},
        #{deptName,jdbcType=VARCHAR},
        #{deptType,jdbcType=VARCHAR},
        #{parentId,jdbcType=NUMERIC},
        #{keyWord,jdbcType=VARCHAR},
        #{fullName,jdbcType=VARCHAR},
        #{leaderId,jdbcType=NUMERIC})     
    </insert>

2.批量插值

最初的SQL语句,这里两个id组成了联合主键,两者的值也是从webservice获取,所以未采用序列,而是直接赋值。

<insert id="addDepartmentUserBatch" parameterType="java.util.List">

        insert into T_SYS_DEPT_USER(DEPT_ID,USER_ID,DEPT_CODE,IS_LEADER,IS_DEFAULT,SORT_NO) 

        values

        <foreach collection="list" item="item" index="index" separator=",">

            ( #{item.departmentId,jdbcType=NUMERIC}, 

            #{item.userId,jdbcType=NUMERIC},

            #{item.deptCode,jdbcType=VARCHAR}, 

            #{item.isLeader,jdbcType=VARCHAR},

            #{item.isDefault,jdbcType=NUMERIC}, 

            #{item.sortNo,jdbcType=NUMERIC})

        </foreach>

</insert>

在执行时报SQL未正确结束错误。百度了一下说这是MySql的语法格式,是不是我也不知道,没有在MySql数据库上尝试,但在oracle肯定不行,修改成了以下:

    <insert id="addDepartmentUserBatch" parameterType="java.util.List">
        begin
        <foreach collection="list" item="item" index="index" separator=";">
            insert into T_SYS_DEPT_USER(DEPT_ID,USER_ID,DEPT_CODE,IS_LEADER,IS_DEFAULT,SORT_NO)
            values
            ( #{item.departmentId,jdbcType=NUMERIC}, 
            #{item.userId,jdbcType=NUMERIC},
            #{item.deptCode,jdbcType=VARCHAR}, 
            #{item.isLeader,jdbcType=VARCHAR},
            #{item.isDefault,jdbcType=NUMERIC}, 
            #{item.sortNo,jdbcType=NUMERIC})
        </foreach>
        ;end;
    </insert>

在orqcle11g 上实测通过。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用Spring Boot与MyBatis-Plus连接SQL Server,可能遇到以下问题: 1. 驱动问题:首先需要引入SQL Server的JDBC驱动,可以在pom.xml文件中添加依赖。常用的驱动有`com.microsoft.sqlserver.jdbc.SQLServerDriver`和`net.sourceforge.jtds.jdbc.Driver`。确保驱动版本与SQL Server版本兼容。 2. 数据库连接配置:在application.properties或application.yml文件中,需配置SQL Server的连接信息,包括数据库地址、端口、用户名、密码等。注意要正确配置驱动名称、连接URL以及字符集等。 3. 数据库版本兼容性:确保使用的SQL Server版本与MyBatis-Plus和JDBC驱动兼容。不同版本的SQL Server可能在SQL语法、特性或驱动接口上有所区别。 4. 数据库表映射:在使用MyBatis-Plus进行ORM映射,需要在实体类中使用注解配置数据表名、字段名和主键等信息。同,要确认实体类和数据表的字段类型、长度、精度等匹配。 5. 数据库连接池配置:可以使用Spring Boot提供的连接池技术,如HikariCP或Tomcat连接池。根据并发需求和性能要求,配置合适的连接池大小、最大等待间和最大空闲间等参数。 6. 异常处理与日志记录:在连接SQL Server过程中,可能出现连接异常、语法错误等问题。需要适当处理这些异常,并进行日志记录以便排查和分析问题。 通过解决上述问题,我们可以成功连接SQL Server数据库,并使用MyBatis-Plus进行数据操作和ORM映射。持续的测试和调试可以保证系统的稳定性和性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值