工作中遇到的各种问题

一、 mybatis批量更新操作报错

错误代码:

<update id="updateBillId" parameterType="java.util.List">
	<foreach collection="list" item="item" index="index" separator=";" open="" close="">
		update tran_jnl
		<set>bill_Id=#{item.billId}
		</set>
		where name=#{item.tranNo}
	</foreach>
</update>

错误原因:xml中不能有;号
修改该后的代码:

<update id="updateBillId" parameterType="java.util.List">
	update tran_jnl set
	bill_id = 
	<foreach collection="list" item="item" index="index" separator="" open="case tran_no" close="end">
		when #{item.tranNo} then #{item.billId}
	</foreach>
	where tran_no in
	<foreach collection="list" item="item" index="index" separator="," open="(" close=")">
	 #{item.tranNo} 
	</foreach>
</update>

二、在springboot项目中实现控制台,文件日志的打印输出:

在pom文件里面添加:

<dependency>
     <groupId>org.projectlombok</groupId>
     <artifactId>lombok</artifactId>
</dependency>
其次再需要输入的类中添加@Slf4j该注解

logback.xml:

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
    <!-- 注意:这要填好自己的项目名 -->
    <property name="projectName" value="agentpay_batchs"/>
    <!-- 注意:日志路径规范统一为 /home/jenkins/logs -->
    <property name="logDir" value="${user.home}/logs"/>
    <!-- 控制保留的归档文件的最大数量,超出数量就删除旧文件。假设设置每天滚动,且 <maxHistory>10,则只保存最近10天的文件,删除之前的旧文件。注意,删除旧文件是,那些为了归档而创建的目录也会被删除。-->
    <property name="maxHistory" value="15"/>
    <!-- 控制保留的归档文件的最大数量,超出数量就删除旧文件(针对error日志)。 -->
    <property name="errorMaxHistory" value="30"/>
    <property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}" />
    <!-- 控制台日志:输出全部日志到控制台 -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level [%logger{36}:%L] - %msg%n</pattern>
        </encoder>
    </appender>

    <!-- 文件日志:输出全部日志到文件 -->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>DENY</onMatch>
            <onMismatch>ACCEPT</onMismatch>
        </filter>
        <file>${logDir}/${projectName}/${projectName}.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${logDir}/${projectName}/${projectName}-%d{yyyy-MM-dd}.zip</fileNamePattern>
            <maxHistory>${maxHistory}</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level [%logger{36}:%L] - %msg%n</pattern>
        </encoder>
    </appender>

    <!-- 错误日志:用于将错误日志输出到独立文件 -->
    <appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <file>${logDir}/${projectName}/${projectName}-error.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${logDir}/${projectName}/${projectName}-error-%d{yyyy-MM-dd}.zip</fileNamePattern>
            <maxHistory>${errorMaxHistory}</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level [%logger{36}:%L] - %msg%n</pattern>
        </encoder>
    </appender>

    <!-- 追踪日志:用于将追踪日志输出到独立文件 -->
    <appender name="TRACE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${logDir}/${projectName}/${projectName}-trace.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${logDir}/${projectName}/${projectName}-trace-%d{yyyy-MM-dd}.zip</fileNamePattern>
            <maxHistory>${maxHistory}</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level [%logger{36}:%L] - %msg%n</pattern>
        </encoder>
    </appender>
    <logger name="org.apache.zookeeper" level="WARN"/>
    <logger name="org.springframework.data.redis" level="WARN"/>
    <logger name="o.a.kafka.common.network.Selector" level="ERROR"/>
    <!--<logger name="com.dianping.cat.log4j.CatAppender"/>-->
    <logger name="WebRequestTraceFilter" level="DEBUG" additivity="false">
        <appender-ref ref="TRACE"/>
    </logger>

    <!-- 日志输出级别 -->
    <root>
        <level value="INFO"/>
        <appender-ref ref="STDOUT"/>
        <appender-ref ref="FILE"/>
        <appender-ref ref="ERROR"/>
    </root>
</configuration>

最后测试就是把项目跑起来看有没有文件输出就行了。
补充):添加sql语句打印:只需在配置文件中添加 具体的dao层级的包:配置文件中yml

logging:
	level:
		root: info
		dao层的包路径: debug

若是properties文件

logging.level.root=info
logging.level.dao层包名路径=debug

三、springboot中配置文件份多种环境如何配置

一个主application文件,在添加application-dec ,application-pro,application-test三种环境的配置文件。主文件中内容:

spring.application.name=模块名 
spring.profile.active=dec/pro/test(三选一)

切记用横杠-不要用下划线_

四、 org.apache.ibatis.session.Configuration.setVfsImpl(Ljava/lang/Class;)V 无此方法。

主要报错是因为pom文件中的依赖

<dependency>
    <groupId>org.apache.ibatis</groupId>
    <artifactId>ibatis-core</artifactId>
    <version>3.0</version>
</dependency>

删除即可,我起初加入这个依赖主要是因为 sql中我需要使用到if标签来判断是否为空 。在dao层参数中加入@Param注解 识别参数。
把依赖换成

<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.4.6</version>
</dependency>

或者不添加依赖的话,字节修改传参的方法 不再单个单个传值,而是放入map中一起传过去。问题解决。

五、No ‘Access-Control-Allow-Origin’ header is present跨域问题。

跨域的问题可以自己去了解一下 什么是同源策略。
问题描述:我前端用ajax发送请求到后台,后台可以接收到前台的值,但是方法执行完后返回知道前端就出现了跨域问题。
解决方法,在response中设置header response.setHeader(“Access-Control-Allow-Origin”,"*").

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值