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 核心包
2. 创建工程,引入 MyBatis 核心包及依赖包
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>
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
01-MyBatis入门程序相关推荐
- Mybatis入门程序增删改查操作
学习目标 了解Mybatis的基本知识 熟悉Mybatis的工作原理 掌握Mybatis入门程序的编写 文章目录 1.初始Mybatis 2.Mybatis入门程序 3.Mybatis操作总结 1.初 ...
- JavaWeb——MyBatis入门程序
一.引言 一般MyBatis与springMVC常常一起使用,而且与hibernate相比有着天然的优势,继续推进. MyBatis应用程序根据XML配置文件创建SqlSessionFactory,S ...
- 使用Eclips开发Mybatis入门程序
MyBatis入门程序 数据库 本程序所需数据库 mybatisuser,表user不再细述. 环境配置 导入jia包,mybatis-3.5.7.jar,mysql-connector-java-5 ...
- 01.MyBatis入门
MyBatis入门: 第一天接触Mybatis,总结一下入门案例的流程: 首先导入Mybatis的jar包和数据库的驱动包 1.创建数据表和实体类 2.创建一个表和实体类映射的xml配置文件,具体配置 ...
- Mybatis入门程序
Mybatis入门:log4j配置.全局配置.mapper配置.测试类四部分 >log4j配置 #info,error. log4j.rootLogger=debug,stdout # log4 ...
- 【MyBatis框架】MyBatis入门程序第二部分
我们通过写一个简单的MyBatis小项目来在实战中学习MyBatis,接着上一篇继续 我们开始实现需求中的添加和删除用户功能 (1)向数据库中添加用户数据 使用User.xml,加入添加用户的sql语 ...
- 【MyBatis框架】MyBatis入门程序第一部分
为什么80%的码农都做不了架构师?>>> 我们通过写一个简单的MyBatis小项目来在实战中学习MyBatis 1.需求 根据用户id(主键)查询用户信息 根据用户名称模糊查询 ...
- Mybatis入门程序一(环境搭建,入门程序)
Mybatis的环境搭建:用的是IDEA+mybatis.jar包(可以从官网下载,也可以到我的主页下载) 本项目使用的是maven工程建立的 1.首先看一下目录: 2.首先看一下pom.xml的配置 ...
- 【MyBatis笔记】01-MyBatis入门程序
MyBatis入门程序 1. 下载 Mybatis 核心包 2. 创建工程,引入 MyBatis 核心包及依赖包 3. 创建 customer 表,建立与表对应的 domain 使用 lombok,开 ...
最新文章
- 入职第一天,老板竟然让我优化5亿数据量,要凉凉?
- linux c 命令行解析 getopt getopt_long optarg optind opterr optopt 简介
- QoS策略及通过BGP传播—Vecloud微云
- .Net下的签名与混淆
- IntelliJ IDEA内存优化最佳实践(转)
- RabbitMQ消息确认机制
- http2.0和http1.1的区别
- paip.提升用户体验-----找回密码的设
- Python帮助文档的设置
- 【系统分析师之路】系统分析师冲刺习题集(数学与经济管理)
- windows7计算机不显示光驱,win7系统检测不到光驱的解决方法
- hustoj 服务器配置
- 概率论与数理统计学习笔记(1)——t检验与P值
- RADIUS协议基础原理
- MFC 通用对话框之“浏览“对话框
- 文本自动校对技术研究综述
- Linux关闭防火墙
- MySQL varchar类型可以存储多少个汉字
- QT学习串口编程之串口软件的UI设计
- TeamView: 为了进一步增强安全性,在发起连接之前,我们希望您先验证您的账户
热门文章
- [Java基础]Map集合基础
- Adapter(适配器)--类对象结构型模式
- equals, hashCode, toString方法重写,深入探究equals
- linux系统中变量,Linux系统中的环境变量知识详解
- miller_rabin 证明与实现
- Educational Codeforces Round 32 G. Xor-MST 01tire + 分治 + Boruvka
- Codeforces Round #257 (Div. 1) D. Jzzhu and Numbers 高维前缀和 + 容斥
- HTTP协议支持的方法
- P2564 [SCOI2009]生日礼物
- 【每日一题】4月6日数码