一、MyBatis简介

MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。这就是为什么很多人既把它称为iBatis又称为MyBatis的原因;2013年11月迁移到Github。

MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

二、MyBatis入门案例

1、首先新建一个Maven Java项目,Maven依赖如下:

 <!-- 配置Mybatis的Jar文件 --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.3.1</version></dependency><!-- 配置MySql数据库 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.38</version></dependency><!-- 配置log4j日志 --><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.9</version></dependency>

Maven自动加载依赖Jar包完毕后,项目结构如下图所示:

2、创建数据库文件

-- ----------------------------
-- Table structure for sl_company
-- ----------------------------
DROP TABLE IF EXISTS `sl_company`;
CREATE TABLE `sl_company` (`company_id` int(11) NOT NULL AUTO_INCREMENT,`company_name` varchar(50) DEFAULT NULL,`full_name` varchar(100) DEFAULT NULL,`web` varchar(45) DEFAULT NULL,`address` varchar(100) DEFAULT NULL,`postcode` varchar(45) DEFAULT NULL,`phone` varchar(45) DEFAULT NULL,`email` varchar(45) DEFAULT NULL,PRIMARY KEY (`company_id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;-- ----------------------------
-- Records of sl_company
-- ----------------------------
INSERT INTO `sl_company` VALUES ('1', '锐客科技1', '上海锐客科技股份有限公司', 'www.codeman.cn', '上海市浦东新区峨山路91弄97号陆家嘴软件园5号楼3层', '200127', '4008202993', 'not-contact-me@codeman.cn');

3、由于每一个数据持久层框架都需要一个与数据库连接的配置文件,同样在src/main/resource下新建一个mybatis.xml文件,文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><environments default="development"><environment id="development"><!-- 配置事务管理器 --><transactionManager type="JDBC" /><!-- 配置数据库连接信息 --><dataSource type="POOLED"><property name="driver" value="com.mysql.jdbc.Driver" /><property name="url" value="jdbc:mysql://localhost:3306/mybatis" /><property name="username" value="root" /><property name="password" value="root" /></dataSource></environment></environments></configuration>

4、定义表所对应的实体类,包结构如下, 需要注意的是实体类属性的名称与表中字段名称一致:

package com.mybatis.entity;import java.io.Serializable;public class SlCompany implements Serializable {private static final long serialVersionUID = 1L;/*** company_id:*/private int company_id;/*** company_name:*/private String company_name;/*** full_name:*/private String full_name;/*** web:*/private String web;/*** address:*/private String address;/*** postcode:*/private String postcode;/*** phone:*/private String phone;/*** email:*/private String email;public SlCompany() {super();}public SlCompany(int company_id, String company_name, String full_name, String web, String address, String postcode,String phone, String email) {super();this.company_id = company_id;this.company_name = company_name;this.full_name = full_name;this.web = web;this.address = address;this.postcode = postcode;this.phone = phone;this.email = email;}public int getCompany_id() {return company_id;}public void setCompany_id(int company_id) {this.company_id = company_id;}public String getCompany_name() {return company_name;}public void setCompany_name(String company_name) {this.company_name = company_name;}public String getFull_name() {return full_name;}public void setFull_name(String full_name) {this.full_name = full_name;}public void setWeb(String web) {this.web = web;}public String getWeb() {return web;}public void setAddress(String address) {this.address = address;}public String getAddress() {return address;}public void setPostcode(String postcode) {this.postcode = postcode;}public String getPostcode() {return postcode;}public void setPhone(String phone) {this.phone = phone;}public String getPhone() {return phone;}public void setEmail(String email) {this.email = email;}public String getEmail() {return email;}}

5、新建一个包,该包专门放置配置文件,并且新建一个slCompanyMapper.xml文件,包结构如下:


文件内容如下:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- 需要为mapper元素指定namespace属性,这个属性的作用是为了将该映射声明为唯一的,以便后续可以通过该命名空间直接调用 -->
<!-- 该命名空间的格式是包名+该映射文件的名字 -->
<mapper namespace="com.mybatis.mappings.slCompanyMapper"><!-- 根据id查询得到一个user对象 --><!-- parameterType属性标识查询传入参数的类型 --><!-- resultType属性标识该查询执行完毕后的返回值类型 --><select id="getSlCompany" parameterType="int" resultType="com.mybatis.entity.SlCompany">select * from sl_company where company_id=#{id}</select>
</mapper>

6、修改mybatis.xml文件内容,添加将上述 slCompanyMapper.xml配置到mybatis.xml里面去:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><environments default="development"><environment id="development"><!-- 配置事务管理器 --><transactionManager type="JDBC" /><!-- 配置数据库连接信息 --><dataSource type="POOLED"><property name="driver" value="com.mysql.jdbc.Driver" /><property name="url" value="jdbc:mysql://localhost:3306/mybatis" /><property name="username" value="root" /><property name="password" value="root" /></dataSource></environment></environments><mappers><mapper resource="com/mybatis/mappings/slCompanyMapper.xml"/></mappers></configuration>

7、编写测试类,代码如下:

package com.mybatis.test;import java.io.IOException;
import java.io.InputStream;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 com.mybatis.entity.SlCompany;public class MyBatisTest {public static void main(String[] args) throws IOException {// mybatis提供了Resources类用来提供简易方式来获取各种来源的资源文件信息// 获取mybatis.xml的字节流InputStream is = Resources.getResourceAsStream("mybatis.xml");// 获取mybatis.xml的字符流//Reader reader = Resources.getResourceAsReader("mybatis.xml");// 构建SqlSessionFactory对象,传入字符流或字节流均可SqlSessionFactory SqlSessionFactory = new SqlSessionFactoryBuilder().build(is);// 获取SqlSession对象SqlSession sqlSession = SqlSessionFactory.openSession();// 执行查询操作// selectOne()方法的第一个参数是由slCompanyMapper.xml里配置的mapper的namespace属性 + 该mapper下select元素的id属性值组成的SlCompany slCompany = sqlSession.selectOne("com.mybatis.mappings.slCompanyMapper.getSlCompany", 1);System.out.println(slCompany.getCompany_name());}
}

执行后发现,数据库中的符合条件的公司名称确实被打印出来了;

通过以上示例,我们可以得知MyBatis需要以下几个配置信息:

a)一个配置数据库连接信息,以及整合各种mapper信息的文件,比如该例的mybatis.xml

b)一个专门配置对各种SQL进行唯一的映射文件,如本例中的slCompanyMapper.xml

c)mybatis框架的三个常用API:Resources、SqlSessionFactory、SqlSessionFactoryBuilder、SqlSession的使用

即通过Resources资源类获取各种资源来源的配置信息

通过SqlSessionFactoryBuilder获取对应的SqlSessionFactory对象

通过SqlSessionFactory获取SQL执行者SqlSession对象

通过SqlSession,通过传入唯一映射SQL的id执行对应的SQL,获取指定类型的结果

以上,是一个入门级的MyBatis例子,可以大体看出MyBatis的轮廓,后续会逐渐解开MyBatis更多的面纱;

MyBatis由浅入深学习总结之一:MyBatis入门案例相关推荐

  1. MyBatis由浅入深学习总结之二:MyBatis解决Java实体类和数据库表字段不一致方法总结

    在此,首先说明一点任何持久性框架都需要解决一个问题,那就是Java实体类的字段一般来说基本上会与数据库表中字段不一致,那么它们是如何解决的呢?咱们以Hibernate和SpringJDBC为例说明一下 ...

  2. 传智_Springmvc+Mybatis由浅入深全套视频教程(燕青)-mybatis笔记(两天)(2017年8月5日16:09:55)

    专业实习消耗了半个月,学习进度一度停滞.mybatis基本的使用不难,和hibernate相比各有优势吧,不是一个风格的框架. mybatis笔记整理如下: 笔记链接:http://download. ...

  3. Mybatis基础学习之一级缓存和二级缓存的简单使用

    前言: 小伙伴们,大家好,我是狂奔の蜗牛rz,当然你们可以叫我蜗牛君,我是一个学习Java半年多时间的小菜鸟,同时还有一个伟大的梦想,那就是有朝一日,成为一个优秀的Java架构师. 这个Mybatis ...

  4. Mybatis学习IDEA(1)-环境搭建以及入门案例

    Mybatis的环境搭建: 第一步:创建Maven项目 new Project->Maven->next->GroupId(反写域名如:com.itheima)ArtifactID( ...

  5. MyBatis-学习笔记02【02.Mybatis入门案例】

    Java后端 学习路线 笔记汇总表[黑马程序员] MyBatis-学习笔记01[01.Mybatis课程介绍及环境搭建][day01] MyBatis-学习笔记02[02.Mybatis入门案例] M ...

  6. mybatis基于注解的入门案例

    mybatis基于注解的入门案例:             把IUserDao.xml移除,在dao接口的方法上使用@Select注解,并且指定SQL语句             同时需要在SqlMa ...

  7. MyBatis Plus简介和入门案例

    简介 MyBatis-Plus(以下简称MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发.提高效率而生. 润物无声 只做增强不做改变,引入它不会对现有 ...

  8. (spingboot入门案例)SpingBoot整合mybatis(mySql)

    仅供参考 目录结构: 环境: idea,mysql(8.0.29) 1.新建项目 1. 2.Project SDK选择自己对应的java版本 url选第二个,使用阿里的镜像:http://start. ...

  9. MyBatis学习总结(1)——MyBatis快速入门

    2019独角兽企业重金招聘Python工程师标准>>> 一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所 ...

最新文章

  1. 根据矩阵变化实现基于 HTML5 的 WebGL 3D 自动布局
  2. 去分库分表的亿级数据NewSQL实践之旅
  3. 联合国粮农组织总干事屈冬玉 对话国际农民丰收节贸易会
  4. 小眼睛有多惨?美颜都懒得救你......
  5. 「ubuntu」在Ubuntu Server 16.04 LTS下安装VMware Tools(转)
  6. pdfplumber库解析pdf格式
  7. navicat和mysql有必要都装吗_MySQL基本介绍及Navicat安装
  8. Android9.0 PM机制系列(二)PackageInstaller安装APK
  9. 详细讲解Socket服务器与多客户端的长链接通信(含Demo)
  10. cachecloud:安装部署(一)
  11. 小程序服务器mp4文件,如何添加小程序视频链接及获取MP4格式视频
  12. css 识别屏幕大小自适应
  13. 联想小新固态硬盘安装Win7或者win10过程
  14. latex : 常见编译错误记录
  15. ossec支持mysql数据库_开源入侵检测工具ossec安装配置(HIDS)
  16. 科创板|龙软科技国科环宇等4公司中止审核
  17. 要求: 编写一个程序,提示用户输入: 姓名 ,身份证号(需要一次输完,中间用逗号分隔)随后打印用户的星座。 提示:输入功能用C实现会很简单,其他语言的话,就不用输入姓名和逗号了,直接输入身份证号就
  18. Scrapy爬取知乎Python专题精华,连答主头像都给爬下来,不放过一切
  19. 使用Arduino制作一款数字键盘安全门锁
  20. python for循环结构_python 循环结构(for-in)

热门文章

  1. 在CentOS7上安装配置Corosync高可用集群过程全记录
  2. ListT转换为DataTable
  3. IOS经常使用的性能优化策略
  4. eclipse常用窗口和功能总结
  5. NodeJS 正则路由匹配
  6. JQuery源码笔记jQuery.access研究学习(13)
  7. 一些UED网址的收藏
  8. 用css及jQuery实现的精美拉下菜单导航条
  9. 负margin几种用法的总结
  10. 将已有项目转为se项目_如何将 Java 项目转换成 Maven 项目