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>.创建数据库和表

 create database yinzhengjie;

 use yinzhengjie;

 create table if not exists users(id int primary key auto_increment,name varchar(20) , age int) ;

2>.创建模块引入Maven依赖

 <?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <groupId>cn.org.yinzhengjie</groupId>
<artifactId>Mybatis</artifactId>
<version>1.0-SNAPSHOT</version> <dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.17</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.2.1</version>
</dependency>
</dependencies> </project>

3>.创建和表对应的java类

 /*
@author :yinzhengjie
Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
EMAIL:y1053419035@qq.com
*/ package cn.org.yinzhengjie.mybatis.domain; public class User {
private Integer id;
private String name;
private int age; public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
} public String toString() {
return "User{" + "id=" + id + ", name='" + name + ", age=" + age + '}';
}
}

4>.在项目resources目录中创建映射UserMapper.xml文件

 <?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- 定义名字空间,这个是自定义的,推荐定义为和表名一致的!-->
<mapper namespace="users">
<insert id="insert">
insert into users(name, age) values(#{name}, #{age}) ;
</insert>
</mapper>

5>.创建连接数据库的配置文件(注意,你的数据库,用户名,密码可能跟我不一致,只需要修改相应的参数即可!)

 <?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>
<properties>
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:5200/yinzhengjie"/>
<property name="username" value="root"/>
<property name="password" value="yinzhengjie"/>
</properties>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="UserMapper.xml"/>
</mappers>
</configuration>

6>.编写单元测试代码,对数据库插入一条数据

 /*
@author :yinzhengjie
Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
EMAIL:y1053419035@qq.com
*/
package cn.org.yinzhengjie.mybatis.test; import cn.org.yinzhengjie.mybatis.domain.User.java.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test; import java.io.InputStream; public class TestMybatis { @Test
public void testInsert() throws Exception {
//加载配置文件,产生流对象
InputStream in = Resources.getResourceAsStream("mybatis-config.xml");
//创建会话工厂
SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(in);
//开启会话,开启连接
SqlSession s = sf.openSession(); User c = new User();
c.setName("Yinzhengjie");
c.setAge(18);
//注意。这里的users就是UserMapper.xml的namespace(名称空间),而insert则是id的值为insert字符。
s.insert("users.insert", c);
//提交事务
s.commit();
s.close();
} }

7>.查看测试表中的数据是否插入成功

8>.实现增删改查操作

 /*
@author :yinzhengjie
Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
EMAIL:y1053419035@qq.com
*/ package cn.org.yinzhengjie.mybatis.domain; public class User {
private Integer id;
private String name;
private int age; public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
} public String toString() {
return "User{" + "id=" + id + ", name='" + name + ", age=" + age + '}';
}
}

User.java 文件内容

 <?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- 定义名字空间 -->
<mapper namespace="users">
<insert id="insert">
insert into users(name, age) values(#{name}, #{age}) ;
</insert> <update id="update">
update users set name = #{name} , age = #{age} where id = #{id}
</update> <delete id="deleteOne">
delete from users where id = #{id}
</delete> <select id="selectOne" resultType="_User">
select * from users where id = #{id}
</select> <select id="selectAll" resultType="_User">
select * from users
</select> </mapper>

UserMapper.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>
<properties>
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:5200/yinzhengjie"/>
<property name="username" value="root"/>
<property name="password" value="yinzhengjie"/>
</properties> <!-- 我们使用typeAliases标签给我们自定义类起个别名。-->
<typeAliases>
<typeAlias type="cn.org.yinzhengjie.mybatis.domain.User" alias="_User" />
</typeAliases> <environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="UserMapper.xml"/>
</mappers>
</configuration>

mybatis-config.xml 文件内容

 /*
@author :yinzhengjie
Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
EMAIL:y1053419035@qq.com
*/
package cn.org.yinzhengjie.mybatis.test; import cn.org.yinzhengjie.mybatis.domain.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import java.io.InputStream;
import java.util.List; public class TestMybatis { @Test
public void testInsert(){
SqlSession sess = null;
try {
//读取配置文件
InputStream in = Resources.getResourceAsStream("mybatis-config.xml") ;
SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(in) ;
//开启会话(连接)
sess = sf.openSession();
User u = new User();
u.setName("Yinzhengjie");
u.setAge(18);
//调用插入的方法
sess.insert("users.insert",u) ;
sess.commit();
System.out.println("插入成功!");
} catch (Exception e) {
sess.rollback();
System.out.println("插入失败!");
e.printStackTrace();
}finally {
sess.close();
}
} @Test
public void testUpdate(){
SqlSession sess = null;
try {
//读取配置文件
InputStream in = Resources.getResourceAsStream("mybatis-config.xml") ;
SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(in) ;
//开启会话(连接)
sess = sf.openSession();
//定义需要修改的参数
User u = new User();
u.setId(1);
u.setName("YINZHENGJIE");
u.setAge(26);
//调用更新的方法,第一个参数需要指定标签名称,第二个参数传入我们定义好需要需要的对象
sess.update("users.update" , u) ;
//提交事物
sess.commit();
System.out.println("更新成功!");
} catch (Exception e) {
sess.rollback();
System.out.println("更新失败!");
e.printStackTrace();
}finally {
//释放资源
sess.close();
}
} @Test
public void testDeleteOne(){
SqlSession sess = null;
try {
//读取配置文件
InputStream in = Resources.getResourceAsStream("mybatis-config.xml") ;
SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(in) ;
//开启会话(连接)
sess = sf.openSession();
//调用删除的方法
int res = sess.delete("users.deleteOne", 2);
if (res != 0){
sess.commit();
System.out.println("删除成功!");
}else {
System.out.println("指定的数据不存在,因此没有删除任何数据!");
}
} catch (Exception e) {
sess.rollback();
System.out.println("删除失败");
e.printStackTrace();
}finally {
sess.close();
}
}
@Test
public void testSelectOne(){
try {
//读取配置文件
InputStream in = Resources.getResourceAsStream("mybatis-config.xml") ;
SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(in) ;
//开启会话(连接)
SqlSession sess = sf.openSession();
//调用查询的方法
User u = sess.selectOne("users.selectOne",1) ;
System.out.println(u.getName());
sess.commit();
sess.close();
} catch (Exception e) {
System.out.println("您要查询的条目不存在!");
// e.printStackTrace();
}
} @Test
public void testSelectAll(){
SqlSession sess = null;
try {
//读取配置文件
InputStream in = Resources.getResourceAsStream("mybatis-config.xml") ;
SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(in) ;
//开启会话(连接)
sess = sf.openSession();
//调用查询的方法,返回的是一个List的结果集合
List<User> list = sess.selectList("users.selectAll") ;
for(User uu : list){
System.out.println(uu.getName());
}
sess.commit(); } catch (Exception e) {
e.printStackTrace();
}finally {
sess.close();
}
}
}

TestMybatis.java 文件内容

  文件存放目录如下图所示:

Java基础-SSM之mybatis快速入门篇的更多相关文章

  1. Java基础-SSM之Spring快速入门篇

    Java基础-SSM之Spring快速入门篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.    Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java ...

  2. Java基础-SSM之Spring MVC入门篇

    Java基础-SSM之Spring MVC入门篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Spring MVC简介 1>.什么是Spring MVC 答:Sprin ...

  3. Java基础-SSM之mybatis的统计函数和分页查询

    Java基础-SSM之mybatis的统计函数和分页查询 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.

  4. Java基础-SSM之mybatis一对一关联

    Java基础-SSM之mybatis一对一关联 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.准备测试环境(创建数据库表)  1>.创建husbands和wifes表并建 ...

  5. Java基础-SSM之mybatis多对多关联

    Java基础-SSM之mybatis多对多关联 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.准备测试环境(创建数据库表) 1>.创建teas,stus,links表 u ...

  6. Java基础-SSM之mybatis一对多和多对一关系映射

    Java基础-SSM之mybatis一对多和多对一关系映射 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.准备测试环境(创建数据库表)  1>.创建customers表: ...

  7. Java基础-SSM之mybatis的树形控件(自关联)

    Java基础-SSM之mybatis的树形控件(自关联) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.准备测试环境(创建数据库表) 1>.创建areas表: use y ...

  8. Java基础-SSM之mybatis一对一外键关联

    Java基础-SSM之mybatis一对一外键关联 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.准备测试环境(创建数据库表)  1>.创建husbandsfk和wife ...

  9. Java基础-SSM之Spring和Mybatis以及Spring MVC整合案例

    Java基础-SSM之Spring和Mybatis以及Spring MVC整合案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 能看到这篇文章的小伙伴,详细你已经有一定的Java ...

随机推荐

  1. idea 解决 pom.xml 中,maven仓库无法导入的问题(红线)

    只需要用另一篇文章的 maven clean install 功能就行了 idea Cannot Resolve Symbol 问题解决

  2. ajax传参data里面的键是一个变量的解决方法

    直接用这种方式来传参,比如bean中有字段 username password,则是 data[username] = "用户名"; data[password] = " ...

  3. CS50.1

    1,GUI,graphical user interface,图形用户界面 2.VB,visual basic,微软开发的一种程序语言 3,BIT,binary digit 比特 4,byte 5,8 ...

  4. C# Language Specification 5.0 (翻译)第四章 类型

    C# 语言的类型分为两大类:值类型(value type)和引用类型(reference type),而它们又都同时具有至少一个类型形参的泛型类型(generic type).类型形参(type pa ...

  5. 对html第一次尝试

    1.对于写文档                         修改后缀为html,双击进入为网页模式. 2.编写网页 1)新建 2)基本格式 <!DOCTYPE html><!-- ...

  6. 团队week9

    1. Bug bash ▪ How many bugs is found in your bug bash? Bug很多,就前端的用户管理部分发现的bug就有14个. 2. Write a blog ...

  7. 20135202闫佳歆--week4 课本第5章学习笔记

    第五章 系统调用 一.与内核通信 系统调用在用户控件进程和硬件设备之间添加了一个中间层,作用如下" 为用户空间提供了一种硬件的抽象接口 系统调用保证了系统的稳定和安全 每个进程都运行在虚拟系 ...

  8. LeetCode-----算法448.找到所有数组中消失的数字

    题目: 给定一个范围在  1 ≤ a[i] ≤ n ( n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次. 找到所有在 [1, n] 范围之间没有出现在数组中的数字. ...

  9. PAT 1001. A+B Format 解题

    GitHub PDF 1001. A+B Format (20) Calculate a + b and output the sum in standard format -- that is, t ...

  10. 第二个Sprint冲刺第二天(燃尽图)