mybatis 进行批量修改操作

批量修改时候传入多个数值不想在service层 进行循环修改,
想在写sql语句的时候进行批量修改
传入的有全部的id和需要修改的数据。怎么写sql语句。。。
只会删除的时候传入id的语句,,现在多个参数不会写了。。

8个回答

    <update id="batchUpdate" parameterType="java.util.List">  
                        UPDATE STUDENT
                        <set> 
                                <if test="bannerName != null">
                                        t.banner_name = #{bannerName},
                                </if>
                                <if test="bannerUrl != null">
                                        t.banner_url = #{bannerUrl},
                                </if>
                        </set>                                  
                        WHERE id IN  
                    <foreach collection="list" item="item" index="index" open="(" separator="," close=")" >  
                            #{item}  
                    </foreach>  
</update>  
han73748196
han73748196 具体的值怎么写,传入String a,String b,String c; c是所有的id如1,2,3 a和b是需要修改的数据。。直接list.add吗。。
2 年多之前 回复

set不是固定值,是前台传过来的

<update id="Update" >  
    UPDATE STUDENT    
 <trim prefix="set " suffixOverrides=",">
             <if test="lastName!=null and lastName!=''">
                 last_name=#{lastName} ,
             </if>
             <if test="email!=null and email.trim()!=''">
                 email=#{email} ,
             </if>
         </trim>
                where id in
        <foreach collection="list" item="item" index="index" open="(" separator="," close=")" >  
        #{item}  
    </foreach> 
    </update>

update tablename set xxx = xxx where id in (xxx,xxx,xxx)

或者
        <update id="batchUpdate" parameterType="java.util.List">  
    UPDATE STUDENT SET name = "250" WHERE id IN  
    <foreach collection="list" item="item" index="index" open="(" separator="," close=")" >  
        #{item}  
    </foreach>  
</update>  
han73748196
han73748196 就是set那不会写。。set是多个。
2 年多之前 回复

mybatis自动生成的update就可以动态set

使用动态sql

update student


id=#{id} ,


last_name=#{lastName} ,


email=#{email} ,


给你个模板,自己换一下字段就好了,传入的参数是实体类

 <update id="delete">
        DELETE FROM wsd_count
        <where>
            <if test="id != null and id != ''">
                AND id = #{id}
            </if>
            <if test="uid != null and uid != ''">
                AND uid = #{uid}
            </if>
            <if test="line != null and line != ''">
                AND line LIKE 
                    <if test="dbName == 'oracle'">'%'||#{line}||'%'</if>
                    <if test="dbName == 'mssql'">#{line}+'%'</if>
                    <if test="dbName == 'mysql'">concat('%',#{line},'%')</if>
            </if>
            <if test="num != null and num != ''">
                AND num = #{num}
            </if>
            <if test="result != null and result != ''">
                AND result = #{result}
            </if>
            <if test="data != null and data != '' and countReserve5 != null and countReserve5 != ''">
                AND data BETWEEN #{data} AND #{countReserve5}
            </if>
        </where>
    </update>
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
mybatis 批量进行插入更新,数据库为postgreSQL?

没有发现mybatis的批量更新和插入,用for查询感觉很慢,又需要有这样的需求, 其他数据库查到一些,但是postgre没查到,恳求各位大神稍加指点

Mybatis save and update 批量操作

我想在mybatis中批量更新操作一些数据,改数据库配置&allowMultiQueries=true是可以的,想知道用 ON DUPLICATE KEY UPDATE 可以批量操作吗?还有没有别的什么好方法?

myBatis3批量修改查询操作

配置UserMapper.xml文件里的内容: <select id="selectUser" parameterType="String" resultMap="result"> select * from t_user where f_pkid in(${pkId}); </select> <update id="alterUser" parameterType="java.lang.String"> update t_user set f_isdeleted = 'Y' where f_pkid in <foreach item="pkId" index="index" collection="list" open="(" separator="," close=")"> #{pkId} </foreach> </update> 得到的参数是31,32,33形式的字符串, 第一种如果是#{}这种形式传参的话,参数外自动加上了单引号,只能查询一个。第二种${}这种形式也不对给不了参数 , 后面这种形式加foreach节点collection属性的值我又不知道怎么传 我用的是mybatis3版本 哪位朋友帮忙解决一下 接口内容是: public List<User> selectUser(String pkId); public void alterUser(String pkId);

mybatis-Plus如何根据id批量更新呢

![图片说明](https://img-ask.csdn.net/upload/201907/20/1563614662_897329.png)

Mybatis操作Oracle数据库:批量修改成功后返回的值是-1?

**Mapper.xml** ``` <update id="updateByMultiConditions" parameterType="java.util.List"> <foreach collection="list" item="item" index="index" open="begin" close="; end;" separator=";"> update TB_DUTY <set> <if test="item.morningPeopleIds != null and item.morningPeopleIds != '' " > MORNING_PEOPLE_IDS=#{item.morningPeopleIds,jdbcType=VARCHAR}, </if> <if test="item.morningPeopleNames != null and item.morningPeopleNames != '' " > MORNING_PEOPLE_NAMES=#{item.morningPeopleNames,jdbcType=VARCHAR}, </if> <if test="item.afternoonPeopleIds != null and item.afternoonPeopleIds != '' " > AFTERNOON_PEOPLE_IDS=#{item.afternoonPeopleIds,jdbcType=VARCHAR}, </if> <if test="item.afternoonPeopleNames != null and item.afternoonPeopleNames != '' " > AFTERNOON_PEOPLE_NAMES=#{item.afternoonPeopleNames,jdbcType=VARCHAR}, </if> <if test="item.eveningPeopleIds != null and item.eveningPeopleIds != '' " > EVENING_PEOPLE_IDS=#{item.eveningPeopleIds,jdbcType=VARCHAR}, </if> <if test="item.eveningPeopleNames != null and item.eveningPeopleNames != '' " > EVENING_PEOPLE_NAMES=#{item.eveningPeopleNames,jdbcType=VARCHAR}, </if> <if test="item.leaderIds != null and item.leaderIds != '' " > LEADER_IDS=#{item.leaderIds,jdbcType=VARCHAR}, </if> <if test="item.leaderNames != null and item.leaderNames != '' " > LEADER_NAMES=#{item.leaderNames,jdbcType=VARCHAR}, </if> </set> where DUTY_ID=#{item.dutyId,jdbcType=INTEGER} </foreach> </update> ``` **Controller:** ``` int resultFlag=dutyService.updateByMultiConditions(dutyList2); ``` **问题:** 批量修改成功后返回的值是resultFlag=-1,作何解释?如何才能获得修改的行数?

spring batch批量数据处理框架和mybatis自带的批量数据处理有啥不一样啊

spring batch批量数据处理框架和mybatis自带的批量数据处理有啥不一样啊

jsp与servlet如何实现批量修改的功能

jsp表单中的数据是通过c:foreach从数据库读出来的,听说用javascript可以实现,谁能举个例子什么的,新手求教啊…

多线程 mybatis 百万级数据

mybatis先查询百万条数据,另一张表根据百万条数据中的一个字段修改另一张表 多线程实现,效率要高

mybatis mysql update 返回影响行数错误

数据库有个订单表 有一行数据 order_id=1555(自增主键),有个标记字段order_mark=2 执行语句update t_order set order_mark = 2 where order_id=1555 使用mysql自带的client工具 Query OK, 0 rows affected (0.00 sec) Rows matched: 1 Changed: 0 Warnings: 0 使用Navicat for MySQL工具返回 [SQL] update t_order set order_mark = 2 where order_id=1555 受影响的行: 0 时间: 0.002s 使用工具 datastudio 返回 1 record(s) affected 在项目中 项目源码: int i = orderDAO.updateOrderMark(orderId, ORDER_MARK.CHEAT.ordinal()); if(i==1){ int userId = order.getDriverId(); 此处的返回的i=1; debug打印执行的sql ![update=1](https://img-ask.csdn.net/upload/201509/14/1442192135_33720.png) 求解释为什么返回的影响行数会是 1.而不是0

Sping整合MyBatis后,如何关闭自动提交事务

先附上Spring配置文件的代码 ``` <!-- 创建DataSource数据源<bean>对象,用来让SqlSessionFactory<bean>对象引用 --> <bean id="datasource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="oracle.jdbc.OracleDriver"></property> <property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"></property> <property name="username" value="scott"></property> <property name="password" value="wjs"></property> <property name="defaultAutoCommit"><value>false</value></property> </bean> <!-- 创建SqlSessionFactory<bean>对象,用来创建SqlSessionTemplate<bean>对象. --> <bean id="ssf" class="org.mybatis.spring.SqlSessionFactoryBean"> <!-- 引用src下的MyBatis配置文件。 --> <property name="configLocation" value="classpath:mybatis-config.xml"></property> <!-- 配置数据源,代替了MyBatis配置文件中的<environments>配置数据库连接 --> <property name="dataSource" ref="datasource"></property> </bean> <!-- 创建SqlSessionTemplate<bean>对象 --> <bean id="sst" class="org.mybatis.spring.SqlSessionTemplate"> <constructor-arg name="sqlSessionFactory" ref="ssf"></constructor-arg> </bean> <!-- 创建数据操作接口实现类,并给它的SqlSessionTemplate属性赋值 --> <bean id="empmapperimpl" class="daoImpl.EmpMapperImpl" p:ssTemplate-ref="sst"></bean> ``` 在数据源中配置了defaultAutoCommit属性为false依然是自动提交事务,这两框架整合后如何关闭自动提交事务啊,求大神帮帮忙吧!

关于mybatis多对多数据更新的问题

刚学mybatis,遇到如下的问题,纠结了很久啊。。。。。。各路神仙求帮忙 三个表: drop table middles; drop table students; drop table courses; create table students( sid int(5) primary key, sname varchar(10) ); create table courses( cid int(5) primary key, cname varchar(10) ); create table middles( sid int(5), cid int(5), primary key(sid,cid) ); 学生实体和课程实体如下: /** * 学生(多方) */ public class Student { private Integer id; private String name; private List<Course> courseList = new ArrayList<Course>(); public Student(){} public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public List<Course> getCourseList() { return courseList; } public void setCourseList(List<Course> courseList) { this.courseList = courseList; } } /** * 课程(多方) * @author AdminTC */ public class Course { private Integer id; private String name; private List<Student> studentList = new ArrayList<Student>(); public Course(){} public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public List<Student> getStudentList() { return studentList; } public void setStudentList(List<Student> studentList) { this.studentList = studentList; } } 现在的问题是,某个学生A在自己学的课程中,又加了一门课叫pentaKillCourse。 代码流程如下: Course pentaKillCourse = new Course (); Student A = new Student(); A.getCourseList().add(pentaKillCourse ); studentService.update(user); --------------------------------studentService.update()方法如下------------------------------------------- public void update(User user) { userDao.updateUser(user); } --------------------------------userDao.updateUser()方法如下--------------------------------------------- public void updateUser(User user) { SqlSession sqlSesion = sqlSessionFactory.openSession(); sqlSesion.update("userNamespace.updateUser", user); } ------------------------------------------------------------------------------------------------------------------------ 下面是userMapper: <mapper namespace="userNamespace"> <resultMap type="com.syhua.ssm.sy.domain.User" id="userMap"> <id property="userId" column="user_id" /> <result property="userName" column="user_name"/> <result property="userType" column="user_type"/> <result property="lastIp" column="last_ip"/> <result property="lastVisit" column="last_visit"/> <result property="password" column="password"/> <result property="locked" column="locked"/> <result property="credit" column="credit"/> </resultMap> <!-- 问题是:这个时候我该如何更新用户???? --> <update id="updateUser" parameterType="com.syhua.ssm.sy.domain.User"> ......................................................................... </update> </mapper>

数据库在数据导入时的并发问题(使用myBatis)

我有一个批量导入数据到数据库中的程序,代码主要做2件事情. 1.首先检查数据库中有无重复记录.如果有则返回false,不进行导入操纵. 2.没有重复数据,则导入这批数据. 现在我有这样一个疑问,当我做完检查的时候,系统发现没有重复,于是执行下面的导入操作. 可当我还没提交这批数据时,另一个系统修改了数据库,导致出现重复记录,也就是说出现了数据不一致的问题. 明明在检查的时候没有重复,可在提交的时候出现重复.象这种问题应该怎么解决,或者此类问题的解决思路是怎样的? 是在检查数据有无重复时就锁住整张表?如果要锁表,myBatis里应该怎么做呢?

请教一个mysql批量更新时的deadlock问题?

数据是mysql 5.6 表引擎是innoDB,DAO是mybatis3 有个表,比如是订单-物品表,里面保存每个订单的所有物品清单 字段有:record_id(记录id,自增长),order_id(订单id),good_id(物品id)等其他字段.. 有个数据同步的业务场景 需要在一个事务里 先根据order_id做删除操作,delete from xxx where order_id=xx 然后再批量增加订单-物品清单insert into xxx () values(),(),() 结果发现,经常在insert into 这发生deadlock。 同时,我这个事物所在的业务方法,是多线程并发进行的。就是有并发的线程,来更新不同的订单(的物品清单) 不知道如何解决。。。。

mysql批量插入耗时问题,求解

使用mysql批量插入时,发现进行sql的string语句拼接特别耗时,数据库执行插入时间还算比较快。想问有什么好的解决方案可以提高sql的string语句拼接速度(一次插入200条,每条数百列数据)?另外进行insert批量插入时,插入的记录是否会被更改?比如替换或者删除?

springboot 配置多库之后,mybatis在控制台不打印sql语句了

springboot项目 单库下,mybatis只需要添加如下配置,就可以打印sql语句 ```xml <!-- 打印查询语句 --> <setting name="logImpl" value="STDOUT_LOGGING" /> ``` 但是多库环境下,mybatis不论怎么设置,都无法打印sql语句..... ---- ---- 项目中的相关配置: mybatis配置: ```xml <!-- 设置运行参数 --> <settings> <!-- 全局映射器启用缓存 --> <setting name="cacheEnabled" value="true" /> <!-- 查询时,关闭关联对象及时加载以提高性能 --> <setting name="lazyLoadingEnabled" value="false" /> <!-- 设置关联对象加载的形态,此处为按需加载字段(加载字段由SQL指定),不会加载关联表的所有字段,以提高性能 --> <setting name="aggressiveLazyLoading" value="false" /> <!-- 对于位置的SQL查询,允许返回不同的结果集以达到通用的效果 --> <setting name="multipleResultSetsEnabled" value="true" /> <!-- 允许使用列标签代替列明 --> <setting name="useColumnLabel" value="true" /> <!-- 允许使用自定义的主键值(比如由程序生成的UUID 32位编码作为键值), 数据表的pk生成策略将被覆盖 --> <setting name="useGeneratedKeys" value="true" /> <!-- 给予被嵌套的resultMap以字段-属性的映射支持 --> <setting name="autoMappingBehavior" value="PARTIAL" /> <!-- 对于批量更新操作缓存SQL以提高性能 --> <setting name="defaultExecutorType" value="REUSE" /> <!-- 数据库超过25000秒仍未响应则超时 --> <!--<setting name="defaultStatementTimeout" value="25000" />--> <!-- 打印查询语句 --> <setting name="logImpl" value="STDOUT_LOGGING" /> <!-- 开启驼峰--> <setting name="mapUnderscoreToCamelCase" value="true" /> </settings> ``` logback配置: ```xml <?xml version="1.0" encoding="UTF-8"?> <configuration scan="true"> <!-- 属性1:每个logger都关联到logger上下文,默认上下文名称为“default”。 但可以使用设置成其他名字,用于区分不同应用程序的记录。一旦设置,不能修改,可以通过%contextName来打印日志上下文名称。 --> <contextName>logback</contextName> <!--属性2:定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径--> <!-- <springProfile name="dev"> <property name="LOG_PATH" value="D://care-management-statisticserver-logs"/> </springProfile> <springProfile name="test"> <property name="LOG_PATH" value="/data/tomcat_jar/taixin_care/care-management-statisticserver/logs"/> </springProfile> <springProfile name="prod"> <property name="LOG_PATH" value="/data1/logs/care-management-statisticserver"/> </springProfile> --> <property name="LOG_PATH" value="${LOG_FILE}"/> <!--appender用来格式化日志输出节点,有俩个属性name和class,class用来指定哪种输出策略,常用就是控制台输出策略和文件输出策略。--> <!-- %m输出的信息,%p日志级别,%t线程名,%d日期,%c类的全名,,,, --> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>info</level> </filter> <encoder> <pattern>%date %level [%thread] %logger{36} [%file : %line] %msg%n</pattern> </encoder> </appender> <!--<include resource="org/springframework/boot/logging/logback/base.xml"/>--> <!-- 说明: 1、日志级别及文件 日志记录采用分级记录,级别与日志文件名相对应,不同级别的日志信息记录到不同的日志文件中 例如:error级别记录到log_error_xxx.log或log_error.log(该文件为当前记录的日志文件),而log_error_xxx.log为归档日志, 日志文件按日期记录,同一天内,若日志文件大小等于或大于2M,则按0、1、2...顺序分别命名 例如log-level-2013-12-21.0.log 其它级别的日志也是如此。 2、文件路径 若开发、测试用,在Eclipse中运行项目,则到Eclipse的安装路径查找logs文件夹,以相对路径../logs。 若部署到Tomcat下,则在Tomcat下的logs文件中 3、Appender FILEERROR对应error级别,文件名以log-error-xxx.log形式命名 FILEWARN对应warn级别,文件名以log-warn-xxx.log形式命名 FILEINFO对应info级别,文件名以log-info-xxx.log形式命名 FILEDEBUG对应debug级别,文件名以log-debug-xxx.log形式命名 CONSOLE将日志信息输出到控制上,为方便开发测试使用 --> <!-- 日志记录器,日期滚动记录 --> <appender name="FILEERROR" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 正在记录的日志文件的路径及文件名 --> <file>${LOG_PATH}/error_statisticserver.log</file> <!-- 日志记录器的滚动策略,按日期,按大小记录 --> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- 归档的日志文件的路径,例如今天是2013-12-21日志,当前写的日志文件路径为file节点指定,可以将此文件与file指定文件路径设置为不同路径,从而将当前日志文件或归档日志文件置不同的目录。 而2013-12-21的日志文件在由fileNamePattern指定。%d{yyyy-MM-dd}指定日期格式,%i指定索引 --> <fileNamePattern>${LOG_PATH}/error-statisticserver-%d{yyyy-MM-dd}.%i.log</fileNamePattern> <!-- 表示只保留最近30天的日志,以防止日志填满整个磁盘空间。--> <maxHistory>30</maxHistory> <!--用来指定日志文件的上限大小,例如设置为1GB的话,那么到了这个值,就会删除旧的日志。--> <totalSizeCap>1GB</totalSizeCap> <!-- 除按日志记录之外,还配置了日志文件不能超过2M,若超过2M,日志文件会以索引0开始, 命名日志文件,例如log-error-2013-12-21.0.log --> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>100MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> <!-- 追加方式记录日志 --> <append>true</append> <!-- 日志文件的格式 --> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>%date %level [%thread] %logger{36} [%file : %line] %msg%n</pattern> <charset>utf-8</charset> </encoder> <!-- 此日志文件只记录error级别的 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>ERROR</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!-- 日志记录器,日期滚动记录 --> <appender name="FILEINFO" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 正在记录的日志文件的路径及文件名 --> <file>${LOG_PATH}/info_statisticserver.log</file> <!-- 日志记录器的滚动策略,按日期,按大小记录 --> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- 归档的日志文件的路径,例如今天是2013-12-21日志,当前写的日志文件路径为file节点指定,可以将此文件与file指定文件路径设置为不同路径,从而将当前日志文件或归档日志文件置不同的目录。 而2013-12-21的日志文件在由fileNamePattern指定。%d{yyyy-MM-dd}指定日期格式,%i指定索引 --> <fileNamePattern>${LOG_PATH}/info-statisticserver-%d{yyyy-MM-dd}.%i.log</fileNamePattern> <!-- 表示只保留最近30天的日志,以防止日志填满整个磁盘空间。--> <maxHistory>30</maxHistory> <!--用来指定日志文件的上限大小,例如设置为1GB的话,那么到了这个值,就会删除旧的日志。--> <totalSizeCap>1GB</totalSizeCap> <!-- 除按日志记录之外,还配置了日志文件不能超过2M,若超过2M,日志文件会以索引0开始,命名日志文件,例如log-error-2013-12-21.0.log --> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>100MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> <!-- 追加方式记录日志 --> <append>true</append> <!-- 日志文件的格式 --> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>%date %level [%thread] %logger{36} [%file : %line] %msg%n</pattern> <charset>utf-8</charset> </encoder> <!-- 此日志文件只记录info级别的 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>INFO</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!-- <logger>用来设置某一个包或者具体的某一个类的日志打印级别、以及指定<appender>。<logger>仅有一个name属性,一个可选的level和一个可选的addtivity属性。 --> <logger name="org.springframework" level="INFO"/> <logger name="org.apache" level="ERROR"/> <logger name="org.hibernate.validator" level="ERROR"/> <!--<logger name="org.thymeleaf" level="ERROR"/>--> <logger name="org.springframework.context.annotation" level="ERROR"/> <!-- springProfile多环境日志输出,据不同环境(prod:生产环境,test:测试环境,dev:开发环境)来定义不同的日志输出--> <springProfile name="dev" /> <root level="INFO"> <appender-ref ref="FILEERROR"/> <appender-ref ref="FILEINFO"/> <appender-ref ref="STDOUT"/> </root> <!-- 可以启动服务的时候指定 profile (如不指定使用默认),如指定prod 的方式为: java -jar xxx.jar –spring.profiles.active=prod--> </configuration> ``` application.properties部分配置: ```properties #配置文件 logging.level.tk.mybatis=TRACE spring.freemarker.cache=false spring.freemarker.request-context-attribute=request mybatis.type-aliases-package=com.mtpf.domain mybatis.mapper-locations=classpath:mapper/*.xml mapper.mappers=com.mtpf.util.MyMapper mapper.not-empty=false mapper.identity=MYSQL pagehelper.helperDialect=mysql #true 是超出最大页码返回数据 false超出最大页码不返回数据 pagehelper.reasonable=${PAGEHELPER_REASONABLE} pagehelper.supportMethodsArguments=true pagehelper.params=count=countSql ```

MyBatis insert后返回自增字段的值后就报错,但是返回值依旧是对象啊,只是多了一个属性呀!

HTTP Status 500 - nested exception is org.apache.ibatis.executor.ExecutorException: Error getting generated key or setting result to parameter object. Cause: java.lang.NullPointerException type Exception report message nested exception is org.apache.ibatis.executor.ExecutorException: Error getting generated key or setting result to parameter object. Cause: java.lang.NullPointerException description The server encountered an internal error that prevented it from fulfilling this request.

如何在ORACLE中写SQL批量实现把一张表中的一个字段值赋给另一个字段值

如何在ORACLE中写SQL批量实现把一张表中的一个字段值赋给另一个字段值 比如一个表有字段:上网时间,还有化验时间。 实现功能是:把化验时间的值对应的赋给 上网时间为空 的字段; 表名字:table_name -------------------------------- 上网时间 化验时间 21:22:23 21:22:23 21:22:23 ---------------------------------- update table_name ----- 谢谢了 [b]问题补充:[/b] 谢谢。你很棒,我只是没尝试了,下。

java JDBC 批量插入的时候报数组下标越界,求大神

代码: private static Boolean Function_User(Map<String, List> resultMap, String sql,String tableType) { // TODO Auto-generated method stub Connection conn=null; PreparedStatement insert_st=null; int count = 0; final int batchSize = 500; System.out.println("开始:"+Calendar.getInstance().getTime()); try { conn=DriverManager.getConnection(db_url,db_name,db_pwd); conn.setAutoCommit(false); insert_st = conn.prepareStatement(sql); for (int i = 0; i < resultMap.get(tableType).size(); i++) { Object obj = resultMap.get(tableType).get(i); OrderUserSnap user = (OrderUserSnap) obj; insert_st.setString(1, ZH_S(user.getId())); insert_st.addBatch(); if(++count % batchSize == 0) { insert_st.executeBatch(); insert_st.clearBatch(); } System.out.println("tt:"+count); } insert_st.executeBatch(); insert_st.clearBatch(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ try { insert_st.close(); conn.close(); System.out.println("结束:"+Calendar.getInstance().getTime()); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } return true; }

java.sql。SQLException:连接是只读的。不允许导致数据修改的查询怎么解决?

这是applicationContext.xml ``` <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"> <context:component-scan base-package="com.sht"> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" /> </context:component-scan> <!-- Spring的配置文件,这里主要配置和业务逻辑有关的 --> <!-- ==================数据源,事务控制,xxx================== --> <context:property-placeholder location="classpath:dbconfig.properties" /> <bean id="pooledDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="driverClass" value="${jdbc.driverClass}"></property> <property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property> <property name="user" value="${jdbc.user}"></property> <property name="password" value="${jdbc.password}"></property> </bean> <!-- =======================配置和MyBatis的整合================== --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <!-- 指定mybatis全局配置文件的位置 --> <property name="configLocation" value="classpath:mybatis-config.xml"></property> <property name="dataSource" ref="pooledDataSource"></property> <!-- 指定mybatis,mqpper文件的位置 --> <property name="mapperLocations" value="classpath:mapper/*.xml"></property> </bean> <!-- 配置扫描器,将mybatis接口的实现加入到ioc容器中 --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <!-- 扫描所有dao接口的实现,加入到ioc容器中 --> <property name="basePackage" value="com.sht.dao"></property> </bean> <!-- 配置一个可以执行批量的sqlSession --> <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate"> <constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"></constructor-arg> <constructor-arg name="executorType" value="BATCH"></constructor-arg> </bean> <!-- ========================================================= --> <!-- ================事务控制的配置============================= --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <!-- 控制数据源 --> <property name="dataSource" ref="pooledDataSource"></property> </bean> <!-- 开启基于注解的事务,使用xml配置形式的事务(必要主要的都是使用配置式) --> <aop:config> <!-- 切入点表达式 --> <aop:pointcut expression="execution(* com.sht.service.impl..*(..))" id="txPoint"/> <!-- 配置事务增强 --> <aop:advisor advice-ref="txAdvice" pointcut-ref="txPoint"/> </aop:config> <!-- 配置事务增强,事务如何切入--> <tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes> <!-- 所有方法都是事务方法 --> <tx:method name="*"/> <!-- 以get开始的所有方法 --> <tx:method name="get*" read-only="true"/> </tx:attributes> </tx:advice> <!-- Spring配置文件的核心点(数据源、与mybatis的整合、事务控制) --> </beans> ``` ![图片说明](https://img-ask.csdn.net/upload/202004/12/1586679388_889234.png)

大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了

大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

Java基础知识面试题(2020最新版)

文章目录Java概述何为编程什么是Javajdk1.5之后的三大版本JVM、JRE和JDK的关系什么是跨平台性?原理是什么Java语言有哪些特点什么是字节码?采用字节码的最大好处是什么什么是Java程序的主类?应用程序和小程序的主类有何不同?Java应用程序与小程序之间有那些差别?Java和C++的区别Oracle JDK 和 OpenJDK 的对比基础语法数据类型Java有哪些数据类型switc...

我以为我学懂了数据结构,直到看了这个导图才发现,我错了

数据结构与算法思维导图

String s = new String(" a ") 到底产生几个对象?

老生常谈的一个梗,到2020了还在争论,你们一天天的,哎哎哎,我不是针对你一个,我是说在座的各位都是人才! 上图红色的这3个箭头,对于通过new产生一个字符串(”宜春”)时,会先去常量池中查找是否已经有了”宜春”对象,如果没有则在常量池中创建一个此字符串对象,然后堆中再创建一个常量池中此”宜春”对象的拷贝对象。 也就是说准确答案是产生了一个或两个对象,如果常量池中原来没有 ”宜春” ,就是两个。...

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

Linux面试题(2020最新版)

文章目录Linux 概述什么是LinuxUnix和Linux有什么区别?什么是 Linux 内核?Linux的基本组件是什么?Linux 的体系结构BASH和DOS之间的基本区别是什么?Linux 开机启动过程?Linux系统缺省的运行级别?Linux 使用的进程间通信方式?Linux 有哪些系统日志文件?Linux系统安装多个桌面环境有帮助吗?什么是交换空间?什么是root帐户什么是LILO?什...

Linux命令学习神器!命令看不懂直接给你解释!

大家都知道,Linux 系统有非常多的命令,而且每个命令又有非常多的用法,想要全部记住所有命令的所有用法,恐怕是一件不可能完成的任务。 一般情况下,我们学习一个命令时,要么直接百度去搜索它的用法,要么就直接用 man 命令去查看守冗长的帮助手册。这两个都可以实现我们的目标,但有没有更简便的方式呢? 答案是必须有的!今天给大家推荐一款有趣而实用学习神器 — kmdr,让你解锁 Linux 学习新姿势...

和黑客斗争的 6 天!

互联网公司工作,很难避免不和黑客们打交道,我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描。有的是寻找 Sql 注入的缺口,有的是寻找线上服务器可能存在的漏洞,大部分都...

史上最全的 python 基础知识汇总篇,没有比这再全面的了,建议收藏

网友们有福了,小编终于把基础篇的内容全部涉略了一遍,这是一篇关于基础知识的汇总的文章,请朋友们收下,不用客气,不过文章篇幅肯能会有点长,耐心阅读吧爬虫(七十)多进程multiproces...

讲一个程序员如何副业月赚三万的真实故事

loonggg读完需要3分钟速读仅需 1 分钟大家好,我是你们的校长。我之前讲过,这年头,只要肯动脑,肯行动,程序员凭借自己的技术,赚钱的方式还是有很多种的。仅仅靠在公司出卖自己的劳动时...

女程序员,为什么比男程序员少???

昨天看到一档综艺节目,讨论了两个话题:(1)中国学生的数学成绩,平均下来看,会比国外好?为什么?(2)男生的数学成绩,平均下来看,会比女生好?为什么?同时,我又联想到了一个技术圈经常讨...

85后蒋凡:28岁实现财务自由、34岁成为阿里万亿电商帝国双掌门,他的人生底层逻辑是什么?...

蒋凡是何许人也? 2017年12月27日,在入职4年时间里,蒋凡开挂般坐上了淘宝总裁位置。 为此,时任阿里CEO张勇在任命书中力赞: 蒋凡加入阿里,始终保持创业者的冲劲,有敏锐的...

总结了 150 余个神奇网站,你不来瞅瞅吗?

原博客再更新,可能就没了,之后将持续更新本篇博客。

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

新一代神器STM32CubeMonitor介绍、下载、安装和使用教程

关注、星标公众号,不错过精彩内容作者:黄工公众号:strongerHuang最近ST官网悄悄新上线了一款比较强大的工具:STM32CubeMonitor V1.0.0。经过我研究和使用之...

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

我入职阿里后,才知道原来简历这么写

私下里,有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有写过简历了,但我认识的一个同行,他在阿里,给我说了一些他当年写简历的方法论,我感觉太牛逼了,实在是忍不住,就分享了出来,希望能够帮助到你。 01、简历的本质 作为简历的撰写者,你必须要搞清楚一点,简历的本质是什么,它就是为了来销售你的价值主张的。往深...

大学一路走来,学习互联网全靠这几个网站,最终拿下了一把offer

大佬原来都是这样炼成的

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

为什么你不想学习?只想玩?人是如何一步一步废掉的

不知道是不是只有我这样子,还是你们也有过类似的经历。 上学的时候总有很多光辉历史,学年名列前茅,或者单科目大佬,但是虽然慢慢地长大了,你开始懈怠了,开始废掉了。。。 什么?你说不知道具体的情况是怎么样的? 我来告诉你: 你常常潜意识里或者心理觉得,自己真正的生活或者奋斗还没有开始。总是幻想着自己还拥有大把时间,还有无限的可能,自己还能逆风翻盘,只不是自己还没开始罢了,自己以后肯定会变得特别厉害...

什么时候跳槽,为什么离职,你想好了么?

都是出来打工的,多为自己着想

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

当HR压你价,说你只值7K,你该怎么回答?

当HR压你价,说你只值7K时,你可以流畅地回答,记住,是流畅,不能犹豫。 礼貌地说:“7K是吗?了解了。嗯~其实我对贵司的面试官印象很好。只不过,现在我的手头上已经有一份11K的offer。来面试,主要也是自己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈的同时,从公司兴趣,公司职员印象上,都给予对方正面的肯定,既能提升HR的好感度,又能让谈判气氛融洽,为后面的发挥留足空间。...

面试阿里p7,被按在地上摩擦,鬼知道我经历了什么?

面试阿里p7被问到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么逻辑关系?条件判断在什么时候执...

你期望月薪4万,出门右拐,不送,这几个点,你也就是个初级的水平

先来看几个问题通过注解的方式注入依赖对象,介绍一下你知道的几种方式@Autowired和@Resource有何区别说一下@Autowired查找候选者的...

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

程序员垃圾简历长什么样?

已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪,三天收到两百多封简历。 花光了两个星期的所有空闲时...

立即提问
相关内容推荐