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. 关于FFmpegInterop项目的编译

    如果是从git 上下载的最新版本 FFmpeg,那么打开VS2015编译时会报出一个错误    C4996    'av_free_packet': 被声明为已否决    FFmpegInterop  ...

  2. js中的this基础

    this在js中的地位可以说是相当高了,本文介绍下this的基本相关情况,以后还会慢慢介绍 在页面中aler(this)//this的指向是window 在DOM操作中this的指向是当前发生事件的对 ...

  3. RS报内存错误XQE-ROL-0183

    描述问题:RS开发了一个报表,里面涉及日期维度精细判断,还有FM里面做的权限处理,处理逻辑可能比较复杂,后面又加了一个case when的数据项结果就出现了下面的错误 下面就说一下处理方案 从字面意思 ...

  4. 【React】初识React

    React是什么 React是如今(2015年)最热门的前端技术. 在React中.一切皆组件. A JavaScript library for building user interfaces R ...

  5. 推荐一个在线json数据格式化网站

    json数据非常友好方便的处理: 推荐一个在线json数据格式化网站 http://json.parser.online.fr/

  6. HTTP 头缓存Last-Modified,ETag,Expires

    http://www.jdon.com/40381 Last-Modified和Expires针对浏览器,而ETag则与客户端无关,所以可适合REST架构中.两者都应用在浏览器端的区别是:Expire ...

  7. InnerHTML属性的XSS利用

    来自:http://www.myhack58.com/Article/html/3/7/2011/32395.htm innerHTML 是个奇怪的HTML属性,不是W3C标准支持的,但几乎所有的厂商 ...

  8. 登陆Oracle EBS的Form遇到问题Internet Explorer has modified this page to help prevent cross-site scripting

    登陆Oracle EBS的Form遇到问题Internet Explorer has modified this page to help prevent cross-site scripting 今 ...

  9. Win8多平台引用配置

    之前移植过DLNA的库,这个库是C++写的,然后我们的项目是C#的.接着很郁闷的事情发生了,主项目引用一个C#的DLL,然后这个DLL引用这个C++/CX封装的库.如果有C++的源代码的话,做项目依赖 ...

  10. 从chrome商店直接下载crx文件

      从chrome商店直接下载crx文件 CreateTime--2018年5月21日17点18分 Author:Marydon 1.前提 需要知道你所下载的插件的id 查看方法: 第一步:打开扩展程 ...