简介:

  1、Mybatis  开源免费框架,原名叫iBatis,2010在google code,2013年迁移到github

  2、作用: 数据访问层框架

    2.1  底层是对JDBC的封装

  3、mybatis优点之一:

    3.1 使用mybatis时,不需要编写实现类,只需要写需要执行的sql命令。

环境搭建:

  1、导入jar                   (之前把mysql的驱动包放入tomcat中了,所有在这里没有导入mysql驱动包)

       

  2、在src下新建全局配置文件(编写JDBC四个变量)

     2.1 在src目录下新建xml文件  (src/mybatis.xml)

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE configuration                  2-4是引入远程的DTD文件,进行代码的提示
 3   PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 4   "http://mybatis.org/dtd/mybatis-3-config.dtd">
 5 <configuration>
 6     <!-- default引用environment的id,当前所使用的环境 -->
 7     <environments default="default">
 8         <!-- 声明可以使用的环境 -->
 9         <environment id="default">
10             <!-- 使用原生JDBC事务 -->
11             <transactionManager type="JDBC"></transactionManager>
12             <!-- 数据库的连接池 -->               配置JDBC四个变量
13             <dataSource type="POOLED">         
14                 <property name="driver" value="com.mysql.jdbc.Driver"/>
15                 <property name="url" value="jdbc:mysql://localhost:3306/ssm"/>
16                 <property name="username" value="root"/>
17                 <property name="password" value="362222"/>
18             </dataSource>
19         </environment>
20     </environments>21 <mappers>22        <mapper resource="com/bjsxt/mapper/FlowerMapper.xml"/>23    </mappers>  
24 </configuration>

   3、新建以mapper结尾的包,在包下新建:实体类名+Mapper.xml 的文件

    3.1  文件的作用: 编写需要执行的SQL语句

    3.2  把xml理解成实现类

        实现过程是:mybatis底层将xml文件解析反射成实现类进行数据操作  

    3.3  配置过程    (com/bjsxt/mapper/FlowerMapper.xml)

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE mapper
 3   PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 4   "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 5 <!-- namesapce:理解成实现类的全路径(包名+类名) -->
 6  <mapper namespace="a.b">
 7      <!-- id:方法名
 8              parameterType:定义参数类型
 9              resultType:返回值类型
10
11              如果方法返回值是list,在resultType中写List的泛型,因为mybatis对
12              jdbc封装,一行一行读取数据
13       -->                 通过反射找到自定义的类  (查询的是List集合,为什么类型是自定义的类??因为底层是对JDBC封装的(ResultSet一次只能读取一行数据),一行数据是一个实体类)
14      <select id="sellAll" resultType="com.bjsxt.pojo.Flower">
15          select * from flower
16      </select>
17  </mapper>

   4、测试结果(只有在单独使用mybatis时使用,最后ssm整合时下面代码不需要编写)

    4.1 新建一个包一个类进行测试

      

 1 package com.bjsxt.test;
 2
 3 import java.io.IOException;
 4 import java.io.InputStream;
 5 import java.util.List;
 6
 7 import org.apache.ibatis.io.Resources;
 8 import org.apache.ibatis.session.SqlSession;
 9 import org.apache.ibatis.session.SqlSessionFactory;
10 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
11
12 import com.bjsxt.pojo.Flower;
13
14 public class Test {
15     public static void main(String[] args) {
16         InputStream is = null;
17         try {
18             is = Resources.getResourceAsStream("mybatis.xml");
19
20         } catch (IOException e) {
21             // TODO Auto-generated catch block
22             e.printStackTrace();
23         }
24         //使用工厂设计模式
25         SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(is);
26         //生产SqlSession    SqlSession 封装了mybatis中所有的sql命令
27         SqlSession session=factory.openSession();
28
29         List<Flower> list = session.selectList("a.b.sellAll");
30         for(Flower flower:list){
31             System.out.println(flower.toString());
32         }
33         session.close();
34     }
35 }

  文件目录

        

环境搭建详解:

  1、全局配置文件中内容

      1.1  <transactionManager/> type 属性可取值

        1.1.1 JDBC事务管理使用JDBC原生事务管理方式

        1.1.2 MANAGED 把事务管理转交给其他容器  (spring使用)

                 原生JDBC事务 setAutoMapping(false);

       1.2  <dataSouce/> type属性

        1.2.1 POOLED 使用数据库连接池

        1.2.2 UNPOOLED  不使用数据库连接池,和直接使用JDBC一样

        1.2.3 JNDI : java命名目录接口技术,(使用java通过接口调用别的语言程序)

数据库连接池

      1、在内存中开辟一块空间,存放多个数据库连接对象。

      2、JDBC Tomcat Pool 直接由tomcat产生数据库连接池

      3、图示

        3.1 active 状态:当前连接对象被应用程序使用中

        3.2 ldle 空闲状态:等待应用程序使用

        

      4、使用数据库连接池的目的

         4.1  在高频率访问数据库时,使用数据库连接池可以降低服务器系统压力,提升程序运行效率。

          4.1.1 小型项目不适用数据库连接池

      5、实现JDBC tomcat Pool的步骤

            https://www.cnblogs.com/axu521/p/10056835.html    

 三种查询方式

    1、select()  返回值为List<resultType 属性控制>

      1.1  适用于查询结果都需要遍历的需求

 下面这是Test测试1         List<Flower> list = session.selectList("a.b.sellAll");
2         for(Flower flower:list){
3             System.out.println(flower.toString());
4         }

下面只是FlowerMapper.xml文件     <select id="sellAll" resultType="com.bjsxt.pojo.Flower">         select * from flower     </select>

      2、selectOne()  返回值Object

      2.1 适用于返回结果只是变量或一行数据时

  下面这是Test测试1         int i=session.selectOne("a.b.selById");
2         System.out.println(i);

  下面这是FlowerMapper.xml文件中     <select id="selById" resultType="int">         select count(*) from flower      </select>

    3、selectMap()  返回值 Map

      3.1 适用于需求需要在查询结果中通过某列的值取到这行数据的需求

      3.2 Map<Key,resultType控制>

   下面这是Test测试    //把数据库中哪个列的值当做map的keyMap<Object, Object> map = session.selectMap("a.b.c","name");System.out.println(map);  下面这是FlowerMapper.xml文件中   <select id="c" resultType="com.bjsxt.pojo.Flower">     select * from flower     </select>   

  

转载于:https://www.cnblogs.com/axu521/p/10056113.html

Mybatis简介、环境搭建和详解相关推荐

  1. php强类型 vscode,VSCode + WSL 2 + Ruby环境搭建图文详解

    vscode配置ruby开发环境 vscode近年来发展迅速,几乎在3年之间就抢占了原来vim.sublime text的很多份额,犹记得在2015-2016年的时候,ruby推荐的开发环境基本上都是 ...

  2. Visual Studio集成Qt环境搭建_详解与测试

    1.利器≠戾气 接了两个项目,而这两个项目说起来也很有意思. 一个是监护仪软件开发,要求利用MFC进行开发,因为在此之前接近两年时间一直进行MFC开发:来到清华后,碰到了好多的计算机编程大牛,就GUI ...

  3. Linux下服务器基本环境搭建步骤详解(三种软件安装方式)

    Linux下服务器基本环境搭建 小伙伴们注意看:下面使用三种方式分别安装JDK.Tomcat.Docker进行演示 操作系统基于CentOs7. 文章目录 Linux下服务器基本环境搭建 前言 一.L ...

  4. 深度学习环境搭建超级详解(Miniconda、pytorch安装)

    小白刚开始学习<动手学深度学习>,第一次发文,本文主要是为了记录在环境搭建过程中遇到的问题和疑惑,以及解决方法,同时希望能帮到遇到相同问题的小伙伴. 在学习中遇到的疑惑和最后搜索得到的解答 ...

  5. hadoop环境搭建(详解)

    hadoop 环境搭建 引言: 随着人工智能和大数据的热潮的到来,大数据变得越来越火了,坏蛋哥的信念就是致力于大数据的发展和进步,希望能为大数据的发展和推广尽一份绵薄之力.如果要做大数据,那么大数据相 ...

  6. react结合ts与mobx环境搭建步骤详解

    由于react ts mobx 版本上的更新,一些配置信息也在随时更新,使得有时候,在更新版本时,一些配置文件出错,让我们措手不及,现将三者环境搭建配上,废话不多说 思路:新建react 应用,利用弹 ...

  7. 手动angular2环境搭建_详解.Net Core + Angular2 环境搭建

    本文介绍了.Net Core + Angular2 环境搭建,具体如下: 环境搭建: 1)node.js版本>5.0,NPM版本>3.0,TypeScript版本>2.0(全装最新版 ...

  8. 服务器php环境搭建教程,PHP服务端环境搭建图文详解

    PHP环境搭建也是一门技术,本文主要为大家分享一篇PHP服务端环境搭建的图文教程,具有很好的参考价值,希望对大家有所帮助. 一.PHP服务端环境搭建 1.php 服务端环境 安装套件 xampp(ap ...

  9. 亚马逊、Lazada、Shopee、速卖通、eBay、Wish测评自养号运营知识——环境搭建技术详解

    跨境领域竞争日趋白热化的当下,卖家朋友们都知道产品为王,但是当你拥有了一款不错的产品,要如何让消费者全方位地了解一款产品十分重要.今天我们来和大家探讨一下跨境平台上listing要素有哪些?优化目标是 ...

  10. Jmeter - 从入门到精通 - 环境搭建(详解教程)

    一.JMeter 介绍 Apache JMeter是100%纯JAVA桌面应用程序,被设计为用于测试客户端/服务端结构的软件(例如web应用程序).它可以用来测试静态和动态资源的性能,例如:静态文件, ...

最新文章

  1. python namedtuple用法_Python namedtuple(命名元组)使用实例
  2. BLE蓝牙核心数据库结构解析
  3. 2.6 Go 读取CSV
  4. 【常用】鼠标拖动物体移动
  5. 2019面试跳槽回顾和一点感想
  6. Asp.Net登陆记住用户功能实现
  7. JavaScript程序员必备的5个debug技巧
  8. LeetCode 35. Search Insert Position
  9. Maven项目有红叉,文件却没有错误,已解决
  10. svn导入 ubuntu_ubuntu搭建SVN服务器详细教程
  11. Android 通过开源框架AsyncHttpClient进行get和post请求
  12. 用mysql计算年龄lt;gt;,什么是运算符lt; =gt;在MySQL中?
  13. Nginx伪静态配置和常用Rewrite伪静态规则
  14. 死灰复燃的ThinkPad SL400 同机型与同问题可参考!也可帮忙排错!
  15. Servlet(互联网通信基础及实例)(上)
  16. python什么为假_Python返回真假值(True or False)小技巧
  17. boseqc35能不能连电脑_求教boseqc35如何连接win10电脑
  18. win7 配置Window Update失败,还原更改
  19. 哈工大计算机系统大作业——程序人生-Hello’s P2P
  20. windows的cmd命令检测ip或者端口是否连通

热门文章

  1. ArcGIS Server 10.1发布数据源为ArcSDE(直连)的MXD【转】
  2. phpFreeChat 2.0.0 发布,Web 聊天室
  3. 实现手机访问网站时点击手机号码直接拨打电话的功能
  4. 微信小程序获取当前地理位置中文_微信小程序获取位置信息
  5. linux设置r镜像,一劳永逸,R的个性化默认配置
  6. spring新注解说明
  7. python gdbm_linux下python安装
  8. php post 302,php – Laravel 5.2 Post 302重定向到GET
  9. 设计模式(10)——迭代器模式
  10. 设计模式(7)——适配器模式