MyBatis是持久化层框架(SQL映射框架)-操作数据库

一、环境搭建

1)、创建一个java工程,java工程就行;

2)、

创建表:自己用工具创建

创建javaBean:Employee(封装表的数据)

创建一个Dao接口(接口即可),用来操作数据库;


3)、用MyBatis操作数据库?

1)、导包

//mysql-connector-java-5.1.37-bin.jar

//mybatis-3.4.1.jar

//log4j-1.2.17.jar

//建议导入日志包;这样的化在mybatis关键的环节就会有日志打印;

//log4j(日志框架);依赖类路径下一个log4j.xml配置文件;

二、写配置两个

全局配置文件(指导mybatis运行的),EmployeeDao.xml

dao接口的实现文件EmployeeDao.xml(描述dao中每个方法怎么工作))

1)、第一个配置文件application.yml;(称为mybatis的全局配置文件,指导mybatis如何正确运行,比如连接向哪个数据库)

2)、第二个配置文件UserMapper.xml:(编写每一个方法都如何向数据库发送sql语句,如何执行。。。。相当于接口的实现类)

1)、将mapper的namespace属性改为接口的全类名

2)、配置细节

          

<!--namespace:名称空间;写接口的全类名,相当于告诉MyBatis这个配置文件是实现哪个接口的;  -->
<mapper namespace="com.atguigu.dao.EmployeeDao"> <!-- public Employee getEmpById(Integer id); -->
<!--
select:用来定义一个查询操作
id:方法名,相当于这个配置是对于某个方法的实现
resultType:指定方法运行后的返回值类型;(查询操作必须指定的)
#{属性名}:代表取出传递过来的某个参数的值
-->
<select id="getEmpById" resultType="com.atguigu.bean.Employee">
select * from t_employee where id=#{id}
</select>
</mapper>

3)、我们写的dao接口的实现文件,mybatis默认是不知道的,需要在全局配置文件中注册;

<!-- 引入我们自己编写的每一个接口的实现文件 -->
<mappers>
<!--resource:表示从类路径下找资源 -->
<mapper resource="mybatis/EmployeeDao.xml"/>
</mappers>

三、测试

1)、junit4类根据全局配置文件先创建一个

     String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

2)、sqlSessionFactory中获取sqlSession对象操作数据库即可

//2、获取和数据库的一次会话;getConnection();
SqlSession openSession = sqlSessionFactory.openSession();
//3、使用SqlSession操作数据库,获取到dao接口的实现
EmployeeDao employeeDao = openSession.getMapper(EmployeeDao.class);
//4、调用之前的方法;
Employee employee = employeeDao.getEmpById(1);
System.out.println(employee);

四、如何写xml有提示

1)、只要eclipse找到了这个文件的dtd约束文件的位置即可

2)、绑定约束文件的位置

1、复制dtd的引用网址:

http://mybatis.org/dtd/mybatis-3-config.dtd

2、window-perferences-xml-xml catalog-Add-key输入链接名-location输入文件位置


五、补充说明

两个文件:

1)、全局配置文件:mybatis-config.xml;指导mybatis正确运行的一些全局设置;

2)、SQL映射文件:EmployeeDao.xml;相当于是对Dao接口的一个实现描述

细节:

1)、获取到的这个接口

EmployeeDao employeeDao = openSession.getMapper(EmployeeDao.class);

其实这个对象类型是个代理对象class com.sun.proxy.$Proxy3是mybatis自动创建的;

2)、SqlSessionFactory和SqlSession;

SqlSessionFactory创建SqlSession对象,Factory只new一次就行

SqlSession:相当于connection和数据库进行交互的,和数据库的一次会话,就应该创建一个新的sqlSession;

【串线篇】Mybatis入门的更多相关文章

  1. Java框架篇---Mybatis 入门

    一.Mybatis介绍 MyBatis是一款一流的支持自定义SQL.存储过程和高级映射的持久化框架.MyBatis几乎消除了所有的JDBC代码,也基本不需要手工去设置参数和获取检索结果.MyBatis ...

  2. mybatis入门基础(二)----原始dao的开发和mapper代理开发

    承接上一篇 mybatis入门基础(一) 看过上一篇的朋友,肯定可以看出,里面的MybatisService中存在大量的重复代码,看起来不是很清楚,但第一次那样写,是为了解mybatis的执行步骤,先 ...

  3. MyBatis入门(一)SqlSessionFactory

    (1)新建数据库 CREATE TABLE emp ( id INT ( 10 ) PRIMARY KEY auto_increment, last_name VARCHAR(255), gender ...

  4. Mybatis 入门到理解篇

    MyBatis         MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code, ...

  5. Mybatis入门篇之结果映射,你射准了吗?

    目录 前言 什么是结果映射? 如何映射? 别名映射 驼峰映射 配置文件开启驼峰映射 配置类中开启驼峰映射 resultMap映射 总结 高级结果映射 关联(association) 例子 关联的嵌套 ...

  6. Mybatis入门看这一篇就够了

    什么是MyBatis MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为 ...

  7. MyBatis入门学习教程-使用MyBatis对表执行CRUD操作

    上一篇MyBatis学习总结(一)--MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据,算是对MyBatis有一个初步的入门了,今天讲解一下如何使用MyBatis对use ...

  8. mybatis入门介绍一

    首先介绍一下Mybatis是什么?mybatis是Java的持久层框架, JAVA操作数据库是通过jdbc来操作的,而mybatis是对jdbc的封装. 使用mybatis之后,开发者只需要关注sql ...

  9. mybatis入门介绍二

    相信看过我的上一篇博客的同学都已经对mybatis有一个初步的认识了.这篇博客主要是对mybatis的mapper代理做一下简单的介绍,希望能够帮助大家共同学习. 我的上一篇博客:mybatis入门介 ...

  10. 【转载】 mybatis入门系列四之动态SQL

    mybatis 详解(五)------动态SQL 目录 1.动态SQL:if 语句 2.动态SQL:if+where 语句 3.动态SQL:if+set 语句 4.动态SQL:choose(when, ...

随机推荐

  1. DevOps打造端到端的价值交付

    首先就要来说下什么是端到端: 敏捷帮助我们解决了开发域从计划到测试(部分测试内容)的问题 持续集成帮助解决了从计划到测试完成的过程 持续发布解决了从计划到待发布的过程 持续部署解决了从计划到已上线的过 ...

  2. Es学习第九课, 聚合查询和复合查询

    ES除了实现前几课的基本查询,也可以实现类似关系型数据库的聚合查询,如平均值sum.最小值min.最大值max等等 我们就用上一课的数据作为参考来举例 聚合查询 sum聚合 sum是一个求累加值的聚合 ...

  3. 51nod 1714:B君的游戏(博弈 sg打表)

    题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1714 nim游戏的一个变形,需要打出sg函数的表 #incl ...

  4. 百度小程序-form表单点击提交,input框内容不会清空

    百度小程序与微信小程序相似度90%.微信小程序转换为百度小程序,部分还是需要人工修改! 做了一个form留言表单,点击提交之后,input框第一次会清空,但是第二次就不会清空了! 不多说直接上代码! ...

  5. 圆周率Pi是如何计算出来的

    object SparkPi { def main(args: Array[String]) { val spark = SparkSession .builder .appName("Sp ...

  6. Python基础教程(022)--Pycharm快速体验

    前言 熟悉掌握Python工具 内容 提示 断点调试 目的 学会了解Pycharm的使用 掌握Pycharm执行程序 掌握断点调试模式

  7. 【HDOJ6608】Fansblog(威尔逊定理)

    题意:给定质数p,求q!模p的值,其中q为小于p的最大质数 1e9<=p<=1e14 思路:根据质数密度近似分布可以暴力找q并检查 找到q后根据威尔逊定理: 把q+1到p-1这一段的逆元移 ...

  8. SQL语句中,除数为0时,相应方法

    在sql中做除法处理的时候,可能需要处理除数为零的情况. (1).case语句处理方法是用case when ... else 来处理 (2).nullif函数nullif函数有两个参数,定义如下:N ...

  9. vijos 1054 牛场围栏 【想法题】

    这题刚看完后第一个想到的方法是背包 但仔细分析数据范围后会发现这题用背包做复杂度很高 比如对于这样的数据 2 100 2999 2898 (如果有神犇可以用背包过掉这样的数据 请回复下背包的做法) - ...

  10. 九条命令检查Linux服务器性能

    一.uptime命令 这个命令可以快速查看机器的负载情况.在Linux系统中,这些数据表示等待CPU资源的进程和阻塞在不可中断IO进程(进程状态为D)的数量.这些数据可以让我们对系统资源使用有一个宏观 ...