Mybatis
文章平均质量分 81
忆亦何为
这个作者很懒,什么都没留下…
展开
-
Mybatis集成日志组件,logback日志框架
其中STDOUT_LOGGING是标准日志,mybatis已经实现了这种标准日志。logback将在类的根路径下自动查找logback-test.xml这个文件,找不到会找logback.xml。这个配置文件的名字必须叫做:logback.xml或者logback-test.xml,不能是其它的名字。可以不用在mybatis-config.xml文件中使用settings标签进行配置开启。(沙拉风:日志门面。第二步:引入logback所必须的xml配置文件。主要配置日志输出相关的级别以及日志具体的格式。原创 2022-10-20 15:02:04 · 893 阅读 · 0 评论 -
Mybatis工具类
我们可以在获取SqlSession前面的步骤进行封装,使代码更加简洁。我们发现没有工具类的时候编写Mybatis的代码很多都是一样的步骤。这里使用到了Junit进行测试,也可以编写main方法进行测试。这样编写以上代码就会变成这样,代码少了而且更加具有可读性。SqlSessionUtil工具类。原创 2022-10-20 15:40:25 · 476 阅读 · 0 评论 -
(十五)MyBatis的注解式开发
已完结Mybatis中也提供了注解式开发方式,采⽤注解可以减少Sql映射文件的配置。当然,使用注解式开发的话,sql语句是写在java程序中的,这种方式也会给sql语句的维护带来成本。官方是这么说的:使用注解来映射简单语句会使代码显得更加简洁,但对于稍微复杂⼀点的语句,Java 注解不仅力不从心,还会让你本就复杂的 SQL 语句更加混乱不堪。因此,如果你需要做⼀些很复杂的操作,最好用 XML 来映射语句。原则:简单sql可以注解。复杂sql使用xml。原创 2022-11-10 20:06:25 · 385 阅读 · 0 评论 -
(十四)MyBatis的分页与PageHelper插件
引入配置文件:jdbc.properties、mybatis-config.xml、logback.xml。获取数据不难,难的是获取分页相关的数据比较难。假设已知页码pageNum,还有每页显示的记录条数pageSize,那么参数一就可以动态获取。引⼊依赖:mysql驱动依赖、mybatis依赖、logback依赖、junit依赖。第⼆步:在mybatis-config.xml文件中配置插件。参数一:起始下标,默认下标从0开始(startIndex)参数二:显示的记录条数(pageSize)原创 2022-11-09 14:13:39 · 545 阅读 · 0 评论 -
(十三)MyBatis的逆向工程
所谓的逆向工程是:根据数据库表逆向生成Java的pojo类,SqlMapper.xml文件,以及Mapper接口类等。要完成这个工作,需要借助别人写好的逆向工程插件。使用这个插件的话,需要给这个插件配置哪些信息?原创 2022-11-08 20:02:16 · 628 阅读 · 0 评论 -
(十二)Mybatis的缓存机制
Mybatis的缓存:将select语句的查询结果放到缓存(内存)当中,下⼀次还是这条select语句的话,直接从缓存中取,不再查数据库。true:多条相同的sql语句执⾏之后返回的对象是共享的同⼀个。或者集成其它第三方的缓存:比如EhCache【Java语⾔开发的】、Memcache【C语⾔开发的】等。false:多条相同的sql语句执⾏之后返回的对象是副本,调⽤了clone⽅法。eviction属性:表示指定从缓存中移除某个对象的淘汰算法。size属性:设置二级缓存中最多可存储的java对象数量。原创 2022-11-07 16:02:26 · 631 阅读 · 0 评论 -
(十一)MyBatis的高级映射及延迟加载
当然这里也可以拆成两步,通过第一步传过来的订单id查询出商品id,再传给第三步进行商品查询,把一条sql语句拆成两条,但是这种方式需要创建一个关系表的pojo类,以及对应的接口和映射文件,比较麻烦,最重要的是查询出来的关系表的数据在这个业务里面基本没用,不会去用,比较鸡肋。多对多关系,可以拆成两个一对多关系,也可以拆成两个多对一关系,就可以使用上面的方式进行处理,这里只演示订单到商品的多对多关系的分布查询,也就是拆成两个一对多,进行分布查询,其他自己推就可以了。同样,人与身份证也是一对一的级联关系。原创 2022-11-06 19:41:58 · 994 阅读 · 0 评论 -
(十)Mybatis之动态SQL
有些业务的SQL语句也要进行动态拼接例如批量删除delete from t_car where id in(1 , 2 , 3 , 4 , 5 , 6 , . . . . . . 这里是动态的,根据用户选择的id,值就不同);又例如多条件查询select * from t_car where 条件 1 and 条件 2 and 条件n . . . . .;一般在SQL映射文件,我们是把SQL语句写死的,要想完成这些功能业务,就需要学习动态SQL。原创 2022-11-05 15:45:21 · 662 阅读 · 0 评论 -
(九)MyBatis查询语句的返回值类型
结果,发生异常,原因是Mybatis进行自动类型推断,发现你设置的返回值是单个的实体类就执行selectOne方法,然后发现最终返回结果是多条,就引发了异常。当返回的数据,没有合适的实体类对应的话,可以采用Map集合接收。引⼊依赖:mysql驱动依赖、mybatis依赖、logback依赖、junit依赖。当查询的记录条数是多条的时候,必须使⽤集合接收。查询结果条数大于等于1条数据,则可以返回⼀个存储Map集合的List集合。拿Car的id做key,以后取出对应的Map集合时更方便。原创 2022-11-04 15:30:14 · 1070 阅读 · 0 评论 -
(八)MyBatis中参数的处理
实际上,在SQL映射文件里面中配置比较完整的学法是在select标签里面,加一个parameterType属性,指定其参数类型,这个属性需要填类型的全限定名称,但在Mybatis内置了很多别名,我们用这些别名即可,当然,对于简单类型来说,Myabtis是由自动类型推断机制的,我们可以不用设置这个属性。在SQLMapper.xml映射文件里面使用argX或paramX方式进行传值的话,发现可读性非常差,对于这种情况,可以使用@Param注解来配置传值方式,提供可读性,这个注解是Mybatis内置的。原创 2022-11-03 16:46:17 · 624 阅读 · 0 评论 -
(七)Mybatis传值中#{}和${}的区别,及别名机制
业务背景:实际开发中,有的表数据量非常庞大,可能会采用分表方式进行存储,比如每天生成一张表,表的名字与日期挂钩,例如: 2022年8月1日生成的表: t _user20220108. 2000年1 月1日生成的表: t _user20000101。${}:先进行sql语句拼接,然后再编译sql语句,底层是Statement实现。运行测试程序会出现错误,因为${}是先进行字符串拼接,再进行编译,出现语法错误是正常的,因为 ‘燃油车’ 是⼀个字符串,在sql语句中应该添加单引号。可以防止sql注入,比较常用。原创 2022-11-02 16:49:30 · 853 阅读 · 0 评论 -
(六)Mybatis中接口代理机制及使用
在上一篇的学习中,不难发现dao层中的实现类代码比较固定,基本就是创建SqlSession对象,然后通过SqlSession对象调用CURD的相关方法,这个类中的方法没有任何业务逻辑,那可以可以动态生成呢?原创 2022-11-01 20:04:08 · 456 阅读 · 0 评论 -
(五)在WEB中应用MyBatis(使用MVC架构模式)
实现功能:银行账户转账使⽤技术:HTML + Servlet + MyBatis + Tomcat10原创 2022-10-30 17:56:19 · 696 阅读 · 0 评论 -
(四)手写简单版MyBatis框架
参考测试程序,知道要获得SqlSession对象需要创建SqlSessionFactory,而SqlSessionFactory又是通过SqlSessionFactoryBuilder的build方法返回,所以需要定义一个MySqlSessionFactoryBuilder类,提供一个build方法,返回MySqlSessionFactory对象/*** MySqlSessionFactory构建器对象,通过bulid方法解析Mybatis的XML配置文件,创建SqlSessionFactory。原创 2022-10-29 17:47:55 · 768 阅读 · 0 评论 -
(三)Mybatis中的传值
使用普通java类传值时,占位符#{},大括号里面写java类的属性名,Mybatis会自动调用调用相关的get方进行传值,例如#{abc},Mybatis去找类中的getAbc()方法去了。没找到就会报错,严格意义上来说占位符#{},里面写的是,get方法的方法名去掉get,将剩下的单词首字母小写。使用Map集合给SQL语句的占位符传值时,#{}里面填的是Map的key,Mybatis底层会自动调用map的get方法,通过传过来的key获取value传进去,一般map集合的key起名的时候要见名知意。原创 2022-10-27 20:45:56 · 969 阅读 · 0 评论 -
在IDEA中配置Mybatis核心配置文件和映射文件的模板
Mybatis的配置文件和映射文件,有DTD和一些标签是必须,自己编写的话会记不住要引入的DTD,在IDEA中可以自定义文件的模板,到时候新建文件的时候就可以用这些模板,不需要手动去别的地方复制或者手动手写。配置文件步骤如下打开设置(Setting)-- 编辑器Editor – 文件和代码模板(File and Code Templates)-- 点击加号即可新建模板。原创 2022-10-26 17:20:25 · 1132 阅读 · 0 评论 -
Mybatis工具类ThreadLocal版
Java官方文档中的描述:ThreadLocal类用来提供线程内部的局部变量。这种变量在多线程环境下访问(通过get和set方法访问)时能保证各个线程的变量相对独立于其他线程内的变量。ThreadLocal实例通常来说都是private static类型的,用于关联线程和线程上下文。ThreaLocal介绍。原创 2022-10-25 19:55:27 · 519 阅读 · 0 评论 -
(二)简单使用Mybatis
优点:采用这种方式,从类路径当中加载资源,项目的移植性很强。项目从windows移植到linux,代码不需要修改,因为这个资源文件一直都在类路径当中。以后凡是遇到resource这个单词,大部分情况下,这种加载资源的方式就是从类的根路径下开始加载。系统类加载器有一个方法叫做:getResourceAsStream,它就是从类路径当中加载资源的。SqlSession是专门用来执行SQL语句的,是一个Java程序和数据库之间的一次会话。采用这种方式,从类路径当中加载资源,项目的移植性很强。原创 2022-10-19 22:52:00 · 527 阅读 · 0 评论 -
(一)Mybatis概述
框架(framework):就是对通用代码的封装,提前写好了一堆接口和类,做项目的时候可以引入框架,基于这些现有的接口和类进行开发,可以大大提高效率。业务逻辑层(BLL) : 一是处理表现层转发过来的前端请求(也就是具体业务),二是将从持久层获取的数据返回到表现层。数据访问层(DAL) :直接操作数据库完成CRUD,并将获得的数据返回到上一层(也就是业务逻辑层)也有全自动的,比如Hibernate就是全自动的,它调用方法,会自动生成SQL语句。MyBatis在三层架构中负责持久层的,属于持久层框架。原创 2022-10-19 14:20:25 · 419 阅读 · 0 评论 -
Mybatis学习笔记目录
Mybatis学习目录原创 2022-10-31 16:48:56 · 868 阅读 · 0 评论