使用MyBatis搭建一个访问mysql数据库的简单示例
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&characterEncoding=utf8为了支持中文数据的写入 -->
<property name="url"
value="jdbc:mysql://127.0.0.1:3306/db_catagory?useUnicode=true&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数据库的简单示例的更多相关文章
- 一个备份MySQL数据库的简单Shell脚本(转)
Shell脚本是我们写不同类型命令的一种脚本,这些命令在这一个文件中就可以执行.我们也可以逐一敲入命令手动执行.如果我们要使用shell脚本就必须在一开始把这些命令写到一个文本文件中,以后就可以随意反 ...
- [转]一个备份MySQL数据库的简单Shell脚本
本文翻译自 iSystemAdmin 的 <A Simple Shell Script to Backup MySQL Database> Shell脚本是我们写不同类型命令的一种脚本,这 ...
- Spring Boot入门(六):使用MyBatis访问MySql数据库(注解方式)
本系列博客记录自己学习Spring Boot的历程,如帮助到你,不胜荣幸,如有错误,欢迎指正! 本篇博客我们讲解下在Spring Boot中使用MyBatis访问MySql数据库的简单用法. 1.前期 ...
- java文件来演示如何访问MySQL数据库
java文件来演示如何访问MySQL数据库. 注:在命令行或用一个SQL的前端软件创建Database. 先创建数据库: CREATE DATABASE SCUTCS; 接着,创建表: CREATE ...
- C#连接、访问MySQL数据库
一.准备工具 visual stuido(本示例使用visual studio 2010) MySql.Data.dll mysql_installer_community_V5.6.21.1_set ...
- 在Eclipse中使用JDBC访问MySQL数据库的配置方法
在Eclipse中使用JDBC访问MySQL数据库的配置方法 分类: DATABASE 数据结构与算法2009-10-10 16:37 5313人阅读 评论(10) 收藏 举报 jdbcmysql数据 ...
- C#访问MySQL数据库(winform+EF)
原文:C#访问MySQL数据库(winform+EF) 以前都是C#连接SQLServer,现在MySQL也比较火了,而且是开源跨平台的,这里连接使用一下,主要是体会一下整个流程,这里使用的是winf ...
- 真分布式SolrCloud+Zookeeper+tomcat搭建、索引Mysql数据库、IK中文分词器配置以及web项目中solr的应用(1)
版权声明:本文为博主原创文章,转载请注明本文地址.http://www.cnblogs.com/o0Iris0o/p/5813856.html 内容介绍: 真分布式SolrCloud+Zookeepe ...
- android开发 如何通过web服务器访问MYSQL数据库并且使其数据同步到android SQLite数据库?
通过web服务器访问MYSQL数据库有以下几个过程: 1.在MySql下创建自己的数据库和自己的表单 2.连接数据库. 3.访问数据库 1.创建web工程 (服务器端) 在Myeclipse下新建一个 ...
随机推荐
- 第52周二Restful
今天去spring官网发现一个关键词:Restful,以前只在与一个系统对接时用到过这种形式的接口,但印象不深,百度搜索后才感觉自己太out了,这个概念2000年提出,2009年时国内就有很多人推荐使 ...
- POJ——多项式的加法
1:多项式加法 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 5000kB 描述 我们经常遇到两多项式相加的情况,在这里,我们就需要用程序来模拟实现把两个多项式相加到一起.首先 ...
- UVA 10003 Cutting Sticks 切木棍 dp
题意:把一根木棍按给定的n个点切下去,每次切的花费为切的那段木棍的长度,求最小花费. 这题出在dp入门这边,但是我看完题后有强烈的既是感,这不是以前做过的石子合并的题目变形吗? 题目其实就是把n+1根 ...
- Linux学习(一):linux更改ip地址命令_更改DNS_更改默认网关_更改子网掩码_主机名
如何使用命令来更改linux的IP .DNS .子网掩码,在虚拟机(vitrualBox)上添加一个Linux的虚拟机; 安装方法:http://pan.baidu.com/s/1sjJPhP7 安装 ...
- WinRAR 自动解压 解压完成后,执行批处理文件
部分内容参考网页:http://bbs.kafan.cn/thread-1243208-1-1.html WinRAR 的自动解压文件功能使压缩包也能像 Setup 程序那样,双击后显示一个软件许可, ...
- NSString+URLEncoding
NSString+URLEncoding.h #import <Foundation/Foundation.h> @interface NSString(URLEncoding) - (N ...
- 加密传输SSL协议7_SSL协议概述
SSL(Secure Sockets Layer) SSL的功能,可以在通信的双方中建立一个加密的通信通道 同时还可以确认通信的双方是不是就是其声称的人,防止被钓鱼. SSL在网络协议栈中的位置:可以 ...
- Python框架
Django.Pylons & TurboGears & repoze.bfg.Tornado & web.py.Bottle & Flask.Quixote(豆瓣用 ...
- [置顶] 蓝牙基础知识进阶——Physical channel
从本篇文章开始,晓东将会和大家一起来学习一些蓝牙的比较高阶的基础知识. 二.物理通道 物理通道是piconet区分的标准,它是蓝牙系统结构层次中的最底层了. Q1:物理通道有哪些类型 物理通道 ...
- java.util.List org.apache.struts2.components.Form.getValidators(java.lang.String) threw an exception
在使用ajax主题时出现上述错误的解决办法是将form表单中的action属性值改为*.action后就可以解决.至于为什么会这样不太明白.但是修改action的属性值以后就会出现另一个错误即 对应的 ...