01、Mybatis快速入门
MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。
1.搭建开发环境
1.1 创建项目
创建Maven普通java项目或者是JavaWeb项目均可,如下图所示:
1.2 配置文件
在src/main/resource目录下新建log4j.properties和jdbc.properties配置文件:
log4j.properties和jdbc.properties配置文件的内容如下:
- log4j.properties:
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n log4j.rootLogger=DEBUG, stdout - jdbc.properties:
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf8&useSSL=true
jdbc.username=root
jdbc.password=root123
1.3 添加jar包
在pom.xml文件的<dependencies>下添加依赖的jar包:
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.5</version>
</dependency> <dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency> <dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.43</version>
</dependency> <dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
1.4 创建数据库
在MySQL中创建数据库mybatis和表,其中建表语句如下:
/*Table structure for table user */
CREATE TABLE USER (
id INT(11) NOT NULL AUTO_INCREMENT,
username VARCHAR(32) NOT NULL COMMENT '用户名称',
birthday DATE DEFAULT NULL COMMENT '生日',
sex CHAR(1) DEFAULT NULL COMMENT '性别',
address VARCHAR(256) DEFAULT NULL COMMENT '地址',
PRIMARY KEY (id)
); /*Table structure for table items */
CREATE TABLE items (
id INT(11) NOT NULL AUTO_INCREMENT,
NAME VARCHAR(32) NOT NULL COMMENT '商品名称',
price FLOAT(10,1) NOT NULL COMMENT '商品定价',
detail TEXT COMMENT '商品描述',
pic VARCHAR(64) DEFAULT NULL COMMENT '商品图片',
createtime DATETIME NOT NULL COMMENT '生产日期',
PRIMARY KEY (id)
); /*Table structure for table orders */
CREATE TABLE orders (
id INT(11) NOT NULL AUTO_INCREMENT,
user_id INT(11) NOT NULL COMMENT '下单用户id',
number VARCHAR(32) NOT NULL COMMENT '订单号',
createtime DATETIME NOT NULL COMMENT '创建订单时间',
note VARCHAR(100) DEFAULT NULL COMMENT '备注',
PRIMARY KEY (id),
KEY FK_orders_1 (user_id),
CONSTRAINT FK_orders_id FOREIGN KEY (user_id) REFERENCES USER (id) ON DELETE NO ACTION ON UPDATE NO ACTION
); /*Table structure for table orderdetail */
CREATE TABLE orderdetail (
id INT(11) NOT NULL AUTO_INCREMENT,
orders_id INT(11) NOT NULL COMMENT '订单id',
items_id INT(11) NOT NULL COMMENT '商品id',
items_num INT(11) DEFAULT NULL COMMENT '商品购买数量',
PRIMARY KEY (id),
KEY FK_orderdetail_1 (orders_id),
KEY FK_orderdetail_2 (items_id),
CONSTRAINT FK_orderdetail_1 FOREIGN KEY (orders_id) REFERENCES orders (id) ON DELETE NO ACTION ON UPDATE NO ACTION,
CONSTRAINT FK_orderdetail_2 FOREIGN KEY (items_id) REFERENCES items (id) ON DELETE NO ACTION ON UPDATE NO ACTION
);
1.5 导入数据
向表中插入项目需要的数据:
/*Data for the table user*/
INSERT INTO USER(id,username,birthday,sex,address) VALUES
(1,'王五',NULL,'',NULL),(10,'张三','2014-07-10','','北京市'),
(16,'张小明',NULL,'','河南郑州'),(22,'陈小明',NULL,'','河南郑州'),
(24,'张三丰',NULL,'','河南郑州'),(25,'陈小明',NULL,'','河南郑州'),
(26,'王五',NULL,NULL,NULL); /*Data for the table items*/
INSERT INTO items(id,NAME,price,detail,pic,createtime) VALUES
(1,'台式机',3000.0,'该电脑质量非常好!!!!',NULL,'2015-02-03 13:22:53'),
(2,'笔记本',6000.0,'笔记本性能好,质量好!!!!!',NULL,'2015-02-09 13:22:57'),
(3,'背包',200.0,'名牌背包,容量大质量好!!!!',NULL,'2015-02-06 13:23:02'); /*Data for the table `orders` */
INSERT INTO orders(id,user_id,number,createtime,note) VALUES
(3,1,'','2015-02-04 13:22:35',NULL),
(4,1,'','2015-02-03 13:22:41',NULL),
(5,10,'','2015-02-12 16:13:23',NULL); /*Data for the table `orderdetail` */
INSERT INTO orderdetail(id,orders_id,items_id,items_num) VALUES (1,3,1,1),(2,3,2,3),(3,4,3,4),(4,4,2,3);
2.使用MyBatis查询数据
2.1 创建MyBatis配置文件
在src/main/resource目录下新建mybatis文件夹,并添加Mybatis的配置文件SqlMapConfig.xml(文件名可以随便):
SqlMapConfig.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>
<!-- 加载属性文件 -->
<properties resource="jdbc.properties"></properties> <environments default="development">
<environment id="development">
<!-- 使用jdbc事务管理,事务控制由mybatis-->
<transactionManager type="JDBC"/>
<!-- 数据库连接池,由mybatis管理-->
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
</configuration>
2.2 创建实体类和映射文件
创建实体类User.java,在com.sunny.mybatis包下新建mapper包,在mapper包下创建User的映射文件UserMapper.xml(名字和位置可以随意):
User.java和UserMapper.xml文件的内容如下:
- User.java:
package com.sunny.mybatis.domain; import java.io.Serializable;
import java.util.Date; public class User implements Serializable {
private static final long serialVersionUID = 6856509574533500731L; private int id;
private String username;
private String sex;
private Date birthday;
private String address; public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public String getUsername() {
return username;
} public void setUsername(String username) {
this.username = username;
} public String getSex() {
return sex;
} public void setSex(String sex) {
this.sex = sex;
} public Date getBirthday() {
return birthday;
} public void setBirthday(Date birthday) {
this.birthday = birthday;
} public String getAddress() {
return address;
} public void setAddress(String address) {
this.address = address;
} } - UserMapper.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">
<!-- namespace命名空间,对sql进行分类化管理,注意:使用mapper代理方法开发,namespace有特殊重要的作用-->
<mapper namespace="user">
<!-- 通过 select执行数据库查询
id:标识映射文件中的sql,将sql语句封装到mappedStatement对象中,所以将id称为statement的id
parameterType:指定输入 参数的类型,这里指定int型
#{}表示一个占位符号
#{id}:其中的id表示接收输入 的参数,参数名称就是id,如果输入 参数是简单类型,#{}中的参数名可以任意,可以value或其它名称
resultType:指定sql输出结果 的所映射的java对象类型,select指定resultType表示将单条记录映射成的java对象。
-->
<select id="selectById" parameterType="int" resultType="com.sunny.mybatis.domain.User">
SELECT * FROM tuser WHERE id=#{id}
</select>
</mapper> 在SqlMapConfig.xml中注册UserMapper.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>
<!-- 加载属性文件 -->
<properties resource="jdbc.properties"></properties> <environments default="development">
<environment id="development">
<!-- 使用jdbc事务管理,事务控制由mybatis-->
<transactionManager type="JDBC"/>
<!-- 数据库连接池,由mybatis管理-->
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments> <!-- 加载映射文件 -->
<mappers>
<mapper resource="com/sunny/mybatis/mapper/UserMapper.xml"/>
</mappers>
</configuration>
2.3 测试
- 新建测试方法:
@Test
public void selectById() throws Exception {
//mybatis配置文件是以流的方式读取的Resource是mybatis包下的类
InputStream config = Resources.getResourceAsStream("mybatis/SqlMapConfig.xml");
//创建mybatis的会话工厂
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(config);
//通过会话工厂得到SqlSession
SqlSession session = sessionFactory.openSession();
/*执行查询,selectOne表示查询的结果为单条记录,
*user.selectById:
user表示映射文件中的namespace
selectById表示映射文件中的select标签中的id属性值
*参数中的1表示参入的值,和select标签中的parameterType类型匹配
*/
User user = session.selectOne("user.selectById", 1);
System.out.println(user.getId() + "-->" + user.getUsername() + "-->" + user.getBirthday());
//关闭session
session.close();
} - 运行结果:
01、Mybatis快速入门的更多相关文章
- 01.MyBatis快速入门
1.下载jar包 Mybatis包+数据库驱动包 https://github.com/mybatis/mybatis-3/releases 2.新建Java工程并导入jar包 3.创建数据库与表 C ...
- MyBatis学习总结(一)——MyBatis快速入门
一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以 ...
- MyBatis快速入门
一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以 ...
- MyBatis学习总结(一)——MyBatis快速入门(转载)
本文转载自http://www.cnblogs.com/jpf-java/p/6013537.html MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了 ...
- MyBatis入门学习教程-MyBatis快速入门
一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以 ...
- MyBatis学习总结(一)——MyBatis快速入门
一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以 ...
- 【转】MyBatis学习总结(一)——MyBatis快速入门
[转]MyBatis学习总结(一)——MyBatis快速入门 一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC ...
- MyBatis学习总结-MyBatis快速入门的系列教程
MyBatis学习总结-MyBatis快速入门的系列教程 [MyBatis]MyBatis 使用教程 [MyBatis]MyBatis XML配置 [MyBatis]MyBatis XML映射文件 [ ...
- MyBatis学习笔记(一)——MyBatis快速入门
转自孤傲苍狼的博客:http://www.cnblogs.com/xdp-gacl/p/4261895.html 一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优 ...
- Java基础-SSM之mybatis快速入门篇
Java基础-SSM之mybatis快速入门篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 其实你可能会问什么是SSM,简单的说就是spring mvc + Spring + m ...
随机推荐
- 学习java应该了解一些html超文本标记语言(前端)
在自己学习的过程中遇到一些内容,怕忘记所以借助博客加深印象也方便查找! html超文本标记语言中,分行级元素和块级元素. 行级元素的含义:行级元素不独占一行,相邻的行级元素在一行排列:行级元素可以控制 ...
- Luogu 1064 金明的预算方案 / CJOJ 1352 [NOIP2006] 金明的预算方案(动态规划)
Luogu 1064 金明的预算方案 / CJOJ 1352 [NOIP2006] 金明的预算方案(动态规划) Description 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己 ...
- LoadRunner接口工作总结
因为工作中需要开发维护类似枢纽性质的平台,所以经常利用LR进行接口测试.接口自动化测试.接口压力测试.用多了LR,有点不愿意使用报文编辑器进行手工接口测试了. 接口脚本操作过程: 首先:打开LR,N ...
- 使用Lucene.net+盘古分词实现搜索查询
这里我的的Demo的逻辑是这样的:首先我基本的数据是储存在Sql数据库中,然后我把我的必需的数据推送到MongoDB中,这样再去利用Lucene.net+盘古创建索引:其中为什么要这样把数据推送到Mo ...
- [luogu P3787][新创无际夏日公开赛] 冰精冻西瓜 [树状数组][dfs序]
题目背景 盛夏,冰之妖精琪露诺发现了一大片西瓜地,终于可以吃到美味的冻西瓜啦. 题目描述 琪露诺是拥有操纵冷气程度的能力的妖精,一天她发现了一片西瓜地.这里有n个西瓜,由n-1条西瓜蔓连接,形成一个有 ...
- [补] winpcap编程——EAP协议与EAPSOCKET实现
EAP SOCKET Implement Mentohust 时间:20161115,大二上 ## 准备. 什么是 EAP 协议 ? WIKI : https://en.wikipedia.org/w ...
- [BZOJ 1409] Password
贴一发题面 1409: Password Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 242 Solved: 82[Submit][Status][D ...
- year:2017 month:8 day:1+
2017-08-01 JAVAse 方法的重载:在同一个类中存在一个以上的同名方法,只要他们的参数数量,参数类型,参数顺序(两个相同类型的参数是不行的)这样就构成了方法的重载. 有返回值的方法有三种调 ...
- [补档][COGS 426]血帆海盗
[COGS 426]血帆海盗 题目 传送门:http://cogs.pro/cogs/problem/problem.php?pid=426 随着资本的扩大,藏宝海湾贸易亲王在卡利姆多和东部王国大陆各 ...
- 云计算——Google App Eng…
云计算--Google App Engine(一) 编者:王尚 2014.04.12 20:20 介绍:Google App Engine提供一套开发组件让用户轻松的在本地构建和调试网络应用,之后能让 ...