MyBatis之一:入门
一、什么是Mybatis
可以简单将mybatis理解为ibatis的升级版本,它是一个java的持久层框架,底层依赖jdbc接口,此持久层框架包含sql maps与data access objects组件。mybatis可以通过xml或者注解的方式用于配置原始映射,将接口和java的pojo映射成数据库中的记录。
下面是mybatis的层级关系,对于理解mybatis的源码有一定的帮助。

二、如何配置MyBatis
开发环境:win10 64位英文版,sql2008r2,eclipse4.4,jdk1.7最新版本号,mavne3.2.1
jar包版本:mybatis3.2.6,sqljdbc4-4.0,log4j-1.2.17、junit-4.11(可选)
步骤:1、在eclipse中新建一个mavne project,选择maven-archetype-quickstart,选择下一步,在新窗口中的artifactid输入项目名称即可。
2、在pom.xml中加入jar包依赖,如下:
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<!-- 表示开发的时候引入,发布的时候不会加载此包 -->
<scope>test</scope>
</dependency> <!-- mybatis核心包 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.2.6</version>
</dependency> <!-- 导入SqlServer数据库链接jar包 -->
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>sqljdbc4</artifactId>
<version>4.0</version> </dependency> </dependencies>
3、在项目里面src/main/java 这个source folder中新建一个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>
<!-- 注意:每个标签必须按顺序写,不然蛋疼的DTD会提示错误:The content of element type "configuration"
must match "(properties?,settings?,typeAliases?,typeHandlers?,objectFactory?,objectWrapperFactory?,plugins?,environments?,mappers?)". --> <!-- 数据库文件 -->
<properties resource="db.properties" /> <!-- environment 开发模式 work 工作模式 -->
<environments default="work">
<environment id="work">
<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>
<!-- 通过xml方式映射 -->
<mapper resource="com/mybatis/demo/userMapper.xml" />
<!-- 通过注解方式映射 -->>
<mapper class="com.mybatis.demo.IUserMapper" />
</mappers> </configuration>
4、在第三步中注意到了<properties resource="db.properties" />这个,这样写是单独将数据库连接字符串放在一个db.properties文件中,如下:
driver = com.microsoft.sqlserver.jdbc.SQLServerDriver
url =jdbc:sqlserver://localhost:1433;databaseName=DBtest
username =sa
password = //这里的密码为空
到这里,通过在pom.xml中添加jar包依赖、在代码文件夹中添加mybatis访问数据库的配置信息以及自身映射信息,新增一个db.properties存放数据库连接字符串信息,一个基本的mybatis测试项目就搭建起来了,如下图

三、创建一个简单的select查询
1、在sql2008中新建一个数据库dbtest,在里面新建一个表users,里面3个字段id,name,age
2、新建一个users的pojo对象。
package com.mybatis.demo;
public class User {
private int id;
private String name;
private int age;
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 int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", age=" + age + "]";
}
}
3、通过xml方式映射数据
在当前包下面新建一个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="com.mybatis.demo.userMapper"> <!-- 根据ID查询得到一个user对象 --> <select id="getUser" parameterType="int" resultType="com.mybatis.demo.User"
resultMap="usermap">
select *
from Users where id_id=#{id}
</select> <resultMap type="com.mybatis.demo.User" id="usermap">
<!--id 针对主键 -->
<id property="id" column="id_id" />
<!-- result针对主键之外的字段 -->
<!-- 如果column写错了,返回值为类型默认值 <result property="name" column="name_s" /> -->
<result property="name" column="name_n" />
<result property="age" column="age_a" />
</resultMap> </mapper>
4、通过注解方式映射数据
在当前包下面新建一个IUserMapper接口
package com.mybatis.demo; import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select; import com.mybatis.demo.*; public interface IUserMapper { @Select("select * from Users where id_id =#{id}")
@Results({ @Result(property="id", column="id_id"),
@Result(property="name" ,column="name_n"),
@Result(property="age" ,column="age_a") })
public User getById(int id);
}
5、新建一个test类
package com.mybatis.demo; 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; public class test {
public static void main(String[] args) throws IOException { //1、加载配置文件
String resource = "conf.xml";
InputStream inputStream = test.class.getClassLoader().getResourceAsStream(resource); //2、构建sqlSession的工厂
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream); //3、创建能执行映射文件中sql的sqlSession
SqlSession session = sessionFactory.openSession(); //4、映射sql的标识字符串
String statement = "com.mybatis.demo.userMapper.getUser"; //5、执行查询
User user1 = session.selectOne(statement, 56);
System.out.println("xml方式:"+user1); IUserMapper userMapper = session.getMapper(IUserMapper.class);
User user2 = userMapper.getById(56);
System.out.println("注解方式:"+user2); //6、关闭session对象
session.close();
}
}
6、需要注意的几个地方
6.1、需要在mybatis的配置文件中,上文中是conf.xml,在mappers节点中注册映射文件,可以以xml或者注解方式,如下
<mapper resource="com/mybatis/demo/userMapper.xml" /> 这里的resource是xml的文件路径
<mapper class="com.mybatis.demo.IUserMapper" /> 这里的class是接口的全类名
这两种方式任选其一即可。
6.2、列别明映射,同样要么是xml方式要么是注解方式,如下
<select id="" resultMap="usermap"></select>
<resultMap type="" id="usermap"><id property="" column=""/><result/></resultMap>
@Results({ @Result(property="", column="")}
其中property表示pojo中的属性,column表示数据库表字段 6.3、在通过xml方式执行sql语句的参数statement
String statement = "com.mybatis.demo.userMapper.getUser";
这里可以简单的理解为userMapper的全类名加上userMapper.xml文件中的节点ID,如图
基本上主要注意上述3个问题,那么一个基于mybatis的简单CRUD操作可以顺利完成。
MyBatis之一:入门的更多相关文章
- MyBatis学习总结(一)——MyBatis快速入门
一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以 ...
- MyBatis快速入门
一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以 ...
- MyBatis学习总结(一)——MyBatis快速入门(转载)
本文转载自http://www.cnblogs.com/jpf-java/p/6013537.html MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了 ...
- MyBatis入门学习教程-MyBatis快速入门
一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以 ...
- MyBatis学习总结(一)——MyBatis快速入门
一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以 ...
- 【转】MyBatis学习总结(一)——MyBatis快速入门
[转]MyBatis学习总结(一)——MyBatis快速入门 一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC ...
- mybatis快速入门(六)
前面mybatis的入门程序基本上都写完了,就看大家的灵活运用了,今天来吧前面的整合一下封装一个公共的BaseDao 只需要把前面的改造下然后创建一个BaseDao的接口,其它的继承BaseDao接口 ...
- MyBatis学习总结-MyBatis快速入门的系列教程
MyBatis学习总结-MyBatis快速入门的系列教程 [MyBatis]MyBatis 使用教程 [MyBatis]MyBatis XML配置 [MyBatis]MyBatis XML映射文件 [ ...
- MyBatis基础入门《二十》动态SQL(foreach)
MyBatis基础入门<二十>动态SQL(foreach) 1. 迭代一个集合,通常用于in条件 2. 属性 > item > index > collection : ...
- MyBatis基础入门《十九》动态SQL(set,trim)
MyBatis基础入门<十九>动态SQL(set,trim) 描述: 1. 问题 : 更新用户表数据时,若某个参数为null时,会导致更新错误 2. 分析: 正确结果: 若某个参数为nul ...
随机推荐
- 【转】win7(windows7)下java环境变量配置方法
原文网址:http://jingyan.baidu.com/article/925f8cb836b26ac0dde0569e.html win7(windows7)下java环境变量配置方法,java ...
- MyBatis学习 之 四、MyBatis配置文件
目录(?)[-] 四MyBatis主配置文件 properties属性 settings设置 typeAliases类型别名 typeHandlers类型句柄 ObjectFactory对象工厂 pl ...
- Winfrom 开发系统导航菜单
先上图看效果在说. 效果图如上,在Web中这个一点难度都没有,几行Css+JS就搞定了.但是在Winfrom中.本来就是半杯水的水准,想做这个个导航菜单,发现真难找,找了很多都不合胃口,只能自己写个了 ...
- 【转】错误日志ID8021来源BROWSER导致电脑死机
现场工控机死机,网上查了篇文章,具体原因还有待分析,下面是图 在这里有必要介绍两个ID号:6006和6005.在事件查看器里ID号为6006的事件表示事件日志服务已停止,如果你没有在当天的事件查看器中 ...
- HDU 5437 Alisha’s Party
题意:有k个人带着价值vi的礼物来,开m次门,每次在有t个人来的时候开门放进来p个人,所有人都来了之后再开一次门把剩下的人都放进来,每次带礼物价值高的人先进,价值相同先来先进,q次询问,询问第n个进来 ...
- fork/join使用示例
fork/join框架是用多线程的方式实现分治法来解决问题.fork指的是将问题不断地缩小规模,join是指根据子问题的计算结果,得出更高层次的结果. fork/join框架的使用有一定的约束条件: ...
- 转载:fstream和ifstream详细用法
文件 I/O 在C++中比烤蛋糕简单多了.在这篇文章里,我会详细解释ASCII和二进制文件的输入输出的每个细节,值得注意的是,所有这些都是用C++完成的. 一.ASCII 输出 为了使用下面的方法, ...
- bug报告-常用词汇中英对照表
- WinDriver&PCIE
1.安装VS2012 安装VS2012略过,主要用它来做数据传输应用程序的,WINDRIVER提供了一系列API接口,方便了用户,使用户能直接进入用户态的编程,因为内核态的编程它已做好,不需要进行修改 ...
- (原创)spring mvc和jersey rest 组合使用时单例对像实例化两次的BUG及解决办法
项目中没用spring 的restTemplate 而是采用 jersey来做rest 的实现,一直用着,也没发现有什么不对,后来加入了,以quartz用硬编码方式实现,结果启动项目的时候报错 ,具体 ...
基本上主要注意上述3个问题,那么一个基于mybatis的简单CRUD操作可以顺利完成。