Mybatis学习笔记1 Mybatis入门

这篇具有很好参考价值的文章主要介绍了Mybatis学习笔记1 Mybatis入门。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

差不多根据mybatis中文文档:创建第一个mybatismaven项目,将它跑起来

入门_MyBatis中文网

新建库

Mybatis学习笔记1 Mybatis入门,mybatis,学习,笔记

建表

Mybatis学习笔记1 Mybatis入门,mybatis,学习,笔记

创建项目

Mybatis学习笔记1 Mybatis入门,mybatis,学习,笔记

Mybatis学习笔记1 Mybatis入门,mybatis,学习,笔记Mybatis学习笔记1 Mybatis入门,mybatis,学习,笔记Mybatis学习笔记1 Mybatis入门,mybatis,学习,笔记

Mybatis学习笔记1 Mybatis入门,mybatis,学习,笔记

重启之后

Mybatis学习笔记1 Mybatis入门,mybatis,学习,笔记

配置下Maven与encoding  成习惯了

Mybatis学习笔记1 Mybatis入门,mybatis,学习,笔记Mybatis学习笔记1 Mybatis入门,mybatis,学习,笔记Mybatis学习笔记1 Mybatis入门,mybatis,学习,笔记

新建模块

Mybatis学习笔记1 Mybatis入门,mybatis,学习,笔记Mybatis学习笔记1 Mybatis入门,mybatis,学习,笔记

注意:这个GroupId和ArtifactId  version是之后,你用Maven install时候后存放的包路径和包名

Mybatis学习笔记1 Mybatis入门,mybatis,学习,笔记

目录结构:虽然换了JDK17但是编译器版本好像不行,IDEA版本可能低了

Mybatis学习笔记1 Mybatis入门,mybatis,学习,笔记

突然发现maven不见了

Mybatis学习笔记1 Mybatis入门,mybatis,学习,笔记Mybatis学习笔记1 Mybatis入门,mybatis,学习,笔记

输入

Maven projects

Mybatis学习笔记1 Mybatis入门,mybatis,学习,笔记

选中对应的pom.xml

Mybatis学习笔记1 Mybatis入门,mybatis,学习,笔记

maven回来了

Mybatis学习笔记1 Mybatis入门,mybatis,学习,笔记

我还是把JDK换成8算了

官网意思,从XML中构建SqlSessionFactory

也就是说,这个XML其实是在配置SqlSessionFactory

Mybatis学习笔记1 Mybatis入门,mybatis,学习,笔记

  也讲了不使用XML配置的方式

Mybatis学习笔记1 Mybatis入门,mybatis,学习,笔记

先按XML进行配置

在Resources下新建mybatis-config.xml文件名无所谓

这里讲下:有些配置文件好比一个模板,经常要使用,可以通过idea配置一下一些常用文件的模板

以便下次使用时候,可以直接创建,具体方式

IDEA常用模板文件配置_biubiubiu0706的博客-CSDN博客

这里我就按Mybatis入门复制了

Mybatis学习笔记1 Mybatis入门,mybatis,学习,笔记

把JDBC连接的驱动,URL,用户名,密码先整上

Mybatis学习笔记1 Mybatis入门,mybatis,学习,笔记

接下来

Mybatis学习笔记1 Mybatis入门,mybatis,学习,笔记

Mybatis学习笔记1 Mybatis入门,mybatis,学习,笔记

下面编写Mybatis程序 执行之后发现数据库没插入

Mybatis学习笔记1 Mybatis入门,mybatis,学习,笔记

原因是Mybatis默认获取的sqlSession对象是不支持默认提交的

Mybatis学习笔记1 Mybatis入门,mybatis,学习,笔记

Mybatis学习笔记1 Mybatis入门,mybatis,学习,笔记

看下SqlSessionFactory和sqlSession的实现类是哪个   -------->DefaultSqlSessionFactory和DefaultSqlSession  对源码有兴趣的可以看看

Mybatis学习笔记1 Mybatis入门,mybatis,学习,笔记

Mybatis学习笔记1 Mybatis入门,mybatis,学习,笔记

一般情况下都是一个数据库对应一个SqlSessionFactory对象

几个细节:

mybatis核心配置文件命名可以随自己,放的位置也可以随自己(出于程序健壮性,可移植性,最好放在resources目录下)

mybatis的xxxMaper.xml里的sql语句可以;(分号结尾)也可以省略不写

通过同一个SqlSessionFactory对象可以获得多个不同sqlSession对象

Resources.getResourceAsStream("mybatis-config.xml");这个是mybatis封装的API,一般遇到Resources说明都是resources目录下的,加入你的mybatis配置文件在resources下的xxx包下yyy.xml

那么

InputStream inputStream = Resources.getResourceAsStream("xxx/yyy.xml");

获取到一个输入流

然后将输入流放到build方法内

SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream);

那么能不能自己new个流呢?也是可以的,比如将配置文件放在D盘某目录下

InputStream in=new FileInputStream("d:\\mybatis-config.xml")

或者InputStream in=new FileInputStream("d:/mybatis-config.xml")

但是这样的缺点是就是移植性差,放到苹果电脑就不行了

指定resouces目录下,到哪里都可以用.

另外加载mybatis核心配置文件还有一种方式用类加载器去获得系统类加载器调用getResourceAsStream("文件名")的方式

InputStream in=ClassLoader.getSystemClassLoad().getResourceAsStream("mybatis-config.xml");

其实也可以直接这样InputStream in=ClassLoader.getSystemResourceAsStream("mybatis-config.xml");

<!--resource属性会自动从类的根路径下开始查找资源-->
<!--
1.<package name="包名"> 标签用于自动扫描指定包下的映射文件,要求映射文件名和接口名保持一致,并且映射文件(.xml)和接口需要在同一个包中,否则会报错。
2.<mapper class=""> 标签的class属性用于注册映射文件,同样要求映射文件名和接口名保持一致,并且映射文件(.xml)和接口需要在同一个包中,否则会报错。
3.<mapper resource="org/xx/demo/mapper/xx.xml"/> 标签用于注册映射文件,与上述两种方式不同,这种方式不要求映射文件名和接口名一致。这里是通过命名空间(namespace)和mapper接口对应的,命名空间要与接口的全限定名保持一致。
4.<mapper url="file:///d:/CarMapper.xml" />是绝对路径加载映射文件的,而且 .xml 文件的名称并不需要和接口名称相同。通过命名空间指定和接口关系
-->
<!--告诉mybatis去哪里找mapper文件-->
<mappers>
    <mapper resource="mapper/CarMapperABC.xml"/>
</mappers>

关于Mybatis的事务管理机制

Mybatis学习笔记1 Mybatis入门,mybatis,学习,笔记

 <!--
     transactionManager:事务管理器
     type取值有两种:
     1:type="JDBC",使用java.sql.Connection管理事务
     2:type="MANAGED",文档解释,几乎什么都不做,它不提交或回滚一个连接,而是让容器来管理事务的整个生命周期
 -->
 <!--
    mybatis提供了两种事务管理机制
    1.JDBC(可小写)事务管理器:mybatis框架自己管理事务,实际就是采用原生JDBC代码管理事务
        好比写JDBC时: conn.setAutoCommit(false);
                    ......业务处理......
                    conn.commit();手动提交
    2.MANAGED(可小写)事务管理器
        mybatis不再管理事务,事务交给其他容器负责:例如Spring
        但是这里用MANAGED,因为没有容器好比事务没有开启,就会变成没有事务这回事,直接干了
-->
 <transactionManager type="JDBC"/>

如果使用的事务管理器类型是JDBC的话

SqlSession sqlSession = sqlSessionFactory.openSession();

这句代码底层会执行conn.setAutoCommit(false);

如果使用的事务管理器类型是MANAGED的话,交给容器管理.比如交给Spring管理了.一般就是没有事务了,自动提交了

openSession有个重载方法:

SqlSession sqlSession = sqlSessionFactory.openSession(true);意思是自动提交

在JDBC事务中,如果没有设置conn.setAutoCommit(false);的话conn.getAutoConmmit()本身就是true;

 经过上面介绍,写一个差不多完整版本的Mybatis入门程序

Mybatis学习笔记1 Mybatis入门,mybatis,学习,笔记

为了以后测试方便,不需要测试一个就写个main方法,引入JUnit(单元测试)

新建个模块测试Junit

Mybatis学习笔记1 Mybatis入门,mybatis,学习,笔记

Maven项目

Mybatis学习笔记1 Mybatis入门,mybatis,学习,笔记Mybatis学习笔记1 Mybatis入门,mybatis,学习,笔记

引入依赖

Mybatis学习笔记1 Mybatis入门,mybatis,学习,笔记

比如说需要对该业务方法进行测试

Mybatis学习笔记1 Mybatis入门,mybatis,学习,笔记

在test包下建测试类     这个断言挺好用

Mybatis学习笔记1 Mybatis入门,mybatis,学习,笔记

Mybatis中引入junit

Mybatis学习笔记1 Mybatis入门,mybatis,学习,笔记

在单元测试中编写Mybatis程序

Mybatis学习笔记1 Mybatis入门,mybatis,学习,笔记

可以看到现在没有日志输出

关于Mybatis集成日志框架logback.可以让调试更加方便

下面记录是以前的学习记录

Mybatis学习笔记1 Mybatis入门,mybatis,学习,笔记

另外说一下 在配置文件里  点进去  有个标签的顺序问题,需要按顺序来

Mybatis学习笔记1 Mybatis入门,mybatis,学习,笔记

Mybatis学习笔记1 Mybatis入门,mybatis,学习,笔记

Mybatis学习笔记1 Mybatis入门,mybatis,学习,笔记

关于在配置文件里Mybatis集成日志框架logback.

在官方文档设置里

Mybatis学习笔记1 Mybatis入门,mybatis,学习,笔记

Mybatis学习笔记1 Mybatis入门,mybatis,学习,笔记

Mybatis学习笔记1 Mybatis入门,mybatis,学习,笔记

这样就有日志输出了

Mybatis学习笔记1 Mybatis入门,mybatis,学习,笔记

但是详细时间,线程名称,如果想使用更加丰富的日志,可以集成第三方依赖

SLF4(沙拉风):沙拉风是一个日志标准,其中有一个框架叫做logback,它实现了沙拉风规范

LOG4J:

LOG4J2:

STDOUT_LOGGING:Mybatis内置标准日志实现

....

注意:SLF4,LOG4J,LOG4J2作者是同一个人

修改Mybatis配置文件     注意如果用第三方依赖  这个settings可以不配置   这里不配置也是可以的

Mybatis学习笔记1 Mybatis入门,mybatis,学习,笔记

其实不需要配置   除非用内置

Mybatis学习笔记1 Mybatis入门,mybatis,学习,笔记

引入jar包

Mybatis学习笔记1 Mybatis入门,mybatis,学习,笔记

然后引入logback所必须的xml配置文件

这个配置文件必须叫做:logback.xml或者logback-test.xml,不能是其它的名字.

这个配置文件必须放在类的根目录下.不能是其他位置

logback.xml代码

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">
    <!--定义⽇志⽂件的存储地址-->
    <property name="LOG_HOME" value="/home"/>
    <!-- 控制台输出 -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--格式化输出:%d表示⽇期,%thread表示线程名,%-5level:级别从左显示5
           个字符宽度%msg:⽇志消息,%n是换⾏符-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
        </encoder>
    </appender>
    <!-- 按照每天⽣成⽇志⽂件 -->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--⽇志⽂件输出的⽂件名-->
            <FileNamePattern>${LOG_HOME}/TestWeb.log.%d{yyyy-MM-dd}.log</FileNamePattern>
            <!--⽇志⽂件保留天数-->
            <MaxHistory>30</MaxHistory>
        </rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--格式化输出:%d表示⽇期,%thread表示线程名,%-5level:级别从左显示5
           个字符宽度%msg:⽇志消息,%n是换⾏符-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logge
                r{50} - %msg%n</pattern>
        </encoder>
        <!--⽇志⽂件最⼤的⼤⼩-->
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>100MB</MaxFileSize>
        </triggeringPolicy>
    </appender>
    <!--mybatis log configure-->
    <logger name="com.apache.ibatis" level="TRACE"/>
    <logger name="java.sql.Connection" level="DEBUG"/>
    <logger name="java.sql.Statement" level="DEBUG"/>
    <logger name="java.sql.PreparedStatement" level="DEBUG"/>
    <!-- ⽇志输出级别,logback⽇志级别包括五个:TRACE < DEBUG < INFO < WARN < ERROR -->
    <root level="DEBUG">
        <appender-ref ref="STDOUT"/>
        <appender-ref ref="FILE"/>
    </root>
</configuration>

测试

 Mybatis学习笔记1 Mybatis入门,mybatis,学习,笔记文章来源地址https://www.toymoban.com/news/detail-733634.html

到了这里,关于Mybatis学习笔记1 Mybatis入门的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Mybatis学习笔记第一天

    环境: JDK1.8 Mysql5.7 maven3.6.1 IDEA 1.1什么是Mybatis MyBatis 是一款优秀的 持久层框架 它支持自定义 SQL、存储过程以及高级映射。 MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。 MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain

    2024年02月07日
    浏览(46)
  • 狂神说Java——Mybatis学习笔记

    环境说明: jdk 8 + MySQL 5.7.19 maven-3.6.1 IDEA 学习前需要掌握: JDBC MySQL Java 基础 Maven Junit 1.1、什么是MyBatis MyBatis 是一款优秀的 持久层框架 MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的过程 MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和

    2024年03月11日
    浏览(59)
  • Mybatis学习笔记(一)(持续更新中)

    为了巩固所学的知识,作者尝试着开始发布一些学习笔记类的博客,方便日后回顾。当然,如果能帮到一些萌新进行新技术的学习那也是极好的。作者菜菜一枚,文章中如果有记录错误,欢迎读者朋友们批评指正。 (博客的参考源码以可以在我主页的资源里找到,如果在学习

    2024年02月04日
    浏览(38)
  • Mybatis学习笔记9 动态SQL

    Mybatis学习笔记8 查询返回专题_biubiubiu0706的博客-CSDN博客 动态SQL的业务场景: 例如 批量删除 get请求 uri?id=18id=19id=20  或者 post   id=18id=19id=20 String[] ids=request.getParameterValues(\\\"id\\\") 那么这句SQL是需要动态的 还有像如下的多条件查询 可能不提供条件:  0条件  select from t_product; 当选

    2024年02月07日
    浏览(30)
  • Mybatis学习笔记,包含mybatis基本使用、关系映射、动态SQL、分页插件等等

    😀😀😀创作不易,各位看官点赞收藏. 简介:MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain

    2024年02月15日
    浏览(46)
  • mybatis学习笔记之核心配置文件详解

    environments/environments 表示的是里面能配置多个环境 environment /environment 表示其中的一个环境 而如上的核心配置文件中的那个唯一环境表示的是连接的数据库是demo,可以后面再配置一个文件去连接另一个数据库。(一个环境对应一个数据库,而一个数据库对应一个SqlSessionFacto

    2024年02月16日
    浏览(56)
  • 【MyBatis-Plus 进阶学习笔记】

    2.1 优化1 自动填充 有的类没有更新和创建时间字段 2.2 优化2 自己设置时间时填充自己设置的,不设置时自动填充 4.1 PerformanceInterceptor 3.2.0版本被废除 4.2 p6spy 使用

    2024年02月15日
    浏览(39)
  • [Java]Mybatis学习笔记(动力节点老杜)

    文章修改记录: 2023-02-01 第一版:https://www.yuque.com/u27599042/un32ge/mfpui3w5mgiugbhp 2023-06-04 完成重构 第二版:https://www.yuque.com/u27599042/un32ge/kggx3zvyg7mztgvd 手写 MyBatis 框架[GodBatis]第五章节单独抽取了出来:https://www.yuque.com/u27599042/un32ge/ru8czamo6trse3rl 文章汇总归纳于:https://www.yuque.co

    2024年02月07日
    浏览(127)
  • MyBatis学习笔记之高级映射及延迟加载

    t_class表 t_stu表 多对一:多个学生对应一个班级 多的一方是student, 一的一方是class 怎么分主表和副表 谁在前,谁是主表 多对一和一对多其实都是一样的“叫法”,就是主宾之间的顺序,这里的区分是对于设计需求逻辑的区分 多对一:多在前,那么多就是主表 一对多:一在

    2024年02月15日
    浏览(40)
  • MyBatis学习笔记之首次开发及文件配置

    在文献中看到的framework被翻译为框架 Java常用框架: SSM三大框架:Spring + SpringMVC +MyBatis SpringBoot SpringCloud 等。。 枢架其实就是对通用代码的封装,提前写好子了一堆接口和类,我们可以在做项目的时候直接引入这些接口和类(引入框架),基于这些现有的接口和类进行开发,可

    2024年02月16日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包