mybatis
以勒先生
一个自发简简单单学习的汉子
展开
-
mybatis中的动态sql拼接
在进行动态sql之前,先说一个在实际开发中用户的id一般都是无序的,比如使用UUID的随机生成,下面写一个。public class UUIDGenerate { public static String getIdByUUID(){ return UUID.randomUUID().toString().replaceAll("-",""); }}众所周知我们在开发中会遇到一种拼接的问题,比如搜索框这种,用户选择不用的标签进行查询等等,我们经常碰到的问题就是原创 2020-06-20 23:58:58 · 3019 阅读 · 0 评论 -
关于在一对多中使用嵌套查询的问题
延续上一个博文public interface TeacherMapper { Teacher getTeacherById(@Param("id") int id); Teacher getTeacherById1(@Param("id") int id);} <select id="getTeacherById1" resultMap="TeacherStu"> select * from teacher where id=#{id};原创 2020-06-20 23:32:50 · 259 阅读 · 0 评论 -
mybatis复杂环境处理:多对一and一对多
用一个案例来进行学习:即老师和学生,多个学生关联一个老师,一个老师有多个学生,即多对一,一对多。先来看多对一@NoArgsConstructor@AllArgsConstructor@Datapublic class Student { private Integer id; private String name; private Teacher teacher;}本来按着数据库一张表对应一个pojo的话,这里第三个属性应该是一个tid,但这里用的是一个teach原创 2020-06-20 23:11:01 · 111 阅读 · 0 评论 -
mybatis的缓存机制
声明:这个图是借狂神的图。mybatis中的缓存是分一级缓存和二级缓存,即会话缓存和全局缓存,查询的时候是先看二级缓存有没有,二级缓存没有查一级缓存,一级缓存没有查数据库,然后查出来的数据再次放入一级缓存中,如此一级缓存中就有了。...原创 2020-06-20 16:55:38 · 118 阅读 · 0 评论 -
mybatis中的一级缓存和二级缓存
缓存的出现目的就是减少于数据库之间频繁的连接操作,当数据成千上万的时候这样的操作会极大的浪费时间,所以缓存的出现解决了这个问题。mybatis中有一级缓存和二级缓存,一级缓存就是本地的会话缓存,其是自动开启的,它存在于一个sqlSession的运行中,即当sqlSession.close()时就结束了。mybatis的核心配置文件,可以看到我们开起了日志配置<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration原创 2020-06-20 16:40:46 · 1139 阅读 · 0 评论 -
关于mybatis中#{}和 ${}的区别
这就相当于jdbc中普通的那个执行语句变成了preparement这种预编译,可以防止sql注入那种原创 2020-06-18 23:07:16 · 126 阅读 · 0 评论 -
mybatis中的注解开发
官方推荐的是对于mybatis中的开发一般建议的是使用xml的开发,注解也是可以,毕竟使用xml的一般都可以用注解,但是mybatis的注解开发只能是一些简单的sql,面对一些较为复杂的sql语句时就有些力不从心。比如我们在进行匹配数据库column名和类的属性名的时候,使用的xml中的resultMap注解中是不可能的。但是一些简单的还是可以的。<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration原创 2020-06-18 23:02:07 · 120 阅读 · 0 评论 -
mybatis中的分页操作
其实mybatis中实现这样的操作一共有两种,一种是sql上进行操作,另一种是sql不变,通过sqlSession的这个方法进行操作,重点是那个RowBounds。我们只谈sql上的操作public interface UserMapper { User getUserById(int id); List<User> getUserByLimit(Map<String,Integer> map);} <resultMap id="UserMap" t原创 2020-06-18 17:51:12 · 193 阅读 · 0 评论 -
mybatis中日志的相关配置操作
mybatis有自带的日志工厂,其中我们暂时需要知道的有两个:STDOUT_LOGGING和LOG4JSTDOUT_LOGGING是属于比较标准的那种,打开的方式也是比较简单的在mybatis-config.xml中配置settings标签(注意settings标签的位置位于properties和typeAliases之间) <settings> <setting name="logImpl" value="STDOUT_LOGGING"/> </se原创 2020-06-18 17:43:30 · 268 阅读 · 0 评论 -
Mybatis执行时的一些流程
sqlSessionFactoryBuilder相当于局部变量,它一创建sqlSessionFactory就没了,生命就是如此短暂且绚丽。sqlSessionFactory相当于(你可以把它想象为)数据库连接池,在程序运行期间一直存在。建议使用单例模式或者静态单例模式。sqlSession(线程不安全的):相当于连接到连接池的一个请求,所以既然是请求记得开启、关闭。...原创 2020-06-18 17:31:36 · 66 阅读 · 0 评论 -
mybatis中关于数据库中的字段名与pojo中的属性名不同的解决关系
比如说有一个user表和一个User类,两者一一映射,user表中有一个字段为pwd,User类中有一个属性为password,如果在这样的情况下在mybatis 中运行,最后得到的User对象其中的password=null,这就是因为数据库字段不匹配的原因,如何解决?在mapper.xml中select等标签有一个属性叫做resultMap,可以进行名字之间的一个映射,参照下方代码,但是这只适合于简单的。<mapper namespace="com.li.dao.UserMapper">原创 2020-06-18 17:31:05 · 871 阅读 · 0 评论 -
mybatis中配置文件中的其他标签
<properties resource="db.properties"/>要强调的是第一:它可以是自闭和的,也可以用<property>往其中加入自己想加入的值第二:就是这个resource,它导入了一个我们自己编写的properties文件,如下driver=com.mysql.jdbc.Driverurl=jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC&useSSL=true&useUni原创 2020-06-17 21:55:28 · 115 阅读 · 0 评论 -
关于mybatis的搭建及CRUD
使用mybatis自然也是需要一套流程,比如使用spring的话你会考虑用xml配置还是注解什么的,mybatis也是如此,我们暂且是先用xml。这个过程也是比较简单的,先导入mybatis和mysql的依赖,随后编写mybatis-config.xml(说好了先试试xml的),如下<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Con原创 2020-06-16 22:58:17 · 79 阅读 · 0 评论 -
使用mybatis碰到ExceptionInInitializerError
一定记得在pom中加入以下代码 <build> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.properties</include>原创 2020-06-16 22:12:04 · 955 阅读 · 1 评论