
mybatis
文章平均质量分 55
大力pig
这个作者很懒,什么都没留下…
展开
-
mybatis plus常用注解
@TableName在实体对象内加入此注解可以避免实体对象名称和表名不是完全一致情况 如在User实体类中添加 @TableName("t_user")@TableId在实体类对象内属性对应的字段可以指定主键,不需要在使用简单的id@Tabled注解中的vaule属性可以和@Tabled注解一起使用, 如数据库字段是uid, mybatis plus的查询方法是selectById, 此时实体类里的属性是id, 则可以在该属性上加入@Tabled("vaule = "uid")@Tabled注解中的type原创 2022-12-03 16:04:24 · 393 阅读 · 0 评论 -
mybatis的逆向工程
正向工程: 先创建Java实体类, 由框架负责实体类生成数据表。Hibernate支持正向工程。逆向工程: 先创建数据库表, 由框架负责根据数据库表,反向生成如下工程: 1. Java实体类 2. Mapper接口 3. Mapper映射文件1. 新建maybatis_mbg工程新建工程,引入依赖。 <packaging>jar</packaging> <dependencies>...原创 2022-05-22 20:12:29 · 554 阅读 · 0 评论 -
mybatis的缓存3: 二级缓存层级整合第三方缓存EHCache
mybatis是一个持久层框架,缓存的功能和使用也是有限的。我们可以结合一个第三方缓存EHCache来使用。目录1. EHCache依赖2. 各个jar的功能3. 创建EHCache的配置文件ehcache.xml4. 在mapper映射文件中开启缓存5. 加入logback日志功能1. EHCache依赖<!-- mybatis 和 ehcache整合包--> <dependency> <...原创 2022-05-22 14:34:20 · 223 阅读 · 0 评论 -
mybatis的缓存2: 二级缓存
0. 概念, 介绍二级缓存是SqlsessionFactory级别, 通过一个sqlsessionfactory创建的sqlsession查询结果会被缓存, 下次查询相同的数据, 就会从缓存中直接获取,不会从数据库直接访问。二级缓存开启的条件:1. 在核心配置文件中, 设置全局变量属性cacheEnabled = "true", 默认为true, 不需要设置。2. 在mapper映射文件中设置标签 <cache/>3. 二级缓存必须在sqlsession关闭或提交之后有效原创 2022-05-22 10:49:32 · 351 阅读 · 0 评论 -
mybatis的缓存1: 一级缓存
缓存是值,本次查询过的数据,下一次如果查询到一样的,可以将它先缓存起来,这样mybatis不需要每次去查询。注意: 一级缓存是默认开启一级缓存是Sqlsession级别的,通过同一个Sqlsession查询的数据会被缓存。此后若查询相同的数据,则会从缓存中直接获取。一级缓存失效的四个情况:1. 不同的Sqlsession对应不同的一级缓存。2. 同一个sqlsession但是查询条件不同。3. 同一个sqlsession再次查询期间执行了一次增删改操作。4. 同一个sqlses原创 2022-05-21 20:48:58 · 628 阅读 · 0 评论 -
mybatis动态SQL多条件查询6 - sql columns标签, sql判断
sql columns标签可以将我们常用的sql做一个记录, 我们需要用的时候可以直接引入到要用的地方。举例子,我们查询时候经常需要用到某三个字段,并不需要所有字段。此刻我们可以通过sql columns解决。定义sql片段 + 引用sql判断目录1.mapper映射文件1.1 sql 标签1.2 include refid标签2. 测试结果1.mapper映射文件这里就提一下mapper映射文件怎么书写就可以了,其他的可以参考之前的文章。1.1 sql 标签原创 2022-05-12 20:44:16 · 624 阅读 · 0 评论 -
mybatis动态SQL多条件查询5 - foreach标签
可以实现批量删除,批量添加。后续在更新本文,暂作记录。原创 2022-05-12 20:23:30 · 524 阅读 · 0 评论 -
mybatis动态SQL多条件查询4 - choose, when, otherwise标签
choose, when, otherwise标签是配套使用的标签。它就像我们java代码的if, else if, else.唯一不同的是,when 和otherwise是在choose标签下使用。when至少要有一个,otherwise最多只有一个。目录1.定义接口2. 定义mapper映射文件3. 定义测试方法4. 测试结果5. 引伸:无参时候5.1 结果1.定义接口 /** * 测试choose, when, otherwise原创 2022-05-12 20:17:57 · 5070 阅读 · 0 评论 -
mybatis框架搭建步骤1
今天我们会学习在IDEA环境中如何搭建mybatis框架。1.环境属性Jdk: 1.8.0_202IDEA : 2021.02.03Mysql: 8.0.282.新建工程新建git工程,下载工程到本地,复制链接。IDEA导入工程。克隆工程到本地环境3.引入依赖我们需要引入如下依赖:1. mybatis2. mysql - connector- java : 连接mysql数据库使用,版本需要与数据库对应最好。3. junit 单元测试框架,做ass.原创 2022-05-10 05:51:28 · 497 阅读 · 0 评论 -
mybatis动态SQL多条件查询3 - trim标签
上一节我们介绍的where标签可以帮助我们去掉标签前多余的and或者or,但是不能去掉标签后的and/or, 本节我们介绍的trim标签可以帮助我们解决这个问题。目录1.trim标签属性介绍2. mapper接口不变3. mapper映射文件4. 参数有内容时4.1 测试结果5. 参数无内容时5.1 测试结果1.trim标签属性介绍trim标签属性 prefix 将trim标签前添加指定内容 prefixOverrides 将trim标签前去掉.原创 2022-05-08 15:18:05 · 920 阅读 · 0 评论 -
mybatis动态SQL多条件查询2 - where 标签
上一章我们介绍了if标签,用恒成立where 1=1,可以解决where之后参数没设置或者所有参数都没设置的情况。但是这样会造成where关键字的浪费,本节我们将介绍where标签。目录1.mapper接口不变2.mapper映射文件3.不传入参数3.1 测试结果4. 传入参数4.1 测试结果5. 总结1.mapper接口不变mapper接口不变,和上一章介绍的if标签中是一样的。如果不会新建文件可以查看上一章if标签的介绍。 /** * 多原创 2022-05-08 14:30:42 · 3386 阅读 · 0 评论 -
mybatis动态SQL多条件查询1 - if 标签
Mybatis框架的动态SQL技术是一种根据特定条件动态拼接SQL语句的过程。它的存在是为了解决拼接SQL语句字符串的痛点问题。创建新的Mapper接口和新的mapper映射文件。目录1.创建DynamicSqlMapper接口2.创建DynamicSqlMapper映射文件3.测试类4.测试结果5. 引伸 : 其中一样传入信息不符合5.1 and后的参数不提供5.1.1运行效果5.2 where后的参数不提供5.2.1 运行效果5.2.2 解决方法6. 总.原创 2022-05-08 11:40:50 · 1638 阅读 · 0 评论 -
mybatis处理一对多映射关系2- 通过分步查询
mysql数据库员工和部门关系表可以参照上一章mybatis处理一对多映射关系1- 通过collectionhttps://blog.youkuaiyun.com/m0_53753920/article/details/124616689?spm=1001.2014.3001.5501本节我们在这种一对多的关系下会继续学习通过分布查询解决一对多映射关系。目录1. Mapper接口设计2. Mapper映射文件3.测试文件4.测试结果5. 引伸 : 访问哪些信息,才会执行哪些信息5.1 .原创 2022-05-07 15:32:23 · 583 阅读 · 1 评论 -
mybatis处理一对多映射关系1- 通过collection
本节我们将介绍如何在实体类处理一对多的关系。目录1. mysql数据库关系结构2. 修改Dept实体类3.接口3. mapper映射文件4. 测试类5. 测试结果1. mysql数据库关系结构某个部门对应多个员工信息。如: A部门 也就是我们标题的一, 张三和赵六,也就是我们标题的多。2. 修改Dept实体类Dept实体类需要添加“多”的信息,也就是emp员工信息。我们对应多个员工,则需要通过集合来实现,此处我们用List<emp> e原创 2022-05-06 19:59:03 · 980 阅读 · 0 评论 -
mybatis处理多对一映射关系3- 分步查询和延迟加载
本节我们将学习用sql语句分步查询数据库表信息,顾名思义。分步骤,多步查询。目录1.mapper接口2.mapper映射文件2.1 emp映射文件2.2 Dept映射文件3.测试类4.结果5.原理6.总结1.mapper接口emp mapper此处是emp mapper接口,第一个sql的接口设置。 /** * 通过分步查询, 查询员工及员工对应的部门信息 * 分步查询第一步, 查询员工信息 * 不需要两表联查原创 2022-05-04 20:10:23 · 426 阅读 · 0 评论 -
mybatis处理多对一映射关系2- 通过association添加属性信息
其他信息不需要改变,可以参考上一篇文章,仅改变Mapper信息如下。mybatis处理多对一映射关系1 - 通过联级属性赋值解决多对一映射关系https://blog.youkuaiyun.com/m0_53753920/article/details/124569195?spm=1001.2014.3001.5501目录1.Mapper映射文件信息1.1改变resultMap的映射类型1.2 resultMap添加association实现细节1.Mapper映射文件信息1.1改变re原创 2022-05-04 19:22:58 · 334 阅读 · 0 评论 -
mybatis处理多对一映射关系1 - 通过联级属性赋值解决多对一映射关系
1.数据库关系SELECT * FROM mybaits.t_emp;SELECT * FROM mybaits.t_dept;2.POJO实体类添加Dept信息定义dept属性,get set方法,重写tostring方法package com.mybatis.pojo;public class Emp { private Integer eid; private String empName; private Integer age;.原创 2022-05-04 13:32:52 · 359 阅读 · 0 评论 -
mybatis解决字段和属性的映射关系3 - 通过resultMap设置自定义映射关系
本节我们将探索mybatis解决字段和属性的映射关系3 - 通过resultMap设置自定义映射关系目录1.接口和pojo实体类2.mapper映射文件2.1 resultMap2.2 resultMap细节3. 取消mybatis设置的mapUnderscoreToCamelCase4.测试类5.结果6. 总结1.接口和pojo实体类不变,这个可以参考前面的文章2.mapper映射文件2.1 resultMap这里不再是result type原创 2022-05-03 21:42:22 · 1149 阅读 · 0 评论 -
mybatis解决字段和属性的映射关系2 - 配置mapUnderscoreToCameCase
mybatis解决字段名和属性名的映射关系1 - 通过字段别名https://blog.youkuaiyun.com/m0_53753920/article/details/124367015上一节我们学到,如果字段名字是emp_name, 而对象的名字是empName, 我们可以通过字段别名去解决。但如果我们的字段非常多,这样的方式就显得不是那么灵活。本节我们将学习通过配置mapUnderscoreToCameCase去批量解决。目录1.设置mybatis-config.xml文件2. mapper映原创 2022-04-29 09:40:42 · 1318 阅读 · 2 评论 -
mybatis解决字段名和属性名的映射关系1 - 通过字段别名
目录0.前言0.1 带有下划线的数据库字段名0.2 对应实体类1. 接口2. mapper文件2.1错误示范2.1.1 错误mapper文件2.1.2 错误结果2.2 如何去做正确的映射文件3.测试类4.结果0.前言数据库字段名有下划线如何匹配pojo实体类属性,如emp_name数据库字段如何映射属性名empName.0.1 带有下划线的数据库字段名0.2 对应实体类 private Integer eid; ...原创 2022-04-23 21:31:54 · 2099 阅读 · 1 评论 -
mybatis动态设置表名 - 数据水平切分
思路当遇到大数据量的时候,一张表水平切分,分成多张表来共同存储这种数据。那么此时我们就需要动态来设置这个表名。此处只能用${}传参。目录思路1.接口2.Mapper映射文件3.测试类4.结果1.接口/** * 查询指定表中的数据 */ List<User> getUserByTableName(@Param("tableName") String tableName);2.Mapper映射文件 <!--原创 2022-04-20 21:27:42 · 592 阅读 · 0 评论 -
mybatis各种查询功能8,9 - 处理模糊sql查询的第二和第三种方式
目录1.前章回顾2. mapper映射文件3.结果1.前章回顾上一章我们介绍了使用${}处理模糊查询文章=》mybatis各种查询功能7 - 处理模糊sql查询的两种方式https://blog.youkuaiyun.com/m0_53753920/article/details/124259040本章我们会介绍使用#{}处理模糊查询。其他的方式可以参考上一篇文章,在本篇我们只提及不同之处。 就是mapper映射文件。2. mapper映射文件<select id="getU原创 2022-04-18 21:22:13 · 435 阅读 · 2 评论 -
mybatis各种查询功能7 - 处理模糊sql查询的两种方式
知识回顾: #{}是使用占位符赋值, 自动加单引号。${}是使用字符串拼接,手动加单引号。特色模糊查询中,#{}也可能有一些问题。如1.模糊查询1.接口 /** * 根据用户名模糊查询用户信息 */ List<User> getUserByLike(@Param("username") String name);2.mapper文件 /** * 根据用户名模糊查询用户信息 */ List<U原创 2022-04-18 21:11:55 · 253 阅读 · 0 评论 -
mybatis各种查询功能6 - 查询所有数据并返回map集合
目录1.接口2.mapper映射文件3.测试类4. 结果1.接口加入mapKey, 作为map的主键 @MapKey("id") Map<String, Object> getAllUserToMap();2.mapper映射文件 <select id="getAllUserToMap" resultType="Map"> select * from t_user </select>.原创 2022-04-18 20:28:26 · 716 阅读 · 0 评论 -
mybatis各种查询功能5 - 查询所有数据并返回多个map集合
上篇文章我们学习了mybatis查询单个信息并且,返回单个map集合。文章=》mybatis各种查询功能4 - 查询以及返回map集合如果我们需要返回所有信息的map集合应该怎么做呢?keep moving forward, 实践和学习会带给我们真知。1.如何写接口 /** * 查询所有用户信息为Map集合 */ List<Map<String, Object>> getAllUserToMap();2.mapper映射文件.原创 2022-04-16 17:48:44 · 1362 阅读 · 0 评论 -
mybatis各种查询功能4 - 查询以及返回单个map集合
本章我们会介绍如何通过mybatis的查询功能来返回一个map集合,心向往之,mybatis手到擒来~~~~~目录1.接口类2.mapper映射文件3.测试类4.结果4.1本次测试结果4.2mysql数据库结果1.接口类 /** * 根据id查询用户信息为一个map */ Map<String, Object> getUserByIdToMap(@Param("id") Integer id);2.mapper映射.原创 2022-04-16 16:32:43 · 2616 阅读 · 0 评论 -
mybatis默认类型别名
本篇文章我们介绍一下mybatis的类型别名 Alias. Java类型 Alias别名 java.lang.Integer Integer, integer int _int, _integer Map map String string ...原创 2022-04-16 11:21:10 · 567 阅读 · 0 评论 -
mybatis的各种查询情况3 - 查询信息总量 count(*)以及返回总量
前面介绍了mybatis的各种查询情况的两种,接下去我们来看看其他的查询吧~~~~~本节中返回对象有新知识点,让我们一起提高吧。gogogo!!!目录1.接口部分2.mapper映射文件部分2.1大纲碎碎念2.2 resultType返回类型3.测试类4.结果4.1测试类结果4.2数据库验证5.结论1.接口部分接口部分用Integer或者int类型都是可以的,返回一个整数。 /** * 查询用户信息总记录数 */原创 2022-04-16 10:50:55 · 13513 阅读 · 0 评论 -
mybatis的各种查询情况2 - 查询所有信息
直接上图。世界上本没有路,走得人多了便有了。嗷呜!~~~~~~~~~目录1.接口类2.mapper映射文件3.测试类4.结果5.结论1.接口类 /** * 查询多个用户信息 */ List<User> getAllUsers();2.mapper映射文件 <!-- List<User> getUsers();--> <select id="getAllUsers原创 2022-04-14 20:39:01 · 481 阅读 · 0 评论 -
mybatis的各种查询情况1 - 通过动态传入id查询单条用户信息
之前介绍了mybatis的各种传参方式,今天我们来看看mybatis的各种查询情况。1.接口类(如何定义接口) /** *根据id查询用户信息 */ User getUserById(@Param("id") Integer id);2.mapper映射文件<!-- User getUserById(@Param("id") Integer id);--><select id="getUserById" resultType=.原创 2022-04-14 20:20:04 · 485 阅读 · 0 评论 -
mybatis传参4 - 使用@param命名参数
前面介绍的几种传参方式,需要给参数拟定好,你一定会觉得这种方式不是很方便,接下去我们介绍的是用@param注解来命名参数,让我们的参数更加灵活。还是那一句,mybatis虐我千百遍,我待它如初恋。目录1.接口实现2.mapper文件映射3.测试类4.测试结果1.接口实现/** * 验证登录@param使用 */ User checkLoginByParm(@Param("username") String username, @Param("原创 2022-04-14 19:01:18 · 1141 阅读 · 0 评论 -
mybatis传参3 - 传入实体类类型的参数
mybatis传入各种类型参数系列之 让我们传入实体类参数,什么是实体类呢,也就是对象,pojo, model,entities。 它有很多种叫法,不知道有没有你中意的那一种。mybatis虐我千百遍,我待mybatis肯定像初恋,引发的思考, 实体类类型有属性类型。话不多说,见下文。目录1.接口部分(如何写接口)2.mapper映射文件部分3.测试类部分4.执行测试本次结果4.1单元测试结果4.2mysql查询验证5.POJO User实体类对象展示6.结论原创 2022-04-13 21:22:53 · 8685 阅读 · 2 评论 -
mybatis传参2 - 如何动态传参
mybaitis如何实现动态传参呢?我不懂啊,我真的不懂啊,不,你懂的,请看本文,不懂的你也会慢慢变懂的。。。。。mybatis虐我千百遍,我仍然会待它如初恋。目录1.接口部分2.mapper文件部分2.1 $传参2.2 #传参3.测试类实例4.测试本次结果4.1单元测试结果4.2mysql实际结果1.接口部分定义一个验证登录的接口,并且返回实体类的User对象(POJO), 传参为用户名和密码。 /** * 验证登录 *.原创 2022-04-13 20:24:30 · 828 阅读 · 0 评论 -
mybatis传参1 - 传入map类型的参数
mybatis如何传入map类型的参数呢,请参考一下方式。1.接口部分定义一个接口返回User(pojo)类型,传入参数为map /** * 验证登录(参数为map集合) */ User CheckLoginByMap(Map<String, Object> map);2. mapper文件部分mapper文件部分,select id的值为接口名,resultType的类型为对应的实体类pojo <!-- User Che原创 2022-04-13 19:59:44 · 6493 阅读 · 0 评论 -
mybatis打印log4j日志
mybatis中如何添加log4j日志1.添加log4j.properties文件。内容:log4j.rootCategory=DEBUG, CONSOLE# 指定某一个包的日志输出级别log4j.logger.com.mk.mapper=DEGUG# 控制台追加器log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppenderlog4j.appender.CONSOLE.Threshold=DEBUGlog4j.appender原创 2022-04-03 16:02:32 · 1066 阅读 · 0 评论 -
mybatis连接mysql数据库报错SQLException: Access denied for user ‘root‘@‘localhost‘ (using password: YES)解决
mybatis通过jdbc连接mysql数据库,一致报如下错误:org.apache.ibatis.exceptions.PersistenceException: ### Error querying database. Cause: java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)### The error may exist in com/mybatis/mappe原创 2022-04-03 15:15:52 · 3808 阅读 · 5 评论 -
http://mybatis.org/dtd/mybatis-3-config.dtd报红解决
idea中在编辑mybatis-config文件时候,http://mybatis.org/dtd/mybatis-3-config.dtd 报红该如何解决呢?后来发现了解决办法:file->settings-> 如图这样就愉快的解决啦。让我们玩batis小鸟飞呀飞。。。。。...原创 2022-03-31 20:09:12 · 8162 阅读 · 4 评论 -
mybatis 没有结果映射, a query was run and no Result Maps were found for the mapped statement.
mybatis 没有结果映射如何解决:异常报错如下:### Error querying database. Cause: org.apache.ibatis.executor.ExecutorException: A query was run and no Result Maps were found for the Mapped Statement 'com.jin.mapper.UserMapper.getUserById'. It's likely that neither a Re..原创 2022-03-29 18:18:58 · 1694 阅读 · 0 评论 -
No suitable driver found for jdbc:mysql//localhost:3306/mybatis解决方法与思路
最近在学习myBatis,碰到这个问题弄了很久,最后发现是很低级的错误。org.apache.ibatis.exceptions.PersistenceException: ### Error updating database. Cause: java.sql.SQLException: No suitable driver found for jdbc:mysql//localhost:3306/mybatis### The error may exist in Mappers/UserMa原创 2022-03-29 13:52:38 · 3972 阅读 · 0 评论