MyBatis是一个“半自动化”的ORM框架,ORM即Object/Relation Mapping,对象关系映射,是面向对象编程语言跟关系型数据库的桥梁,将编程语言对Java实体类的操作映射到数据库中。

下面以向数据库中添加一条图书信息为例,说明MyBatis的入门操作

MyEclipse中新建个web项目,并且添加maven支持(这个跟MyBatis没关系,只是方便添加依赖jar包)

在pom.xml中添加如下依赖:

    <dependencies>
<dependency>
<groupId>mysql</groupId> <!-- mysql数据库驱动 -->
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId> <!-- MyBatis框架 -->
<artifactId>mybatis</artifactId>
<version>3.4.1</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>log4j</groupId> <!-- 这是日志框架 -->
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
</dependencies>

建数据库books,建表book:

DROP DATABASE IF EXISTS `books`;
CREATE DATABASE `books` ;
USE `books`;
DROP TABLE IF EXISTS `book`;
CREATE TABLE `book` (
`id` INT PRIMARY KEY AUTO_INCREMENT,
`name` VARCHAR(128),
`press` VARCHAR(12),
`author` VARCHAR(24),
`isbn` VARCHAR(13),
`douban` FLOAT
); INSERT INTO `book` (`name`,`press`,`author`,`isbn`,`douban`) VALUES('Effective Java 中文版','机械工业出版社','(美)布洛克(Bloch J.)著;杨春花,俞黎敏译','9787111255833','9.1');
INSERT INTO `book` (`name`,`press`,`author`,`isbn`,`douban`) VALUES('Java并发编程实践','电子工业出版社','((美)Brian Goetz等著;韩锴,方妙译','9787121043161','8.8');
INSERT INTO `book` (`name`,`press`,`author`,`isbn`,`douban`) VALUES('Java网络编程 第4版','中国电力出版社','(美)哈诺德著','9787512361881','7.4');

写book实体类:

package net.sonng.mbt.entity;

public class Book {
private int id;
private String name;
private String press;
private String author;
private String isbn;
private float douban;
//。。。。。
}

在src/main/resources下建个包net.sonng.mbt.mapper,新建文件BookMapper.xml,并配置如下:

这个配置文件就是sql语句的集合,测试类的session.insert()方法就是调用这里面的sql插入数据的

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTDMapper 3.0//EN" "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">
<mapper namespace="net.sonng.mbt.mapper.BookMapper">
<!-- namespace是命名空间,应当作为字符串看待,相当于这个xml文档的名称,命名一般是包名+sql映射文件名 -->
<insert id="save" parameterType="net.sonng.mbt.entity.Book" useGeneratedKeys="true" >
INSERT INTO book(`name`,`press`,`author`,`isbn`,`douban`) VALUES(#{name},#{press},#{author},#{isbn},#{douban})
</insert>
<!-- insert元素表明这是个插入语句,另外还有select、update、delete等等 -->
<!-- id属性加上命名空间,就是这条sql的唯一标识符,测试类session.insert()语句通过这个唯一标识符调用这条sql -->
<!-- parameterType属性,是sql语句的参数类型 -->
<!-- useGeneratedKeys属性表示使用数据库的自动增长策略,当然数据库一般都是支持的,这里没这个属性也没问题 -->
<!-- #{User类的属性名}:这个表示传进来一个User对象,获取其对应的属性值作为sql语句参数值 -->
</mapper>

在src/resources/main下面新建mybatis-config.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>
<settings>
<setting name="logImpl" value="LOG4J" />
</settings>
<environments default="mysql">
<!-- 下面可以配置多个environment,即多个多个数据库,但只能选择一个数据库,就是这里的default属性指定的environment的id -->
<environment id="mysql">
<transactionManager type="JDBC" /> <!-- MyBatis自带的事务管理 -->
<dataSource type="POOLED" > <!-- 使用MyBatis自带的连接池管理 -->
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://127.0.0.1:3306/books?useSSL=false&amp;useUnicode=true&amp;charsetEncoding=utf8" />
<property name="username" value="kumi" />
<property name="password" value="1234" />
</dataSource>
</environment>
</environments>
<mappers> <!-- 下面指定sql映射文件,可以指定多个 -->
<mapper resource="net/sonng/mbt/mapper/BookMapper.xml" /> <!-- 指定BookMapper.xml -->
</mappers>
</configuration>

在src/resources/main下面新建log4j.properties,配置如下:

log4j.rootLogger=ERROR, stdout
log4j.logger.net.sonng.mbt.mapper.BookMapper=DEBUG
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

最后写测试类:在src/test/java下的net.sonng.mbt.test包下面写测试类BookTest.java

package net.sonng.mbt.test;

import java.io.IOException;
import java.io.InputStream; import net.sonng.mbt.entity.Book; import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder; public class BookTest {
public static void main(String[] args) throws IOException{
InputStream inputStream=Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session=sqlSessionFactory.openSession();
//用mybatis-config.xml和SqlSessionFactoryBuilder获取SqlSessionFactory,再获得session
Book book=new Book();
book.setName("深入理解Java 7 核心技术与最佳实践");
book.setPress("机械工业出版社");
book.setAuthor("成富著");
book.setDouban(6.9f);
book.setIsbn("9787111380399");
session.insert("net.sonng.mbt.mapper.BookMapper.save",book); //调用BookMapper.xml中的sql语句插入book对象
session.commit(); //提交事务
session.close(); //关闭session
}
}

测试类按Java application运行后,检查数据库,该条信息已经插入,控制台输出如下:

DEBUG [main] - ==> Preparing: INSERT INTO book(name,press,author,isbn,douban) VALUES(?,?,?,?,?)

DEBUG [main] - > Parameters: 深入理解Java 7 核心技术与最佳实践(String), 机械工业出版社(String), 成富著(String), 9787111380399(String), 6.9(Float)

DEBUG [main] - < Updates: 1

小结

jar包:mybatis、mysql的驱动包

配置sql映射文件,就是包含多条sql语句

配置mybatis的配置文件:mybatis-config.xml,配置数据库的连接信息

SqlSession:通过该类的对象,跟数据库交流

SqlSessionFactory:这是数据库编译后的内存镜像,通常一个应用对应一个SqlSessionFactory对象

SqlSessionFactoryBuilder:该对象加载mybatis-config.xml产生SqlSessionFactory对象

别人写的:Mybatis从入门到精通

0063 MyBatis入门示例的更多相关文章

  1. Mybatis-Plus入门示例

    1.内容: Mybatis-Plus只是在Mybatis的基础上,实现了功能增强,让开发更加简洁高效. Mybatis-Plus并没有修改Mybatis的任何特性. 2.入门示例: 2.1 需求:使用 ...

  2. mybatis入门系列二之输入与输出参数

    mybatis入门系列二之详解输入与输出参数   基础知识   mybatis规定mapp.xml中每一个SQL语句形式上只能有一个@parameterType和一个@resultType 1. 返回 ...

  3. Mybatis入门及Dao开发方式

    本节内容: Mybatis介绍 使用jdbc编程问题总结 Mybatis架构 Mybatis入门程序 Dao的开发方式 SqlMapConfig.xml文件说明 一.Mybatis介绍 MyBatis ...

  4. Spring(二)之入门示例

    任何编程技术,特别是入门示例,通常都是Hello World,在这里我也遵循这个业界公认的原则. 这里我使用的maven项目,大家如果想要演示,建议使用Eclipse(含maven插件)或Idea(含 ...

  5. MyBatis 入门(一)

    1. MyBatis 概述 MyBatis 是一个半自动化的持久层框架; 核心SQL,开发人员可以进行优化; SQL和Java编码分开,功能边界清晰,一个专注业务,一个专注数据; JDBC: SQL ...

  6. Java反射01 : 概念、入门示例、用途及注意事项

    1.Java反射定义 本文转载自:https://blog.csdn.net/hanchao5272/article/details/79360452 官方定义如下: Reflection enabl ...

  7. 写给新手看的 MyBatis 入门

    目录 MyBatis 使用前的准备 什么是 MyBatis 使用Maven 进行 MyBatis 开发环境搭建 MyBatis 入门 项目整体结构一览 MyBatis 的简单生命周期 1.获取 Sql ...

  8. Mybatis入门(一)------基本概念操作

    Mybatis简介 Mybatis是支持定制化 SQL.存储过程以及高级映射的优秀的持久层框架.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以对配置 ...

  9. Mybatis入门篇之结果映射,你射准了吗?

    目录 前言 什么是结果映射? 如何映射? 别名映射 驼峰映射 配置文件开启驼峰映射 配置类中开启驼峰映射 resultMap映射 总结 高级结果映射 关联(association) 例子 关联的嵌套 ...

随机推荐

  1. jQuery/javascript实现IP/Mask自动联想功能

    之前做一个云计算的项目,涉及到一个安全组自动联想的功能,思想是这样的: 安全组规则之间是可以相互引用的,也可以自己是自己手动输入的ip/mask,这时候可以加一个功能,实现securityGroupI ...

  2. C#类的访问修饰符

    默认情况下,类声明为内部的,即只有当前工程中的代码才能访问它.可以用internal访问修饰符关键字显式指定,但这不是必须的,类在定义时默认为此类型的类.但是C# 方法默认访问级别: private. ...

  3. JAVA反射使用手记

    本篇文章为在工作中使用JAVA反射的经验总结,也可以说是一些小技巧,以后学会新的小技巧,会不断更新.本文不准备讨论JAVA反射的机制,网上有很多,大家随便google一下就可以了. 在开始之前,我先定 ...

  4. http://jingyan.baidu.com/article/7f41ecec1b7a2e593d095ce6.html

    http://jingyan.baidu.com/article/7f41ecec1b7a2e593d095ce6.html http://www.linuxeden.com/html/softuse ...

  5. Hadoop 基本架构

    Hadoop 由两部分组成,分别是分布式文件系统和分布式计算框架 MapReduce. 其中分布式文件系统主要用于大规模数据的分布式存储,而 MapReduce 则构建在分布式文件系统之上,对存储在分 ...

  6. PHP免费的空间www.hostinger.co.uk

    免费的PHP空间:http://hostinger.co.uk hostinger是一个免费的PHP空间,不仅100%完全免费而且还没有广告,提供2G物理空间和100GMysql空间 可以一键安装Wo ...

  7. Fireworks如何制作透明窗口PNG

    1 做好的透明PNG窗口如图所示,打开之后可以发现其实分层的PNG和Photoshop打开一个PSD文件类似. 2 但是Photoshop并不会像Fireworks一样可以编辑分层的PNG,在打开分层 ...

  8. rtsp摘要认证协议(Response计算方法)

    rtsp摘要认证协议(Response计算方法) 说明: 例如:OPTIONS rtsp://192.168.123.158:554/11RTSP/1.0   RTSP客户端应该使用username ...

  9. UDP socket也可以使用connect系统调用

    UDP socket也可以使用connect系统调用 UDP是一个无连接的协议,因此socket函数connect()似乎对UDP是没有意义的,然而事实不是这样.它可以用来指定本地端口和本地地址,来建 ...

  10. python import 错误 TypeError: 'module' object is not callable

    python import 错误 TypeError: 'module' object is not callable 在这里,有 Person.py test.py; 在 test.py 里面 im ...