
mybatis
ACodeBird
一只程序鸟,每天飞高一点点
展开
-
Mybatis-plus自动生成主键id存在的坑
一、问题发现:今天写项目的时候由于需求变化,增加了实体表,创建实体后进行增删改查操作,结果插入数据的时候自动生成的id巨大,大概有这么大125413703487479810,id长度超出数据库表定义的长度,导致数据插不进去,手动插入数据又很正常,排查半天一直找不到问题所在。二、问题解决过程:一开始总根据报错信息说id超出定义的长度去找解决方法,结果都是叫我去修改数据库。后面仔细想了一下,为什么那么多表都没事,单单这个新增的表有问题呢?于是把思路转到Mybatis-plus自动生成主键的方向上,最终证明是正原创 2020-09-04 17:50:46 · 5286 阅读 · 0 评论 -
Mybatis查询一段时间内的数据出现数据缺失问题
问题:时间范围的查询会存在以下问题:1、如果单纯采用年月日的形式会出现缺少最后一点的数据,比如要查询2015-09-16到2015-09-17,那么2015-09-17 01:00:00的数据不会被查询出来。无论是使用between and还是<=/>=的形式去实现都会有这样的问题。解决方法:1、如果是以年月日的形式,那么可以采用动态拼接字符串的形式,最后得到2015-09-16 00:00:00到2015-09-17 23:59:59,如果要更精确可以往毫秒级别加。2、采用加1天的形式转载 2020-08-14 10:36:43 · 1619 阅读 · 0 评论 -
mybatis面试题
什么是mybatis?a) mybatis是一个半ORM框架,内部封装了JDBC,开发时只需要关注SQL语句本身,编写原生态的sql语句,灵活度比较高b) mybatis通过xml文件或者注解的方式将各种statement进行配置,并通过Java对象和statement中的sql的动态参数映射生成最终的sql语句,最后由mybatis矿建执行sql并将记过映射为对象返回mybatis的优缺...原创 2019-10-27 21:57:28 · 295 阅读 · 0 评论 -
mybatis插件的运行原理是什么?如何写一个插件?
一、运行原理1.mybatis可以编写针对Executor、StatementHandler、ParameterHandler、ResultSetHandler四个接口的插件,mybatis使用JDK的动态代理为需要拦截的接口生成代理对象,然后实现接口的拦截方法,所以当执行需要拦截的接口方法时,会进入拦截方法(AOP面向切面编程的思想)二、写一个插件,分三步完成1.编写Intercepror...原创 2019-10-27 21:48:20 · 3009 阅读 · 0 评论 -
mybatis配置log4j在控制台输出sql语句
直接复制下面的代码到log4j.properties文件中即可### direct log messages to stdout ###log4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.Target=System.outlog4j.appender.stdout.layout=org.ap...原创 2019-10-27 21:11:48 · 209 阅读 · 0 评论 -
mybatis的运行原理
1.SqlSessionFactory的创建1.1.获取配置文件流,通过SqlSessionFactoryBuilder的build方法返回一个SqlSessionFactory1.2.build会创建一个XPathParser解析器去解析配置文件1.3.XPathParser解析器将解析的内容设置到Configuration对象中1.4.接着创建一个mapper的解析器去解析mapper...原创 2019-10-27 17:27:02 · 218 阅读 · 0 评论 -
spring整合mybatis数据源报错datasource:java.lang.NoClassDefFoundError
如果觉得哪里都没问题,那么可能你缺少依赖包,检查是否有<!-- spring-jdbc支持 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <vers...原创 2019-08-31 16:00:32 · 379 阅读 · 0 评论 -
mybatis之generator简单入门
一、generator简介MyBatis Generator(MBG)是MyBatis MyBatis 和iBATIS的代码生成器。它将为所有版本的MyBatis以及版本2.2.0之后的iBATIS版本生成代码。它将内省数据库表(或许多表),并将生成可用于访问表的工件。这减少了设置对象和配置文件以与数据库表交互的初始麻烦。MBG寻求对简单CRUD(创建,检索,更新,删除)的大部分数据库操作产生重...原创 2019-08-31 13:44:33 · 647 阅读 · 0 评论 -
mybatis使用foreach遍历list集合或者array数组
一、准备工作1.db.properties文件(记得修改自己的数据库和用户名、密码)dataSource.driver=com.mysql.jdbc.DriverdataSource.url=jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf8dataSource.username=bl...原创 2019-08-30 17:41:28 · 20164 阅读 · 0 评论 -
Mybatis 关联关系的概述(一对一,一对多,多对多)
1.简介2.一对一代码演示首先创建测试用的mysql数据库use mybatis;create table tb_idcard( id int primary key auto_increment, CODE varchar(18));insert into tb_idcard(CODE)values(‘152456985247’);insert i...转载 2019-08-30 16:21:57 · 434 阅读 · 0 评论 -
mybatis手动封装查询结果
一、有些时候,我们类的属性名并不能与数据库中的列名一一对应,这时候可以使用resultMap接收查询结果,手动封装属性与列的映射关系二、先看没有手动封装时的查询结果(即使用resultType接收查询数据):bean类,其中的属性名c_country与数据库列country不能完全对应public class Country { private Integer cid;//数据库中是cid...原创 2019-08-29 16:57:24 · 1245 阅读 · 0 评论 -
mybatis引入mapper映射文件的4种方法
一、绝对路径引入(不推荐使用) <!-- 1.绝对路径引入 --> <mapper url="file:\\\D:\sts-bundle\workplace\mybatis_demo\src\main\resources\mapper\UserMapper.xml"/> 二、相对路径引入<!-- 引入mapper映射文件 --> <map...原创 2019-08-29 16:19:29 · 9735 阅读 · 2 评论 -
mybatis动态代理mapper开发
一、主配置文件<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration>...原创 2019-08-29 15:31:13 · 229 阅读 · 1 评论 -
mybatis动态拼接update条件
一、mapper.xml文件可以使用set标签或者trim标签实现,set会自动删除多余逗号,trim可以使用suffixOverrides自定义多余的逗号,prefix指定set以及都表示upadte语句中的set,所以不要重复写set<update id="updateUser" parameterType="com.mybatis_demo.domain.User"> up...原创 2019-08-29 15:26:04 · 4983 阅读 · 1 评论 -
mybatis多参数查询
一、利用map封装多个参数xxxmapper.xml的查询语句(直接用占位符#{key},key就是map的key)<select id="selectByMap" parameterType="hashmap" resultType="com.mybatis_demo.domain.User"> select * from t_user where uname like con...原创 2019-08-29 12:59:44 · 1856 阅读 · 0 评论 -
关于mybatis插入数据到数据库成功,数据库却没有数据
一、查看主配置文件mybatis-config.xml是否开启事务管理,图片红色方框内就是开启事务管理二、查看插入操作是否有commit操作,如果开启事务没有commit是不会插到数据库的...原创 2019-08-28 18:00:47 · 13528 阅读 · 8 评论 -
关于mybatis模糊查询语句的两种写法
一、使用${value},这是字符串拼接符,value是固定写法。缺点:容易发生sql注入,所以不建议使用select * from t_user where uname like '%${value}%'二、使用#{uname}占位符,其中uname是随便命名的,建议与查询字段相同,容易理解select * from t_user where uname like concat('%'...原创 2019-08-28 17:33:10 · 1030 阅读 · 0 评论