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. php 验证身份证号码

    身份证号码的结构 身份证号码是特征组合码,由17位数字本体码和一位校验码组成. 排列顺序从左至右依此为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码. 地址码(前六位数) 表示编 ...

  2. Eclipse中在android项目中出现新建一个Activity后,出现整个project的报错以及包导入以后无法执行等等情况分析。

    今天用Eclipse去写android项目,然后后面须要建一个Blank  Activity后,非常正常的建立的.然后那个Activity是基于ActionBarAtivity,要导入v7,结果由于这 ...

  3. Android内存调试命令

    adb shell dumpsys meminfo 包名 比如: adb shell dumpsys meminfo cn.com.test

  4. Informatica pmcmd命令

    pmcmd startworkflow -sv 集成服务名称 -d 配置域名称 -u  Administrator -p Administrator -f 文件夹名称 -wait 工作流名称例如: p ...

  5. make&&gcc/g++ 生成 map file

    map file 对于嵌入式开发是非常有用的,尤其是当你开发的module引起了 kernel panic 的时候. 仅写作Mark用 make: $vim makefile (add  " ...

  6. go语言基础之函数类型

    1.函数类型 示例: package main import "fmt" func Add(a, b int) int { return a + b } func main() { ...

  7. go语言基础之普通参数列表

    1.普通参数列表 (备注:只有一个参数) 示例1: package main //必须有一个main包 import "fmt" //有参无返回值函数的定义,普通参数列表 //定义 ...

  8. IOS中WebView的使用

    UIWebView是iOS sdk中一个最常用的控件.是内置的浏览器控件,我们可以用它来浏览网页.打开文档等等,UIWebView能够加载html/htm.pdf.docx.txt等格式的文件  系统 ...

  9. [Compose] 17. List comprehensions with Applicative Functors

    We annihilate the need for the ol' nested for loop using Applicatives. For example we have this kind ...

  10. (剑指Offer)面试题56:链表中环的入口结点

    题目: 一个链表中包含环,请找出该链表的环的入口结点. 思路: 1.哈希表 遍历整个链表,并将链表结点存入哈希表中(这里我们使用容器set),如果遍历到某个链表结点已经在set中,那么该点即为环的入口 ...