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 集合。

01-MyBatis入门程序相关推荐

  1. Mybatis入门程序增删改查操作

    学习目标 了解Mybatis的基本知识 熟悉Mybatis的工作原理 掌握Mybatis入门程序的编写 文章目录 1.初始Mybatis 2.Mybatis入门程序 3.Mybatis操作总结 1.初 ...

  2. JavaWeb——MyBatis入门程序

    一.引言 一般MyBatis与springMVC常常一起使用,而且与hibernate相比有着天然的优势,继续推进. MyBatis应用程序根据XML配置文件创建SqlSessionFactory,S ...

  3. 使用Eclips开发Mybatis入门程序

    MyBatis入门程序 数据库 本程序所需数据库 mybatisuser,表user不再细述. 环境配置 导入jia包,mybatis-3.5.7.jar,mysql-connector-java-5 ...

  4. 01.MyBatis入门

    MyBatis入门: 第一天接触Mybatis,总结一下入门案例的流程: 首先导入Mybatis的jar包和数据库的驱动包 1.创建数据表和实体类 2.创建一个表和实体类映射的xml配置文件,具体配置 ...

  5. Mybatis入门程序

    Mybatis入门:log4j配置.全局配置.mapper配置.测试类四部分 >log4j配置 #info,error. log4j.rootLogger=debug,stdout # log4 ...

  6. 【MyBatis框架】MyBatis入门程序第二部分

    我们通过写一个简单的MyBatis小项目来在实战中学习MyBatis,接着上一篇继续 我们开始实现需求中的添加和删除用户功能 (1)向数据库中添加用户数据 使用User.xml,加入添加用户的sql语 ...

  7. 【MyBatis框架】MyBatis入门程序第一部分

    为什么80%的码农都做不了架构师?>>>    我们通过写一个简单的MyBatis小项目来在实战中学习MyBatis 1.需求 根据用户id(主键)查询用户信息 根据用户名称模糊查询 ...

  8. Mybatis入门程序一(环境搭建,入门程序)

    Mybatis的环境搭建:用的是IDEA+mybatis.jar包(可以从官网下载,也可以到我的主页下载) 本项目使用的是maven工程建立的 1.首先看一下目录: 2.首先看一下pom.xml的配置 ...

  9. 【MyBatis笔记】01-MyBatis入门程序

    MyBatis入门程序 1. 下载 Mybatis 核心包 2. 创建工程,引入 MyBatis 核心包及依赖包 3. 创建 customer 表,建立与表对应的 domain 使用 lombok,开 ...

最新文章

  1. 入职第一天,老板竟然让我优化5亿数据量,要凉凉?
  2. linux c 命令行解析 getopt getopt_long optarg optind opterr optopt 简介
  3. QoS策略及通过BGP传播—Vecloud微云
  4. .Net下的签名与混淆
  5. IntelliJ IDEA内存优化最佳实践(转)
  6. RabbitMQ消息确认机制
  7. http2.0和http1.1的区别
  8. paip.提升用户体验-----找回密码的设
  9. Python帮助文档的设置
  10. 【系统分析师之路】系统分析师冲刺习题集(数学与经济管理)
  11. windows7计算机不显示光驱,win7系统检测不到光驱的解决方法
  12. hustoj 服务器配置
  13. 概率论与数理统计学习笔记(1)——t检验与P值
  14. RADIUS协议基础原理
  15. MFC 通用对话框之“浏览“对话框
  16. 文本自动校对技术研究综述
  17. Linux关闭防火墙
  18. MySQL varchar类型可以存储多少个汉字
  19. QT学习串口编程之串口软件的UI设计
  20. TeamView: 为了进一步增强安全性,在发起连接之前,我们希望您先验证您的账户

热门文章

  1. [Java基础]Map集合基础
  2. Adapter(适配器)--类对象结构型模式
  3. equals, hashCode, toString方法重写,深入探究equals
  4. linux系统中变量,Linux系统中的环境变量知识详解
  5. miller_rabin 证明与实现
  6. Educational Codeforces Round 32 G. Xor-MST 01tire + 分治 + Boruvka
  7. Codeforces Round #257 (Div. 1) D. Jzzhu and Numbers 高维前缀和 + 容斥
  8. HTTP协议支持的方法
  9. P2564 [SCOI2009]生日礼物
  10. 【每日一题】4月6日数码