【MyBatis笔记】01-MyBatis入门程序
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入门程序相关推荐
- Bootstrap响应式Web开发笔记01——基础入门
Bootstrap响应式Web开发笔记01--基础入门 Bootstrap响应式Web开发笔记02--移动端页面布局 Bootstrap响应式Web开发笔记03--Bootstrap栅格系统 Boot ...
- 软件测试自学笔记01:入门综述
一.体系 操作系统基础 软件开发知识 软件测试理论和实战 自动化测试工具 项目实训 二.测试工具 功能自动化测试:QTP/UFT, Selenium 性能自动化测试:Loadrunner, Jmete ...
- 【Mybatis笔记】mybatis实现mysql增删改查
namespace中的报名和Dao/mapper接口一致 id:对应namespace中方法名 resultType:sql语句执行的返回值 parameterType:参数类型 只需要改动接口,接口 ...
- 学习笔记(01):C++入门课程-06.浮点数
立即学习:https://edu.csdn.net/course/play/27250/359781?utm_source=blogtoedu const int test = 1 常量 int te ...
- MySQL笔记01: MySQL入门_1.2 MySQL下载安装与配置
2.2 MySQL下载安装与配置 2.2.1 MySQL下载 MySQL中文官网:MySQL MySQL英文官网:MySQL MySQL官网下载地址:MySQL :: MySQL Downloads ...
- mybatis学习笔记(3)-入门程序一
2019独角兽企业重金招聘Python工程师标准>>> mybatis学习笔记(3)-入门程序一 标签: mybatis [TOC] 工程结构 在IDEA中新建了一个普通的java项 ...
- 黑马程序员-MyBatis 框架-最全入门笔记、阿伟看了都得说真大、真细、真全!!!
MyBaits 写在最前 本篇文章是我学完黑马程序员 JavaWeb MyBatis 的总结分享,定位呢是最大小白友好的快速入门,欢迎大家一起交流技术! 文章目录 MyBaits 代码仓库 MyBat ...
- MyBatis-学习笔记01【01.Mybatis课程介绍及环境搭建】
Java后端 学习路线 笔记汇总表[黑马程序员] MyBatis-学习笔记01[01.Mybatis课程介绍及环境搭建][day01] MyBatis-学习笔记02[02.Mybatis入门案例] M ...
- MyBatis 01 快速入门
MyBatis 01 快速入门 文章目录 MyBatis 01 快速入门 一.学习目标 二.为什么需要框架技术 三.框架技术介绍 四.主流框架介绍 五.持久化与ORM 六.MyBatis简介 七.搭建 ...
最新文章
- Keep裁员、程序员被抓,看了下行情,我选择投奔AI
- LeetCode 176. Second Highest Salary--Database--数据库题目
- sql 执行顺序_10个简单步骤,完全理解SQL
- 【XAudio2】4.库版本
- 回顾线程的竞争机制-轻量级锁
- 交换机MAC地址学习和转发数据帧的原理
- CSS3开发总结(圆角、盒阴影、边界图片)
- 浅谈web前端理解一(前端学习路线)
- Sharepoin学习笔记—架构系列--04 Sharepoint的四种执行模型 1
- easyexcel 工具类_问了个在阿里的同学,他们常用的15款开发者工具!
- 完整、详细的MySQL规范
- 谈谈在深圳挤公交那些事
- 常用期刊、会议的简称缩写(深度学习图像处理领域)
- 物联网小课堂之模组SIM卡相关秘籍
- 输入一个整数,判断它是几位数
- 9大日常不良习惯致癌
- jk触发器改为四进制_四位二进制计数器这样接成十进制计数器
- USB OTG模式及切换
- 天线工程手册_“大神”给工控工程师快速成长的6点建议,看完你会少走弯路...
- 二维计算机动画基础,二维计算机动画制作新技术分析
热门文章
- 老板看似表面风光,可能还没有员工赚得多
- 有人说苹果手机的CPU非常强大,为什么会这样?苹果cpu又是谁设计的?
- 你用什么型号手机呢?体验如何?
- 【以太坊源码】以太坊黄皮书参数
- 听力技巧-4大难点讲析
- Java-类型转换,String转Object和Object转String
- Collat​​e SQL命令概述
- t–sql pl–sql_不正确SQL Server统计信息– SQL查询性能的杀手–基本知识
- SpringBoot项目从Git拉取代码并完成编译打包启动的sh自动脚本
- Jmeter 获取、读取token 供其他 HTTP 请求调用