Java基础-SSM之mybatis快速入门篇
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
其实你可能会问什么是SSM,简单的说就是spring mvc + Spring + mybatis。本篇博客主要介绍mybatis的使用方法,配置起来相对简单!mybatis是一种持久化技术,它内部封装JDBC,将SQL语句外部化,换句话说,就是讲SQL语句提前定义在文件中。官网文档也是相当的友好:http://www.mybatis.org/mybatis-3/zh/getting-started.html(推荐使用谷歌浏览器打开)。
MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。MyBatis是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO)MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
接下来我们一起体验一下mybatis吧,使用它实现增删改查操作,具体操作步骤如下:
1>.创建数据库和表
1 create database yinzhengjie; 2 3 use yinzhengjie; 4 5 create table if not exists users(id int primary key auto_increment,name varchar(20) , age int) ;
2>.创建模块引入Maven依赖
1 <?xml version="1.0" encoding="UTF-8"?> 2 <project xmlns="http://maven.apache.org/POM/4.0.0" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 5 <modelVersion>4.0.0</modelVersion> 6 7 <groupId>cn.org.yinzhengjie</groupId> 8 <artifactId>Mybatis</artifactId> 9 <version>1.0-SNAPSHOT</version> 10 11 <dependencies> 12 <dependency> 13 <groupId>junit</groupId> 14 <artifactId>junit</artifactId> 15 <version>4.11</version> 16 </dependency> 17 <dependency> 18 <groupId>mysql</groupId> 19 <artifactId>mysql-connector-java</artifactId> 20 <version>5.1.17</version> 21 </dependency> 22 <dependency> 23 <groupId>org.mybatis</groupId> 24 <artifactId>mybatis</artifactId> 25 <version>3.2.1</version> 26 </dependency> 27 </dependencies> 28 29 </project>
3>.创建和表对应的java类
1 /* 2 @author :yinzhengjie 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/ 4 EMAIL:y1053419035@qq.com 5 */ 6 7 package cn.org.yinzhengjie.mybatis.domain; 8 9 public class User { 10 private Integer id; 11 private String name; 12 private int age; 13 14 public Integer getId() { 15 return id; 16 } 17 18 public void setId(Integer id) { 19 this.id = id; 20 } 21 22 public String getName() { 23 return name; 24 } 25 26 public void setName(String name) { 27 this.name = name; 28 } 29 30 public int getAge() { 31 return age; 32 } 33 34 public void setAge(int age) { 35 this.age = age; 36 } 37 38 public String toString() { 39 return "User{" + ">; 40 } 41 }
4>.在项目resources目录中创建映射UserMapper.xml文件
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 3 "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 4 <!-- 定义名字空间,这个是自定义的,推荐定义为和表名一致的!--> 5 <mapper namespace="users"> 6 <insert id="insert"> 7 insert into users(name, age) values(#{name}, #{age}) ; 8 </insert> 9 </mapper>
5>.创建连接数据库的配置文件(注意,你的数据库,用户名,密码可能跟我不一致,只需要修改相应的参数即可!)
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE configuration 3 PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 4 "http://mybatis.org/dtd/mybatis-3-config.dtd"> 5 <configuration> 6 <properties> 7 <property name="driver" value="com.mysql.jdbc.Driver"/> 8 <property name="url" value="jdbc:mysql://localhost:5200/yinzhengjie"/> 9 <property name="username" value="root"/> 10 <property name="password" value="yinzhengjie"/> 11 </properties> 12 <environments default="development"> 13 <environment id="development"> 14 <transactionManager type="JDBC"/> 15 <dataSource type="POOLED"> 16 <property name="driver" value="${driver}"/> 17 <property name="url" value="${url}"/> 18 <property name="username" value="${username}"/> 19 <property name="password" value="${password}"/> 20 </dataSource> 21 </environment> 22 </environments> 23 <mappers> 24 <mapper resource="UserMapper.xml"/> 25 </mappers> 26 </configuration>
6>.编写单元测试代码,对数据库插入一条数据
1 /* 2 @author :yinzhengjie 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/ 4 EMAIL:y1053419035@qq.com 5 */ 6 package cn.org.yinzhengjie.mybatis.test; 7 8 import cn.org.yinzhengjie.mybatis.domain.User.java.User; 9 import org.apache.ibatis.io.Resources; 10 import org.apache.ibatis.session.SqlSession; 11 import org.apache.ibatis.session.SqlSessionFactory; 12 import org.apache.ibatis.session.SqlSessionFactoryBuilder; 13 import org.junit.Test; 14 15 import java.io.InputStream; 16 17 public class TestMybatis { 18 19 @Test 20 public void testInsert() throws Exception { 21 //加载配置文件,产生流对象 22 InputStream in = Resources.getResourceAsStream("mybatis-config.xml"); 23 //创建会话工厂 24 SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(in); 25 //开启会话,开启连接 26 SqlSession s = sf.openSession(); 27 28 User c = new User(); 29 c.setName("Yinzhengjie"); 30 c.setAge(18); 31 //注意。这里的users就是UserMapper.xml的namespace(名称空间),而insert则是id的值为insert字符。 32 s.insert("users.insert", c); 33 //提交事务 34 s.commit(); 35 s.close(); 36 } 37 38 }
7>.查看测试表中的数据是否插入成功
8>.实现增删改查操作
1 /* 2 @author :yinzhengjie 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/ 4 EMAIL:y1053419035@qq.com 5 */ 6 7 package cn.org.yinzhengjie.mybatis.domain; 8 9 public class User { 10 private Integer id; 11 private String name; 12 private int age; 13 14 public Integer getId() { 15 return id; 16 } 17 18 public void setId(Integer id) { 19 this.id = id; 20 } 21 22 public String getName() { 23 return name; 24 } 25 26 public void setName(String name) { 27 this.name = name; 28 } 29 30 public int getAge() { 31 return age; 32 } 33 34 public void setAge(int age) { 35 this.age = age; 36 } 37 38 public String toString() { 39 return "User{" + ">; 40 } 41 }