文章目录
- 写在前言
- mybatis里面的快速配置文件是如何联系的
- Mybatis连接数据库与JDBC连接数据库
- JDBC的工作原理
- Mybaties连接数据库的原理
- 1、新建一个Maven项目
- 2、入门配置pom.xml
- 3、快速Xml配置文件
- 1)写一个**mybatis-config.xml文件**
- 2)编写一个Mapper.xml配置文件
- 命名空间
- 什么是入门全限定名
- 3)编写实体类
- 4、编写启动类
写在前言
mybatis里面的快速配置文件是如何联系的
这是我第二次学习mybatis的理解,我理解的入门和如下图,config包含了数据库的快速配置,以及mappers,入门通过mappers可以找到各类Mapper,快速这样就把配置文件,入门联系了起来。快速
Mybatis连接数据库与JDBC连接数据库
JDBC的入门工作原理
- DriverManager 工具类,用于管理驱动,快速可以获取数据库的入门链接
- Connection 表示Java与数据库建立的连接对象(接口)
- PreparedStatement 发送SQL语句的工具
- ResultSet 结果集,用于获取查询语句的快速结果
Mybaties连接数据库的原理
1、新建一个Maven项目
要使用 MyBatis, 只需将 mybatis-x.x.x.jar 文件置于类路(classpath)中即可。或者是利用Maven导入依赖(坐标),我们选择后者,所以要新建一个Maven项目。
2、配置pom.xml
要使用Mybatis,需要导入Mybatis的依赖。
org.mybatis mybatis x.x.x
为了简便开发,我们还引入了Lombok,具体代码如下
4.0.0 com.you Mybatis-demo-01 1.0-SNAPSHOT org.mybatis mybatis 3.5.7 org.projectlombok lombok 1.18.24 mysql mysql-connector-java 8.0.30
如果左侧的Maven中没有显示依赖,就点击刷新按钮,刷新一下!
然后就可以看到依赖被导入进来
3、Xml配置文件
XML 配置文件中包含了对 MyBatis 系统的核心加粗样式设置,包括获取数据库连接实例的数据源(DataSource)以及决定事务作用域和控制方式的事务管理器(TransactionManager)。
1)写一个mybatis-config.xml文件
当然,还有很多可以在 XML 文件中配置的选项,上面的示例仅罗列了最关键的部分。 注意 XML 头部的声明,它用来验证 XML 文档的正确性。environment 元素体中包含了事务管理和连接池的配置。mappers 元素则包含了一组映射器(mapper),这些映射器的 XML 映射文件包含了 SQL 代码和映射定义信息。
2)编写一个Mapper.xml配置文件
由上可知,Mapper.xml是用来映射sql语句的文件
命名空间
在之前版本的 MyBatis 中,命名空间(Namespaces)的作用并不大,是可选的。 但现在,随着命名空间越发重要,你必须指定命名空间。
命名空间的作用有两个:
一个是利用更长的全限定名来将不同的语句隔离开来,同时也实现了你上面见到的接口绑定。就算你觉得暂时用不到接口绑定,你也应该遵循这里的规定,以防哪天你改变了主意。 长远来看,只要将命名空间置于合适的 Java 包命名空间之中,你的代码会变得更加整洁,也有利于你更方便地使用 MyBatis。
命名空间也可以解决id重复的问题,比如UserMapper和DeptMapper都有一个查询全部语句的sql名叫queryAll,通过命名空间我就可以对相同的id进行区别。
什么是全限定名
- 全限定名(比如 “com.mypackage.MyMapper.selectAllThings)将被直接用于查找及使用。
- 短名称(比如 “selectAllThings”)如果全局唯一也可以作为一个单独的引用。 如果不唯一,有两个或两个以上的相同名称(比如
“com.foo.selectAllThings” 和
“com.bar.selectAllThings”),那么使用时就会产生“短名称不唯一”的错误,这种情况下就必须使用全限定名。
也就是说在接口绑定的时候,我既可以用全限定名,也可以使用短名称,但如果短名称不唯一的话,那么我只能使用全限定名,所以为了不出错,你也可以选择全部使用全限定名。
3)编写实体类
由于Mapper.xml的返回类型用到了实体类,所以需要写一个实体类Dept。新建一个实体类Dept
package com.you.pojo;import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;import lombok.ToString;@Data@ToString@NoArgsConstructor@AllArgsConstructorpublic class Dept { private Integer deptno; private String deptname; private String dp_source;}
4、编写启动类
编写一个启动类MybatisRun
package com.you;import com.you.pojo.Dept;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;import java.io.IOException;import java.io.InputStream;import java.util.List;public class MybatisRun { public static void main(String[] args) { String resource = "mybatis-config.xml"; InputStream inputStream = null; try { inputStream = Resources.getResourceAsStream(resource); } catch (IOException ioException) { ioException.printStackTrace(); } SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); SqlSession sqlSession = sqlSessionFactory.openSession(); /* 执行sql语句 */ Listlist = sqlSession.selectList("test.queryAll"); for (Dept dept : list) { System.out.println(dept); } }}