Java开发常见问题汇总一

1、mybatis.type-aliases-package的作用

指定实体类所在的位置,在mapper.xml映射文件中不需要写出实体类的完整路径,只需要写出类名即可。

2、spring boot启动就关闭的原因

需要加入以下依赖。

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
</dependency>

3、application.properties和application.yml的区别

        (1)主要是内容格式的区别和优先级不同,properties文件后加载,会覆盖yml。(2)properties和yml均可以有多,以便进行不同环境的配置。

4、mybatis中$和#区别

        (1)#传入的参数在SQL中显示为字符串,$传入的参数在SqL中直接显示为传入的值.

        (2)#方式能够很大程度防止sql注入,$方式无法防止Sql注入;

5、springboot遇到定时任务@Scheduled不启动解决方案

        在service上添加如下注解

@Component
@EnableScheduling

6、IDEA添加getter、setter方法的快捷键

        IDEA 中添加 getter、setter 方法的快捷键 快捷键:Alt + insert

7、MyBatis使用大于等于之类的时候需要转义

        比如<=,就是&lt;=

8、MyBatis批量插入

        注意需要在spring.datasource.url添加allowMultiQueries=true

<insert id="insertForeach" parameterType="java.util.List" useGeneratedKeys="false">
        insert into user
        ( user_name,create_time)
        values
        <foreach collection="list" item="item" index="index" separator=",">
            (
            #{item.userName},
            #{item.createTime}
            )
        </foreach>
    </insert>

9、Java 中 Service 层和 DAO 层有必要每个类都加上接口吗?

        忘记从哪里看到的,喜欢这个人的说法,如果一个项目需要多实现,则推荐使用接口。否则不需要使用接口。

10、mysql清理表,并恢复主键

truncate table 表名

11、Invalid bound statement (not found)出现原因和解决方法

        1.mapper.xml中的namespace和实际的mapper文件不一致
        2.mapper接口中的方法名和mapper.xml中的id标签不一致
        3.上两步的问题都没有,可能是没有构建进去,打开target看看对应的mapper.xml文件在不在,如果不再请在检查pom.xml文件中是否配置了resource,确保pom.xml的中配置了resource,然后清理项目,重启idea,应该就ok了。

12、windows下修改mysql的max_allowed_packet

        1、首先找到配置文件位置,如果不再C:\ProgramData\MySQL\MySQL Server 5.7\my.ini这个位置,可以在服务中查看其位置。

         2、找到后配置文件后,打开找到max_allowed_packet修改,为你想要指定的大小。

# The maximum size of one packet or any generated or intermediate string, or any parameter sent by the
# mysql_stmt_send_long_data() C API function.
max_allowed_packet=400M

13、设置数据库的时区

        下面连接字符串中黑体就是设置时区,如果是UTC,插入数据库时会和我们差8个小时(即使java中的时间是正确的)。

spring.datasource.url=jdbc:mysql://127.0.0.1:3306/world?&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true

14、Mybatis中实现批量更新的几种姿势

Mybatis中实现批量更新的几种姿势,总有一款适合你 - 知乎Mybatis中实现批量更新的几种姿势,总有一款适合你一、概述mybatis中实现批量插入是很简单的,相比大家都知道,这里就不赘述,本文主要讲述如何实现批量更新。 下面介绍本文要讲的几种方式主要是在xml中实现, 不…https://zhuanlan.zhihu.com/p/135839992

15、Mybatis批量查询

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.home.skydance.dao.UserMapper">
    <resultMap id="BaseResultMap" type="com.home.skydance.entity.User">
        <id column="id" jdbcType="INTEGER" property="id" />
        <result column="user_name" jdbcType="VARCHAR" property="userName" />
        <result column="user_flag" jdbcType="SMALLINT" property="userFlag" />
        <result column="create_time" jdbcType="DATE" property="createTime" />
        <result column="action_flag" jdbcType="SMALLINT" property="actionFlag" />
        <result column="svd_value" jdbcType="INTEGER" property="svdValue" />
        <result column="thread_no" jdbcType="VARCHAR" property="threadNo" />
        <result column="update_time" jdbcType="DATE" property="updateTime" />
    </resultMap>


    <select id="selectByDateTime" parameterType="map" resultMap="BaseResultMap">
        select * from user where create_time &lt;= #{time} limit #{start},#{limit}
    </select>

</mapper>

猜你喜欢

转载自blog.csdn.net/bashendixie5/article/details/124647769