差不多根据mybatis中文文档:创建第一个mybatismaven项目,将它跑起来
入门_MyBatis中文网
新建库
建表
创建项目
重启之后
配置下Maven与encoding 成习惯了
新建模块
注意:这个GroupId和ArtifactId version是之后,你用Maven install时候后存放的包路径和包名
目录结构:虽然换了JDK17但是编译器版本好像不行,IDEA版本可能低了
突然发现maven不见了
输入
Maven projects
选中对应的pom.xml
maven回来了
我还是把JDK换成8算了
官网意思,从XML中构建SqlSessionFactory
也就是说,这个XML其实是在配置SqlSessionFactory
也讲了不使用XML配置的方式
先按XML进行配置
在Resources下新建mybatis-config.xml文件名无所谓
这里讲下:有些配置文件好比一个模板,经常要使用,可以通过idea配置一下一些常用文件的模板
以便下次使用时候,可以直接创建,具体方式
IDEA常用模板文件配置_biubiubiu0706的博客-CSDN博客
这里我就按Mybatis入门复制了
把JDBC连接的驱动,URL,用户名,密码先整上
下面编写Mybatis程序 执行之后发现数据库没插入
原因是Mybatis默认获取的sqlSession对象是不支持默认提交的
看下SqlSessionFactory和sqlSession的实现类是哪个 -------->DefaultSqlSessionFactory和DefaultSqlSession 对源码有兴趣的可以看看
一般情况下都是一个数据库对应一个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");
关于Mybatis的事务管理机制
如果使用的事务管理器类型是JDBC的话
SqlSession sqlSession = sqlSessionFactory.openSession();
这句代码底层会执行conn.setAutoCommit(false);
如果使用的事务管理器类型是MANAGED的话,交给容器管理.比如交给Spring管理了.一般就是没有事务了,自动提交了
openSession有个重载方法:
SqlSession sqlSession = sqlSessionFactory.openSession(true);意思是自动提交
在JDBC事务中,如果没有设置conn.setAutoCommit(false);的话conn.getAutoConmmit()本身就是true;
经过上面介绍,写一个差不多完整版本的Mybatis入门程序
为了以后测试方便,不需要测试一个就写个main方法,引入JUnit(单元测试)
新建个模块测试Junit
Maven项目
引入依赖
比如说需要对该业务方法进行测试
在test包下建测试类 这个断言挺好用
Mybatis中引入junit
在单元测试中编写Mybatis程序
可以看到现在没有日志输出
关于Mybatis集成日志框架logback.可以让调试更加方便
下面记录是以前的学习记录
另外说一下 在配置文件里 点进去 有个标签的顺序问题,需要按顺序来
关于在配置文件里Mybatis集成日志框架logback.
在官方文档设置里
这样就有日志输出了
但是详细时间,线程名称,如果想使用更加丰富的日志,可以集成第三方依赖
SLF4(沙拉风):沙拉风是一个日志标准,其中有一个框架叫做logback,它实现了沙拉风规范
LOG4J:
LOG4J2:
STDOUT_LOGGING:Mybatis内置标准日志实现
....
注意:SLF4,LOG4J,LOG4J2作者是同一个人
修改Mybatis配置文件 注意如果用第三方依赖 这个settings可以不配置 这里不配置也是可以的
其实不需要配置 除非用内置
引入jar包
然后引入logback所必须的xml配置文件
这个配置文件必须叫做:logback.xml或者logback-test.xml,不能是其它的名字.
这个配置文件必须放在类的根目录下.不能是其他位置
logback.xml代码
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
${LOG_HOME}/TestWeb.log.%d{yyyy-MM-dd}.log
30
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logge
r{50} - %msg%n
100MB
测试