0063 MyBatis入门示例
2017-04-07 15:27
411 查看
MyBatis是一个“半自动化”的ORM框架,ORM即Object/Relation Mapping,对象关系映射,是面向对象编程语言跟关系型数据库的桥梁,将编程语言对Java实体类的操作映射到数据库中。
下面以向数据库中添加一条图书信息为例,说明MyBatis的入门操作
MyEclipse中新建个web项目,并且添加maven支持(这个跟MyBatis没关系,只是方便添加依赖jar包)
在pom.xml中添加如下依赖:
建数据库books,建表book:
写book实体类:
在src/main/resources下建个包net.sonng.mbt.mapper,新建文件BookMapper.xml,并配置如下:
这个配置文件就是sql语句的集合,测试类的session.insert()方法就是调用这里面的sql插入数据的
在src/resources/main下面新建mybatis-config.xml,并配置如下:
在src/resources/main下面新建log4j.properties,配置如下:
最后写测试类:在src/test/java下的net.sonng.mbt.test包下面写测试类BookTest.java
测试类按Java application运行后,检查数据库,该条信息已经插入,控制台输出如下:
DEBUG [main] - ==> Preparing: INSERT INTO book(
DEBUG [main] - ==> Parameters: 深入理解Java 7 核心技术与最佳实践(String), 机械工业出版社(String), 成富著(String), 9787111380399(String), 6.9(Float)
DEBUG [main] - <== Updates: 1
配置sql映射文件,就是包含多条sql语句
配置mybatis的配置文件:mybatis-config.xml,配置数据库的连接信息
SqlSession:通过该类的对象,跟数据库交流
SqlSessionFactory:这是数据库编译后的内存镜像,通常一个应用对应一个SqlSessionFactory对象
SqlSessionFactoryBuilder:该对象加载mybatis-config.xml产生SqlSessionFactory对象
别人写的:Mybatis从入门到精通
下面以向数据库中添加一条图书信息为例,说明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&useUnicode=true&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从入门到精通
相关文章推荐
- 一个很好的MyBatis入门示例程序
- ant入门示例——mybatis学习笔记之预备篇(二) 推荐
- Mybatis入门示例(一):基础代码
- Mybatis 入门示例代码之 Association
- JAVA入门[6]-Mybatis简单示例
- MyBatis(iBatis)入门示例!!!
- MyBatis(1)--MyBatis入门示例
- MyBatis入门示例——MyBatis学习笔记…
- shiro入门应用示例(采用spring+springmvc+mybatis+shiro)
- 0048 MyBatis动态SQL简易入门示例
- MyBatis入门示例——MyBatis学习笔记之一 推荐
- MyBatis入门示例——MyBatis学习笔记之一
- MyBatis入门配置示例
- MyBatis入门示例——MyBatis学习笔记…
- MyBatis入门示例
- MyBatis入门示例
- MyBatis入门示例
- MyBatis入门示例——MyBatis学习笔记之一
- Mybatis入门示例
- 史上最简单的MyBatis动态SQL入门示例代码