mybatis学习笔记一(入门)
昨天看了一下mybatis,学习了一下有很多东西还不懂,但是想把一些知道的记录一下,如有错误请大家多多指点。
mybatis它是apche的一个开源项目,它以前的没名字并不是叫mybatis而是叫ibatis,2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis[1]。
1. 与其他的框架区别
mybatis和hibernate差不多都是,都属于优秀持久层的框架,主要负责访问数据库。但是和hibernate还是有区别的,hibernate是数据纯属的面对对象变成,我们的所有操作基本都是在操作对象,我们根本就不用去负责sql语句,这样会导致我们失去了对sql语句的控制。而mybatis虽说也是在对象进行操作但是不同于hibernate,mybatis可以自己来写sql语句,这样显得更加容易控制一些。
2. 项目演示
2.1 创建数据库和表


2.2 mybatis所需要的jar包
mybatis-3.3.0.jar(mybatis包)
mysql-connector-java-5.1.13-bin.jar(mysql的链接驱动jar包)

2.3mybatis配置文件
我一般都喜欢在项目你在创建一个源码包用来存放配置文件(New->source folder)

在源码包中写一个mybatis.xml文件在这个文件中编写mybatis的配置
<?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><!-- 这是mybatis的配置,我们的配置都写在这里面 -->
<properties resource="jdbc.properties"/>
<!--properties标签用于 引入properties文件,在下面属性中我们要引用到properties中的内容 -->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/><!-- 事务管理 -->
<dataSource type="POOLED"><!-- 数据源 -->
<property name="driver" value="${jdbc.driverClass}"/>
<!-- 指定哪一个驱动 ,从properties中引用-->
<property name="url" value="${jdbc.url}"/>
<!-- 指定哪一个链接url -->
<property name="username" value="${jdbc.user}"/>
<!-- 指定哪一个链接用户 -->
<property name="password" value="${jdbc.password}"/>
<!-- 指定哪一个链接密码 -->
</dataSource>
</environment>
</environments>
<!-- 注册映射关系文件 -->
<mappers>
<!-- 以mapper的形式将指定的映射文件关联进来 -->
<mapper resource="com/home/entity/userMapper.xml"/>
</mappers>
</configuration>
2.4 properties配置文件

2.5 编写实体类
该实体类要与数据库中的表相对应,在类(User)中写个tostring方法便于我们查看
package com.home.entity; /**
* 此类是:user实体类
* @author hpc
* @2017年1月10日下午9:36:59
*/
public class User {
private Integer user_id;
private String user_name;
private String user_pwd;
public Integer getUser_id() {
return user_id;
}
public void setUser_id(Integer user_id) {
this.user_id = user_id;
}
public String getUser_name() {
return user_name;
}
public void setUser_name(String user_name) {
this.user_name = user_name;
}
public String getUser_pwd() {
return user_pwd;
}
public void setUser_pwd(String user_pwd) {
this.user_pwd = user_pwd;
}
@Override
public String toString() {
return "User [user_id=" + user_id + ", user_name=" + user_name + ", user_pwd=" + user_pwd + "]";
} }
2.6 编写映射关系文件
文件名可以随意但是为了一目了然的效果,我们通常是 类名+mapper.xml命名(userMapper.xml)。写完后将我们写好的映射文件在mybatis.xml文件中的mappers标签中注册。
<?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属性一定是唯一的(包名+文件名 就可以了)-->
<mapper namespace="com.home.entity.userMapper" >
<!-- select标签是一个mybatis的查询标签
属性:
id:要是唯一的不能有重复,因为mybatis通过它来找到所写语句
parameterType:查询语句需要的参数,这里也就是指#{id}中的id类型
resultType:数据库查询结果以什么类型返回
-->
<select id="loadUser" parameterType="int" resultType="com.home.entity.User">
<!-- 这是我们的查询语句 -->
select *
from users
where user_id=#{id}
<!--#{id}是我们要查询是传入的参数 -->
</select>
</mapper>
2.7 编写测试类
package com.home.mybatis; import java.io.IOException;
import java.io.InputStream; import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder; import com.home.entity.User; public class TestApp {
public static void main(String[] args) throws IOException {
// mybatis的配置文件
String resource = "mybatis.xml";
// 使用类加载器加载mybatis的配置文件(它也加载关联的映射文件)
InputStream is = TestApp.class.getClassLoader()
.getResourceAsStream(resource);
// 构建SqlSessionFactory,通过SqlSessionFactory来获取session
SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(is);
// 通过SqlSessionFactory获取session
SqlSession session = sf.openSession();
// 你要执行个哪一个sql,指定方式是:mapper标签的namespace属性+查询语句标签的id属性(namespace+id)
String statement = "com.home.entity.userMapper.loadUser";
// 查询一条记录,给他指定的sql和参数,参数要与你配置时给定参数类型一致否则会报类型异常
User user = session.selectOne(statement, 1);
// 打印user
System.out.println(user);
}
}
2.8 效果展示

mybatis学习笔记一(入门)的更多相关文章
- 【MyBatis学习笔记】
[MyBatis学习笔记]系列之预备篇一:ant的下载与安装 [MyBatis学习笔记]系列之预备篇二:ant入门示例 [MyBatis学习笔记]系列之一:MyBatis入门示例 [MyBatis学习 ...
- Mybatis学习笔记(二) 之实现数据库的增删改查
开发环境搭建 mybatis 的开发环境搭建,选择: eclipse j2ee 版本,mysql 5.1 ,jdk 1.7,mybatis3.2.0.jar包.这些软件工具均可以到各自的官方网站上下载 ...
- mybatis学习笔记(二)-- 使用mybatisUtil工具类体验基于xml和注解实现
项目结构 基础入门可参考:mybatis学习笔记(一)-- 简单入门(附测试Demo详细过程) 开始体验 1.新建项目,新建类MybatisUtil.java,路径:src/util/Mybatis ...
- Mybatis学习笔记之二(动态mapper开发和spring-mybatis整合)
一.输入映射和输出映射 1.1 parameterType(输入类型) [传递简单类型] 详情参考Mybatis学习笔记之一(环境搭建和入门案例介绍) 使用#{}占位符,或者${}进行sql拼接. [ ...
- mybatis学习笔记之基础复习(3)
mybatis学习笔记之基础复习(3) mybatis是什么? mybatis是一个持久层框架,mybatis是一个不完全的ORM框架.sql语句需要程序员自己编写, 但是mybatis也是有映射(输 ...
- mybatis学习笔记之基础框架(2)
mybatis学习笔记之基础框架(2) mybatis是一个持久层的框架,是apache下的顶级项目. mybatis让程序将主要精力放在sql上,通过mybatis提供的映射方式,自由灵活生成满足s ...
- Mybatis学习笔记汇总(包括源码和jar包)
博客整理 Mybatis学习笔记(一)--对原生jdbc中问题的总结 Mybatis学习笔记(二)--Mybatis框架 Mybatis学习笔记(三)--入门程序 MyBatis学习笔记(四)--入门 ...
- Mybatis学习笔记导航
Mybatis小白快速入门 简介 本人是一个Java学习者,最近才开始在博客园上分享自己的学习经验,同时帮助那些想要学习的uu们,相关学习视频在小破站的狂神说,狂神真的是我学习到现在觉得最GAN的老师 ...
- python学习笔记--Django入门四 管理站点--二
接上一节 python学习笔记--Django入门四 管理站点 设置字段可选 编辑Book模块在email字段上加上blank=True,指定email字段为可选,代码如下: class Autho ...
- WebSocket学习笔记——无痛入门
WebSocket学习笔记——无痛入门 标签: websocket 2014-04-09 22:05 4987人阅读 评论(1) 收藏 举报 分类: 物联网学习笔记(37) 版权声明:本文为博主原 ...
随机推荐
- UIWebView的探索
UIWebView 说到iOS的UIWebView,应该会很快回忆起常用委托方法,异步loadRequest.stopLoading.reload方法等. 在此我总结一些容易忽略的属性和方法: 1. ...
- .NET面向对象特性之多态
.NET面向对象特性之多态 前言 上一篇总结了面向对象三大特性之一的继承,再接再厉,这一章继续总结多态.同时把继承中涉及到多态的内容进一步补充扩展.可以说“继承”是多态的根基.但继承主要关注的是“共通 ...
- 随手复习一下委托:delegate
先骂个街,天儿太闷了…… 随手复习一下委托,delegate 是一种函数指针,是 .net 提供的一种安全的函数指针,翻译的也很贴切,像是委托人,又像代理人,通过“委托”来执行一些函数而不是直接调用它 ...
- 迟到的 WPF 学习 —— 布局
布局是 WPF 很重头的一部分内容,这一部分梳理和记录关于布局章节的知识点. 1. WPF 使用一种基于流(Flow-based)的概念来处理布局逻辑,将传统的基于"坐标"的思想尽 ...
- [转]影响Cache的几个HTTP头信息
原文地址:http://hi.baidu.com/feilala_fly/item/f79eca08fbf389026c9048a7 Http的Cache机制总共有4个组成部分: Cache-Cont ...
- JS的基本概念
JS的基本概念 任何语言的核心都必然会描述这门语言最基本的工作原理.而描述的内容通常都要涉及这门语言的语法,操作符,数据类型,内置功能等用于构建复杂解决方案的概念.Ecma-262通过叫做EcmaSc ...
- CC.NET-自动化发布时 Web.config 文件维护
[Hello CC.NET]自动化发布时 Web.config 文件维护 在 <[Hello CC.NET]CC.NET 实现自动化集成> 的 HellowWorld 中经实现: 1. ...
- WPF刷新界面之坎坷路
WPF刷新界面之坎坷路 项目需要一个硬件检测功能,需要用到界面刷新,刚开始想用个定时器,对检测过的硬设定时添加后刷新界面. 但是很遗憾,定时器并不能进行刷新.后台检测List数据里面已经添加了很多了很 ...
- C#多线程解决界面卡死问题
C#多线程解决界面卡死问题的完美解决方案 文章下最方有源码下载 问题描述:当我们的界面需要在程序运行中不断更新数据时, 当一个textbox的数据需要变化时, 对于这个问题可以先参考下我的另外一个文章 ...
- 简单的理解deflate算法
简单的理解deflate算法 最近做压缩算法. 用到了deflate压缩算法, 找了很多资料, 这篇文章算是讲的比较易懂的, 这篇文章不长,但却浅显易懂, 基本上涵盖了我想要知道的所有要点. 翻译 ...