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)、配置细节

          

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

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

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

三、测试

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

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

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

  1. //2、获取和数据库的一次会话;getConnection();
  2. SqlSession openSession = sqlSessionFactory.openSession();
  3. //3、使用SqlSession操作数据库,获取到dao接口的实现
  4. EmployeeDao employeeDao = openSession.getMapper(EmployeeDao.class);
  5. //4、调用之前的方法;
  6. Employee employee = employeeDao.getEmpById(1);
  7. 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. CPU性能优化

    原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11521331.html CPU性能指标 根据指标找工具 根据工具查指标 top.vmstat 和 pi ...

  2. 使用IDEA进行commit合并(折叠)

    当前有,test1,test2两个commit,想把这两个分支合成一个commit去提交代码 将T1C修改的代码,与T2C修改的代码合并,合成一个commit作为提交 这样二个commit就合并成一个 ...

  3. 阿里云HPC助力新制造 | 上汽仿真计算云SSCC

    随着上汽集团与阿里云的合作开展,阿里云各项技术逐步深入到上汽汽车研发领域的核心业务实现落地.其中上海汽车集团股份有限公司乘用车分公司(以下简称上汽乘用车)与阿里云共建的仿真计算混合云就是新制造产业升级 ...

  4. 学习总结-Redis

    一,简介 redis(Remote Dictionary Server)是一种Nosql技术,它是一个开源的高级kv存储和数据结构存储系统,它经常被拿来和Memcached相比较,但是Memcache ...

  5. 【靶场练习_sqli-labs】SQLi-LABS Page-3 (Stacked Injections)

    Less-39: ?id=1 and 1 ,?id=1 and 1 : 回显不同,数字型 ?id=0 union select 1,2,group_concat(table_name) from in ...

  6. [POJ3735]Training little cats

    题目:Training little cats 链接:http://poj.org/problem?id=3735 分析: 1)将操作用矩阵表示出来,然后快速幂优化. 2)初始矩阵:$ \left[ ...

  7. mysql 一条sql完成saveOrUpdate 存在即更新

    关键字 on duplicate key update <pre name="code" class="sql"> insert into tabl ...

  8. AsyncTask2

    参考: AsyncTask - 简书http://www.jianshu.com/p/3b839d7a3fcf 前言 在android应用开发过程中,我们需要是时刻注意保证应用程序的稳定和UI操作响应 ...

  9. TypeScript躬行记(5)——类型兼容性

    TypeScript是一种基于结构类型的语言,可根据其成员来描述类型.以结构相同的Person接口和Programmer类为例,如下所示. interface Person { name: strin ...

  10. getAttribute 与getParmeter 区别

    1.getAttribute是取得jsp中 用setAttribute設定的attribute 2.parameter得到的是string:attribute得到的是object 3.request. ...