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. 数据库 DB MySQL 基本操作 CRUD 多表 MD

    操作数据库 创建数据库:create 创建一个名称为mydb1的数据库 create database mydb1; 创建一个使用gbk字符集的mydb2数据库 create database myd ...

  2. 130道ASP.NET面试题,我只会80道!

    1. 简述 private. protected. public. internal 修饰符的访问权限.答 . private : 私有成员, 在类的内部才可以访问. protected : 保护成员 ...

  3. qt study 元对象,属性和反射编程

    所谓反射,就是指对象成员的自我检查,使用反射编程(reflective programming),就可以编写出通用的操作,可以对具有不同结构的类进行操作. QMetaObject 元对象模式,描述一个 ...

  4. Android Studio中mac上面的安装

    Android Studio中mac上面的安装 学习了:https://blog.csdn.net/xianrenli38/article/details/79347170 http://www.an ...

  5. 让Netty入门变得简单

    让Netty入门变得简单 https://mp.weixin.qq.com/s/MBnbLmCmFJo0QK9WNwXrXQ 如果先启动nettyClient就不会有nettyServer输出了: p ...

  6. C#应用视频教程3.2 Halcon软件测试

    Halcon是图像处理比较牛逼的一个软件(德国人的东西,做的非常强大,里面集成的算法很多,可能你一辈子研究这个也做不过他),然而牛逼归牛逼,康耐视,基恩士也很牛逼,但是日本人的东西一般太过封闭,屌丝用 ...

  7. JDK中枚举的底层实现

    前提 上一篇文章复习介绍了JDK中注解的底层实现,跟注解一样比较常用,但是底层实现比较神秘的还有枚举类型.趁着国庆假期的最后两天,把JDK中枚举的底层实现也进行一次探究. 通过例子查找本质 在探究JD ...

  8. ssh-keygen - 生成、管理和转换认证密钥

    通常使用:[b]ssh-keygen -i -f 公密匙名>> authorized_keys[/b]语法详细介绍[code]ssh-keygen [-q] [-b bits] -t ty ...

  9. FFmpeg 如何探测网络流格式/如何从内存中获取数据

    文章转自:http://blog.csdn.net/rootusers/article/details/42551935 一般ffmpeg都是直接从文件中读取或者从网络流中读取,比如rtp://xx. ...

  10. 温故而知新 $ jquery选择器居然隐藏第二个参数,更进一步限制选择的区域

    $ 选择器的第二个参数 $("[name=" + name + "]", layero); layero 其实也是一个dom对象,譬如一个表单,一个table. ...