MyBatis是一个支持普通SQL查询存储过程高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。

框架整体结构图:

关键代码介绍

1.ICatagoryOperation接口

public interface ICatagoryOperation {
void inserteCatagory(Catagory catagory); Catagory getCatagorybyID(int id);
}

2.Catagory类

public class Catagory {
private int id;
private String name; private String description; public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getDescription() {
return description;
} public void setDescription(String description) {
this.description = description;
} @Override
public String toString() {
return String.format("id:%d,name:%s,description:%s", id, name, description);
}
}

3.MyBatisUtils类

public class MyBatisUtils {
private static final String CONFIG_PATH = "config/mybatis_config.xml"; /*
* 获取数据库访问链接
*/
public static SqlSession getSqlSession() {
SqlSession session = null;
try {
InputStream stream = Resources.getResourceAsStream(CONFIG_PATH);
// 可以根据配置的相应环境读取相应的数据库环境
// SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(
// stream, "development");
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(stream);
session = factory.openSession();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
return session;
} /*
* 获取数据库访问链接
*/
public static void closeSession(SqlSession session) {
session.close();
}
}

4.CatagoryMapper.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="com.franson.study.interfaces.ICatagoryOperation">
<!-- 此处的resultType就是对应刚刚你在typeAlias节点里面规定的别名 -->
<select id="inserteCatagory" parameterType="Catagory">
insert into tb_catagories(name,description) values(#{name},#{description})
</select>
<select id="getCatagorybyID" resultType="Catagory" parameterType="java.lang.Integer">
select * from tb_catagories where id=#{id}
</select>
</mapper>

5.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>
<typeAliases>
<typeAlias type="com.franson.study.model.Catagory" alias="Catagory" />
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<!-- ?useUnicode=true&amp;characterEncoding=utf8为了支持中文数据的写入 -->
<property name="url"
value="jdbc:mysql://127.0.0.1:3306/db_catagory?useUnicode=true&amp;characterEncoding=utf8" />
<property name="username" value="root" />
<property name="password" value="123456" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="mapper/CatagoryMapper.xml" />
</mappers>
</configuration>

6.TestMybatis测试入口类

public class TestMybatis {

    public static void main(String[] args) {
addTest();
getTest();
} /*
* 添加Catagory
*/
static void addTest() {
SqlSession sqlSession = MyBatisUtils.getSqlSession();
ICatagoryOperation catagoryOperation = sqlSession.getMapper(ICatagoryOperation.class);
Catagory item = new Catagory();
item.setName("sql server");
item.setDescription("sql server类");
int result = catagoryOperation.inserteCatagory(item);
if (result > 0) {
sqlSession.commit();
System.out.println("添加成功");
} else
sqlSession.rollback();
MyBatisUtils.closeSession(sqlSession);
} /*
* 根据ID获取Catagory
*/
static void getTest() {
SqlSession sqlSession = MyBatisUtils.getSqlSession();
ICatagoryOperation catagoryOperation = sqlSession.getMapper(ICatagoryOperation.class);
System.out.println(catagoryOperation.getCatagorybyID(3).toString());
MyBatisUtils.closeSession(sqlSession);
}
}

7.测试运行结果

使用MyBatis搭建一个访问mysql数据库的简单示例的更多相关文章

  1. 一个备份MySQL数据库的简单Shell脚本(转)

    Shell脚本是我们写不同类型命令的一种脚本,这些命令在这一个文件中就可以执行.我们也可以逐一敲入命令手动执行.如果我们要使用shell脚本就必须在一开始把这些命令写到一个文本文件中,以后就可以随意反 ...

  2. [转]一个备份MySQL数据库的简单Shell脚本

    本文翻译自 iSystemAdmin 的 <A Simple Shell Script to Backup MySQL Database> Shell脚本是我们写不同类型命令的一种脚本,这 ...

  3. Spring Boot入门(六):使用MyBatis访问MySql数据库(注解方式)

    本系列博客记录自己学习Spring Boot的历程,如帮助到你,不胜荣幸,如有错误,欢迎指正! 本篇博客我们讲解下在Spring Boot中使用MyBatis访问MySql数据库的简单用法. 1.前期 ...

  4. java文件来演示如何访问MySQL数据库

    java文件来演示如何访问MySQL数据库. 注:在命令行或用一个SQL的前端软件创建Database. 先创建数据库: CREATE DATABASE SCUTCS; 接着,创建表: CREATE ...

  5. C#连接、访问MySQL数据库

    一.准备工具 visual stuido(本示例使用visual studio 2010) MySql.Data.dll mysql_installer_community_V5.6.21.1_set ...

  6. 在Eclipse中使用JDBC访问MySQL数据库的配置方法

    在Eclipse中使用JDBC访问MySQL数据库的配置方法 分类: DATABASE 数据结构与算法2009-10-10 16:37 5313人阅读 评论(10) 收藏 举报 jdbcmysql数据 ...

  7. C#访问MySQL数据库(winform+EF)

    原文:C#访问MySQL数据库(winform+EF) 以前都是C#连接SQLServer,现在MySQL也比较火了,而且是开源跨平台的,这里连接使用一下,主要是体会一下整个流程,这里使用的是winf ...

  8. 真分布式SolrCloud+Zookeeper+tomcat搭建、索引Mysql数据库、IK中文分词器配置以及web项目中solr的应用(1)

    版权声明:本文为博主原创文章,转载请注明本文地址.http://www.cnblogs.com/o0Iris0o/p/5813856.html 内容介绍: 真分布式SolrCloud+Zookeepe ...

  9. android开发 如何通过web服务器访问MYSQL数据库并且使其数据同步到android SQLite数据库?

    通过web服务器访问MYSQL数据库有以下几个过程: 1.在MySql下创建自己的数据库和自己的表单 2.连接数据库. 3.访问数据库 1.创建web工程 (服务器端) 在Myeclipse下新建一个 ...

随机推荐

  1. centos6.5 Eclipse C/C++开发环境及项目创建测试

    1,新建C++ project

  2. IE 创建条件样式

    1.HTML 注释 <div id="header">Header Section</div> <!-- End Header Section Con ...

  3. 04737_C++程序设计_第4章_类和对象

    例4.1 描述点的Point类. 例4.2 根据上面对Point类的定义,演示使用Point类的对象. #define _SCL_SECURE_NO_WARNINGS #include <ios ...

  4. 弱类型语言中的0和空字符串(''或"")以及字符串'0'

    在弱类型语言(js/PHP)中, 当我们用==判断0和'0'以及空字符串(''或"")是否相等的时候, 返回的是true. 而且在PHP中, 当我们用==判断0和null是否相等的 ...

  5. Asp.net SqlDataReader转成Datatable

    Asp.net SqlDataReader转成Datatable 所属栏目:Asp.net 编程 | 发布日期:2013年04月05日 | 点击:517 次 内容摘要:Asp.net 数据存储,呈现方 ...

  6. Codeforces Round #256 (Div. 2/C)/Codeforces448C_Painting Fence(分治)

    解题报告 给篱笆上色,要求步骤最少,篱笆怎么上色应该懂吧,.,刷子能够在横着和竖着刷,不能跳着刷,,, 假设是竖着刷,应当是篱笆的条数,横着刷的话.就是刷完最短木板的长度,再接着考虑没有刷的木板,,. ...

  7. Oracle表管理

    /*-----------------------创建和管理表-----------------------------*/一.Orcale之中的数据类型:1.NUMBER.DATE.VARCAHR. ...

  8. CSS display属性的值及作用

    display 的属性值有:none|inline|block|inline-block|list-item|run-in|table|inline-table|table-row-group|tab ...

  9. js基础——属性操作

    html属性:属性名——属性值 操作:读 . 写 读操作:用来获取.找到属性名对应的属性值,方法:元素.属性名 例如:var oBtn = document.getElementById('btn1' ...

  10. 最近做OpenWrt的总结

    用到了哪些东西 需要在OpenWrt上开发一个客户端,用C语言写还比较方便,最开始在linux上跑,后面移植到路由器上,做成ipk.除了稍微修改了下Makefile,其他的什么都没改. 因为需要做个配 ...