MyBatis入门程序

  • 1. 下载 Mybatis 核心包
  • 2. 创建工程,引入 MyBatis 核心包及依赖包
  • 3. 创建 customer 表,建立与表对应的 domain
    • 使用 lombok,开启注解
    • 创建 Customer 类
  • 4. 创建 MyBatis 核心配置文件 SqlMappingConfig.xml
  • 5. 创建表对象的关系映射 Mapping 文件编写 sql 语句
  • 6. 在核心配置文件当中引入 Mapping
  • 7. 创建工厂,执行 sql 语句
  • 抽取工具类
  • MyBatis 查询所有用户
  • MyBatis 整体架构
  • 总结
    • parameterType
    • resultType
    • selectOne
    • selectList

1. 下载 Mybatis 核心包

MyBatis官网
MyBatis-github下载地址

2. 创建工程,引入 MyBatis 核心包及依赖包

这里为了方便学习,我们利用 Idea 创建一个普通的 Java 工程,后期再整合成 Web 工程。
创建完工程后,新建一个 lib 文件夹用来存放jar包。将 MyBatis 所需的jar包都放到 lib 文件夹中。
然后选中所有jar包,右键选择 add as library,将jar包添加到工程中,jar包前面出现箭头则添加完成。

3. 创建 customer 表,建立与表对应的 domain

首先进入数据库的图形化工具,然后创建一个 叫 mybatis 的数据库,字符集设为 utf-8;

在 mybatis 数据库中,创建一个表,建表语句如下:

/*
Navicat MySQL Data TransferSource Server         : itlike
Source Server Version : 50720
Source Host           : localhost:3306
Source Database       : mybatisTarget Server Type    : MYSQL
Target Server Version : 50720
File Encoding         : 65001Date: 2018-12-04 14:13:49
*/SET FOREIGN_KEY_CHECKS=0;-- ----------------------------
-- Table structure for customer
-- ----------------------------
DROP TABLE IF EXISTS `customer`;
CREATE TABLE `customer` (`cust_id` int(11) NOT NULL AUTO_INCREMENT,`cust_name` varchar(255) DEFAULT NULL,`cust_profession` varchar(255) DEFAULT NULL,`cust_phone` varchar(255) DEFAULT NULL,`email` varchar(255) DEFAULT NULL,PRIMARY KEY (`cust_id`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;-- ----------------------------
-- Records of customer
-- ----------------------------
INSERT INTO `customer` VALUES ('1', '鲁班', '射手', '13499887733', '12341241@qq.com');
INSERT INTO `customer` VALUES ('2', '李白', '刺客', '18977665521', 'libai@163.com');
INSERT INTO `customer` VALUES ('3', '阿轲', '刺客', '18977665997', 'aike@qq.com');
INSERT INTO `customer` VALUES ('4', '德玛西亚', '肉盾', '13700997665', 'demaxiya.126.com6');
INSERT INTO `customer` VALUES ('5', '亚索', '战士', '13586878987', 'yasuo@qq.com');
INSERT INTO `customer` VALUES ('6', '奶妈', '辅助', '13398909089', 'nama@qq.com');
INSERT INTO `customer` VALUES ('7', '剑圣', '刺客', '13398909088', 'jiansheng@163.com');
INSERT INTO `customer` VALUES ('8', '盖伦', '肉盾', '15923242231', 'gailun@126.com');
INSERT INTO `customer` VALUES ('9', '锤石', '辅助', '13398908900', '8888@163.com');
INSERT INTO `customer` VALUES ('10', '阿木木', '辅助', '13398908928', '13398908928@qq.com');

建表如图:

使用 lombok,开启注解

使用 lombok 可以使用注解功能,注解可以减少代码量。
首先要导入 lombok 的jar包,要使用注解必须在设置里勾选支持注解,如下图:

创建 Customer 类

@Setter@Getter //使用注解生成 get 与 set 方法
public class Customer {private Integer cust_id;private String cust_name;private String cust_profession;private String cust_phone;private String email;@Overridepublic String toString() {return "Customer{" +"cust_id=" + cust_id +", cust_name='" + cust_name + '\'' +", cust_profession='" + cust_profession + '\'' +", cust_phone='" + cust_phone + '\'' +", email='" + email + '\'' +'}';}
}

4. 创建 MyBatis 核心配置文件 SqlMappingConfig.xml

在 src 文件下,创建一个 SqlMappingConfig.xml 文件,里面写入配置代码:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><!-- spring整合后 environments配置将废除 使用spring中的连接池 --><environments default="development"><environment id="development"><!-- 使用jdbc事务管理 --><transactionManager type="JDBC" /><!-- 数据库连接池 --><dataSource type="POOLED"><property name="driver" value="com.mysql.jdbc.Driver" /><property name="url"value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8" /><property name="username" value="root" /><property name="password" value="1234" /></dataSource></environment></environments>
</configuration>

5. 创建表对象的关系映射 Mapping 文件编写 sql 语句

在 domain 包下创建一个与 domain 类名相同的 xml 文件,此处为 Customer.xml,在里面写入编写 sql 语句:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="myTest"><!--根据cust_id查询客户--><select id="queryCustomerById" parameterType="Int" resultType="com.itlike.domain.Customer">SELECT * FROM `customer` WHERE cust_id  = #{cust_id}</select>
</mapper>

6. 在核心配置文件当中引入 Mapping

核心配置文件 SqlMappingConfig.xml 中,加载映射文件:

<!--加载映射文件-->
<mappers><mapper resource="com/myxq/domain/Customer.xml"></mapper>
</mappers>

7. 创建工厂,执行 sql 语句

创建一个测试类 MyTest.java,位于 com.itlike.test 包中,利用单元测试运行代码:

public class MyTest {@Testpublic void test() throws IOException {// 1.sqlSessionFactoryBuilder 加载配置文件SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();// 2.读取配置文件InputStream resourceAsStream = Resources.getResourceAsStream("sqlMappingConfig.xml");// 3.获取session工厂SqlSessionFactory sessionFactory = sqlSessionFactoryBuilder.build(resourceAsStream);// 4.获取会话 ---JDBC 连接SqlSession sqlSession = sessionFactory.openSession();// 5.执行sql// selectOne 查询一条记录,如果查询多条记录会抛出异常Customer customer = sqlSession.selectOne("queryCustomerById", 1); // 查询 ID 为1 的数据System.out.println(customer);// 6.关闭sessionsqlSession.close();}}

运行结果:成功从数据库中查询到单个用户的数据。

Customer{cust_id=2, cust_name='李白', cust_profession='刺客', cust_phone='18977665521', email='libai@163.com'}

抽取工具类

在 MyBatis 中有些资源只需要加载一次,并且每次做查询时都是大量相同的代码,因此我们可以抽取出一个工具类,专门用来加载资源。

创建一个 MybatisUtils.java 文件作为工具类:

// 抽取工具类
public class MybatisUtils {public static final SqlSessionFactory sessionFactory;static { // 由于这些东西只需要加载一次,所以放入 static 代码块中// 1.获取 SqlSessionFactoryBuilderSqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();// 2.加载映射文件InputStream resourceAsStream = null;try {resourceAsStream = Resources.getResourceAsStream("sqlMappingConfig.xml");} catch (IOException e) {e.printStackTrace();}// 3.获取 sessionFactorysessionFactory = sqlSessionFactoryBuilder.build(resourceAsStream);}public static SqlSession openSession(){return sessionFactory.openSession();}}

抽取出工具类之后,之前的代码就变得十分简洁了。
测试类 MyTest.java

public class MyTest {@Testpublic void test() {// 调用Mybatis工具类SqlSession sqlSession = MybatisUtils.openSession();// 5.sql 查询Customer customer = sqlSession.selectOne("queryCustomerById", 1);System.out.println(customer);// 6.关闭会话sqlSession.close();}
}

MyBatis 查询所有用户

上面的测试代码中查询了 id 为 1 的用户,这次我们来实现查询所有用户:
在 MyBatis 中,sql 语句都是写在表对象的关系映射中的,我们在 Customer.xml 中添加以下语句:

<!--查询所有的客户,不需要参数-->
<select id="queryAllCustomer" resultType="com.itlike.domain.Customer">
SELECT * FROM `customer`
</select>

然后来到测试类 MyTest.java 中:

public void test2(){// 调用工具类SqlSession sqlSession = MybatisUtils.openSession();// 查询 sql// selectList() 查询一条或多记录,返回 List 集合List<Customer> queryAllCustomer = sqlSession.selectList("queryAllCustomer");for (Customer customer : queryAllCustomer) {System.out.println(customer);}
}

运行结果:表中所有数据都被查出。

Customer{cust_id=1, cust_name='鲁班', cust_profession='射手', cust_phone='13499887733', email='12341241@qq.com'}
Customer{cust_id=2, cust_name='李白', cust_profession='刺客', cust_phone='18977665521', email='libai@163.com'}
Customer{cust_id=3, cust_name='阿轲', cust_profession='刺客', cust_phone='18977665997', email='aike@qq.com'}
Customer{cust_id=4, cust_name='德玛西亚', cust_profession='肉盾', cust_phone='13700997665', email='demaxiya.126.com6'}
Customer{cust_id=5, cust_name='亚索', cust_profession='战士', cust_phone='13586878987', email='yasuo@qq.com'}
Customer{cust_id=6, cust_name='奶妈', cust_profession='辅助', cust_phone='13398909089', email='nama@qq.com'}
Customer{cust_id=7, cust_name='剑圣', cust_profession='刺客', cust_phone='13398909088', email='jiansheng@163.com'}
Customer{cust_id=8, cust_name='盖伦', cust_profession='肉盾', cust_phone='15923242231', email='gailun@126.com'}
Customer{cust_id=9, cust_name='锤石', cust_profession='辅助', cust_phone='13398908900', email='8888@163.com'}
Customer{cust_id=10, cust_name='阿木木', cust_profession='辅助', cust_phone='13398908928', email='13398908928@qq.com'}

MyBatis 整体架构

总结

parameterType

指定输入参数类型,mybatis 通过 ognl 从输入对象中获取参数值拼接在 sql 中。

resultType

指定输出结果类型,mybatis 将 sql 查询结果的一行记录数据映射为 resultType 指定类型的对象。如果有多条数据,则分别进行映射,并把对象放到容器List中。

selectOne

查询一条记录,如果使用 selectOne 查询多条记录则抛出异常。

selectList

可以查询一条或多条记录,返回一个 List 集合。

【MyBatis笔记】01-MyBatis入门程序相关推荐

  1. Bootstrap响应式Web开发笔记01——基础入门

    Bootstrap响应式Web开发笔记01--基础入门 Bootstrap响应式Web开发笔记02--移动端页面布局 Bootstrap响应式Web开发笔记03--Bootstrap栅格系统 Boot ...

  2. 软件测试自学笔记01:入门综述

    一.体系 操作系统基础 软件开发知识 软件测试理论和实战 自动化测试工具 项目实训 二.测试工具 功能自动化测试:QTP/UFT, Selenium 性能自动化测试:Loadrunner, Jmete ...

  3. 【Mybatis笔记】mybatis实现mysql增删改查

    namespace中的报名和Dao/mapper接口一致 id:对应namespace中方法名 resultType:sql语句执行的返回值 parameterType:参数类型 只需要改动接口,接口 ...

  4. 学习笔记(01):C++入门课程-06.浮点数

    立即学习:https://edu.csdn.net/course/play/27250/359781?utm_source=blogtoedu const int test = 1 常量 int te ...

  5. MySQL笔记01: MySQL入门_1.2 MySQL下载安装与配置

    2.2 MySQL下载安装与配置 2.2.1 MySQL下载 MySQL中文官网:MySQL MySQL英文官网:MySQL MySQL官网下载地址:MySQL :: MySQL Downloads ...

  6. mybatis学习笔记(3)-入门程序一

    2019独角兽企业重金招聘Python工程师标准>>> mybatis学习笔记(3)-入门程序一 标签: mybatis [TOC] 工程结构 在IDEA中新建了一个普通的java项 ...

  7. 黑马程序员-MyBatis 框架-最全入门笔记、阿伟看了都得说真大、真细、真全!!!

    MyBaits 写在最前 本篇文章是我学完黑马程序员 JavaWeb MyBatis 的总结分享,定位呢是最大小白友好的快速入门,欢迎大家一起交流技术! 文章目录 MyBaits 代码仓库 MyBat ...

  8. MyBatis-学习笔记01【01.Mybatis课程介绍及环境搭建】

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

  9. MyBatis 01 快速入门

    MyBatis 01 快速入门 文章目录 MyBatis 01 快速入门 一.学习目标 二.为什么需要框架技术 三.框架技术介绍 四.主流框架介绍 五.持久化与ORM 六.MyBatis简介 七.搭建 ...

最新文章

  1. Keep裁员、程序员被抓,看了下行情,我选择投奔AI
  2. LeetCode 176. Second Highest Salary--Database--数据库题目
  3. sql 执行顺序_10个简单步骤,完全理解SQL
  4. 【XAudio2】4.库版本
  5. 回顾线程的竞争机制-轻量级锁
  6. 交换机MAC地址学习和转发数据帧的原理
  7. CSS3开发总结(圆角、盒阴影、边界图片)
  8. 浅谈web前端理解一(前端学习路线)
  9. Sharepoin学习笔记—架构系列--04 Sharepoint的四种执行模型 1
  10. easyexcel 工具类_问了个在阿里的同学,他们常用的15款开发者工具!
  11. 完整、详细的MySQL规范
  12. 谈谈在深圳挤公交那些事
  13. 常用期刊、会议的简称缩写(深度学习图像处理领域)
  14. 物联网小课堂之模组SIM卡相关秘籍
  15. 输入一个整数,判断它是几位数
  16. 9大日常不良习惯致癌
  17. jk触发器改为四进制_四位二进制计数器这样接成十进制计数器
  18. USB OTG模式及切换
  19. 天线工程手册_“大神”给工控工程师快速成长的6点建议,看完你会少走弯路...
  20. 二维计算机动画基础,二维计算机动画制作新技术分析

热门文章

  1. 老板看似表面风光,可能还没有员工赚得多
  2. 有人说苹果手机的CPU非常强大,为什么会这样?苹果cpu又是谁设计的?
  3. 你用什么型号手机呢?体验如何?
  4. 【以太坊源码】以太坊黄皮书参数
  5. 听力技巧-4大难点讲析
  6. Java-类型转换,String转Object和Object转String
  7. Collat​​e SQL命令概述
  8. t–sql pl–sql_不正确SQL Server统计信息– SQL查询性能的杀手–基本知识
  9. SpringBoot项目从Git拉取代码并完成编译打包启动的sh自动脚本
  10. Jmeter 获取、读取token 供其他 HTTP 请求调用