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) 版权声明:本文为博主原 ...
随机推荐
- socket串口通信
SocketServer: #include <arpa/inet.h> #include <stdio.h> #include <stdlib.h> #inclu ...
- C#基础知识梳理索引
C#基础知识梳理索引 一 引子 之前曾写了一篇随笔<.NET平台技术体系梳理+初学者学习路径推荐+我们的愿景与目标> 三个月过去了,目标使更多的编程初学者,轻松高效地掌握C#开发的基础,重 ...
- UML和绘图工具Visio介绍
UML系列01之 UML和绘图工具Visio介绍 概要 UML,全称是Unified Modeling Language,中文是"统一建模语言".通俗点说,UML是一种创建模型的语 ...
- vim实用笔记
vim实用笔记 真是不知不觉过了一年,前段时间忙着考试什么的,没再写笔记写博客,考完又懒懒地玩了几天.这几天其实都在读别人的博客,感受一下大神的工作和生活感悟,感受一下过来人的经历和经验,对自己总 ...
- ODP.NET
1,什么是ODT?就是Oracle 为 .NET (ODP.NET) 专门编写了 Oracle Data Provider,一个用于 Microsoft .NET 环境下的 Oracle 数据访问 A ...
- Django解决 'ascii' codec can't encode characters in position
问题: 文件上传可以上传英文,无法上传中文的. 解决方法:对Apache进行配置 在/etc/apache2/envvars文件加上: export LANG='en_US.UTF-8'export ...
- Vijos1057 盖房子(DP经典题)
之前没有怎么刷过dp的题,所以在此学习了~(感谢walala大神的思路,给了我很大的启发) 也算是自己学习的另一种dp题型吧 先贴上状态转移方程: if(a[i][j]) f[i][j]=min(f[ ...
- Effective Java:Ch4_Class:Item14_在public类中应该使用访问方法而不是public域
你可能偶尔需要编写退化类,目的只是为了集中实例域: // Degenerate classes like this should not be public! class Point { public ...
- cocos2d-x 实现跨平台的目录遍历
可能各位看官们有更好的方法,请不吝赐教. #ifdef _WIN32 #include <io.h> #else #include <unistd.h> #include &l ...
- JBPM4 安装和配置
安装和配置jBPM4,并举个hello.w 至于网上很复杂,但又不懂的插件,我们先不鸟他. myeclipse8\dropins这里就是给我们放插件的,类似SVN之类的.所以小生也修改了下,共享了 ...