MyBatis 使用简单的 XML 或注解用于配置和原始映射,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java 对象)映射成数据库中的记录。每个 MyBatis 应用程序主要都是使用 SqlSessionFactory 实例的,一个 SqlSessionFactory 实例可以通过 SqlSessionFactoryBuilder 获得。SqlSessionFactoryBuilder 可以从一个 xml 配置文件或者一个预定义的配置类的实例获得。

使用框架就是引用别人封装好的 jar 包,按照别人规定好的方式进行配置并调用 jar 包里的各种方法。那 Mybatis 需要进行哪些配置呢?我们来看一个例子:

一、创建简单的 POJO 类

package com.wenji.entity;

public class Employee {
private int id;
private String firstName;
private String lastName;
private int salary; public Employee() {}
public Employee(int id,String firstName, String lastName, int salary) {
this.id = id;
this.firstName = firstName;
this.lastName = lastName;
this.salary = salary;
}
//省略getter、setter方法
}

Employee类

二、设置 mybatis 配置文件: Configure.xml(文件名随便起), 在 src/config 目录下建立此文件,内容如下:

<?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.wenji.entity.Employee" alias="Employee"/>
</typeAliases> <environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="oracle.jdbc.driver.OracleDriver"></property>
<property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"></property>
<property name="username" value="system"></property>
<property name="password" value="123456"></property>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/wenji/mapping/Employee.xml"></mapper>
</mappers>
</configuration>

三、设置 Mybatis 映射文件

<?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.wenji.UserMapper">
<select id="GetEmployeeByID" parameterType="int" resultType="Employee">
select id,first_name firstName,last_name lastName,salary from HTCPP.Employee where id = #{id}
</select>
</mapper>

下面是对这两个配置文件一点解释说明:
1、配置文件 Configure.xml 是 mybatis 用来建立 sessionFactory,里面主要包含了数据库连接相关内容,还有 java 类所对应的别名,比如:<typeAlias type="com.wenji.entity.Employee" alias="Employee"/>  这个别名非常重要,在具体的类的映射中,比如: Employee.xml 中 resultType 就是对应这个。要保持一致,这里的 resultType 还有另外单独的定义方式,后面我们再详细介绍说明。
2、Configure.xml 里面的 <mapper resource="com/wenji/mapping/Employee.xml"></mapper> 是包含要映射的类的 xml 配置文件。
3、在 Employee.xml  文件里面主要是定义各种 SQL 语句,以及这些语句的参数,以及要返回的类型等等。

四、测试是否成功

package com.wenji.test;

import java.util.List;
import java.util.Date;
import java.util.Iterator; import java.io.Reader; import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder; import com.wenji.entity.Employee; public class ManageEmployee {
private static SqlSessionFactory sqlSessionFactory;
private static Reader reader; static {
try {
reader = Resources.getResourceAsReader("configure.xml");
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
} catch (Exception e) {
e.printStackTrace();
}
}
public static SqlSessionFactory getSession() {
return sqlSessionFactory;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
SqlSession session = sqlSessionFactory.openSession();
try {
Employee employee = (Employee) session.selectOne(
"com.wenji.UserMapper.GetEmployeeByID", 2);
if(employee!=null){
System.out.println("First Name: " + employee.getFirstName());
System.out.println("Last Name: " + employee.getLastName());
System.out.println("Salary: " + employee.getSalary());
}
} finally {
session.close();
}
}
}

Mybatis 也提供了注解的方式来定义映射,来看下面这个示例

Employee 类不变,Employee.xml 文件不见了,取而代之的是 IEmployee.java 接口

package com.wenji.dao;

import java.util.List;

import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update; import com.wenji.entity.Employee; public interface IEmployee {
@Select("select id,first_name firstName,last_name lastName,salary from Employee where id = #{id3}")
public Employee getEmployeeByID(int id2); @Select("select id,first_name firstName,last_name lastName,salary from Employee ")
public List<Employee> getEmployeeList(); @Insert(" INSERT INTO Employee(id,first_name, last_name,salary) VALUES(#{id}, #{firstName}, #{lastName}, #{salary})")
public void insertEmployee(Employee ee); @Update("UPDATE Employee SET id=#{id},first_name = #{firstName},last_name = #{lastName},salary = #{salary} WHERE id =#{id}")
public void updateEmployee(Employee ee); @Delete("DELETE FROM Employee WHERE id = #{id}")
public void deleteEmployee(int id);
}

因为不存在 Employee.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.wenji.entity.Employee" alias="Employee"/>
<!-- <package name="entity"></package> -->
</typeAliases> <environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="oracle.jdbc.driver.OracleDriver"></property>
<property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"></property>
<property name="username" value="developer"></property>
<property name="password" value="developer"></property>
</dataSource>
</environment>
</environments>
<mappers>
<!-- <mapper resource="com/wenji/mapping/Employee.xml"></mapper> -->
</mappers>
</configuration>

测试方法有很大的不同

package com.wenji.test;

import java.util.List;
import java.util.Date;
import java.util.Iterator; import java.io.Reader; import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder; import com.wenji.dao.IEmployee;
import com.wenji.entity.Employee; public class ManageEmployee {
private static SqlSessionFactory sqlSessionFactory;
private static Reader reader;
static {
try {
reader = Resources.getResourceAsReader("configure.xml");
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
sqlSessionFactory.getConfiguration().addMapper(IEmployee.class);
} catch (Exception e) {
e.printStackTrace();
}
} public static SqlSessionFactory getSession() {
return sqlSessionFactory;
} public static void main(String[] args) {
getEmployeeByID(1);
// getEmployeeList();
// testInsert();
// testUpdate();
// testDelete();
} private static void getEmployeeByID(int id){
SqlSession session = sqlSessionFactory.openSession();
try {
IEmployee iEmployee = session.getMapper(IEmployee.class);
Employee employee = iEmployee.getEmployeeByID(id);
System.out.print("First Name: " + employee.getFirstName());
System.out.print(" Last Name: " + employee.getLastName());
System.out.println(" Salary: " + employee.getSalary());
} finally {
session.close();
}
} private static void getEmployeeList(){
SqlSession session = sqlSessionFactory.openSession();
try {
IEmployee iEmployee = session.getMapper(IEmployee.class);
List<Employee> employees = iEmployee.getEmployeeList();
printEmployees(employees);
} finally {
session.close();
}
} public static void testInsert(){
try{
// 获取Session连接
SqlSession session = sqlSessionFactory.openSession();
// 获取Mapper
IEmployee eMapper = session.getMapper(IEmployee.class);
System.out.println("Test insert start...");
// 执行插入
Employee ee = new Employee();
ee.setId(5);
ee.setFirstName("zhang");
ee.setLastName("san");
ee.setSalary(100);
eMapper.insertEmployee(ee);
// 提交事务
session.commit(); // 显示插入之后Employee信息
System.out.println("After insert");
getEmployeeList();
System.out.println("Test insert finished...");
}catch (Exception e){
e.printStackTrace();
}
} public static void testUpdate(){
try{
SqlSession session = sqlSessionFactory.openSession();
IEmployee eMapper = session.getMapper(IEmployee.class);
System.out.println("Test update start...");
printEmployees(eMapper.getEmployeeList());
// 执行更新
Employee ee = eMapper.getEmployeeByID(5);
ee.setFirstName("New name");
eMapper.updateEmployee(ee);
// 提交事务
session.commit();
// 显示更新之后Employee信息
System.out.println("After update");
getEmployeeList();
System.out.println("Test update finished...");
}catch (Exception e){
e.printStackTrace();
}
} // 删除用户信息
public static void testDelete(){
try{
SqlSession session = sqlSessionFactory.openSession();
IEmployee eMapper = session.getMapper(IEmployee.class);
System.out.println("Test delete start...");
// 显示删除之前Employee信息
System.out.println("Before delete");
getEmployeeList();
// 执行删除
eMapper.deleteEmployee(5);
// 提交事务
session.commit();
// 显示删除之后User信息
System.out.println("After delete");
getEmployeeList();
System.out.println("Test delete finished...");
}catch (Exception e){
e.printStackTrace();
}
} /**
*
* 打印用户信息到控制台
*
* @param users
*/
private static void printEmployees(final List<Employee> employees) {
for (Employee employee : employees) {
System.out.print("id: " + employee.getId());
System.out.print("First Name: " + employee.getFirstName());
System.out.print(" Last Name: " + employee.getLastName());
System.out.println(" Salary: " + employee.getSalary());
}
}
}

在JavaEE中使用Mybatis框架的更多相关文章

  1. Java Web开发中Spring+MyBatis框架的简单搭建

    这里使用的eclipse,首先创建一个动态web项目. 1.导入Spring IOC.AOP.DAO.dbcp.dbdrive.mybatis.jar . mybatis-spring.jar  本人 ...

  2. 在JavaEE中使用Hibernate框架

    我们必须要了解一些Hibernate基础对象,如下: 配置对象 配置对象是你在任何 Hibernate 应用程序中创造的第一个 Hibernate 对象,并且经常只在应用程序初始化期间创造.它代表了 ...

  3. OSGI企业应用开发(十)整合Spring和Mybatis框架(三)

    上篇文章中,我们已经完成了OSGI应用中Spring和Mybatis框架的整合,本文就来介绍一下,如何在其他Bundle中,使用Mybatis框架来操作数据库. 为了方便演示,我们新建一个新的Plug ...

  4. IDEA中写MyBatis的xml配置文件编译报错的坑

    IDEA中写MyBatis的xml配置文件编译报错的坑 说明:用IDEA编译工具在项目中使用Mybatis框架,编写mybatis-config.xml和Mapper.xml配置文件时,编译项目出现错 ...

  5. MyBatis框架的详解

    一.MyBatis的介绍 在使用的时候,需要配置文件的方式告知框架需要的信息,多数会使用XML文件作为框架的配置文件. 框架都是由第三方提供的,提供的都是jar包.因此,使用框架前,必须将框架涉及的j ...

  6. 在springboot中集成mybatis开发

    在springboot中利用mybatis框架进行开发需要集成mybatis才能进行开发,那么如何在springboot中集成mybatis呢?按照以下几个步骤就可以实现springboot集成myb ...

  7. SSM:spring+springmvc+mybatis框架中的XML配置文件功能详细解释(转)

    原文:https://blog.csdn.net/yijiemamin/article/details/51156189# 这几天一直在整合SSM框架,虽然网上有很多已经整合好的,但是对于里面的配置文 ...

  8. 0927-转载:SSM:spring+springmvc+mybatis框架中的XML配置文件功能详细解释

    这篇文章暂时只对框架中所要用到的配置文件进行解释说明,而且是针对注解形式的,框架运转的具体流程过两天再进行总结. spring+springmvc+mybatis框架中用到了三个XML配置文件:web ...

  9. SSM:spring+springmvc+mybatis框架中的XML配置文件功能详细解释

    这几天一直在整合SSM框架,虽然网上有很多已经整合好的,但是对于里面的配置文件并没有进行过多的说明,很多人知其然不知其所以然,经过几天的搜索和整理,今天总算对其中的XML配置文件有了一定的了解,所以拿 ...

随机推荐

  1. 利用碎片化时间Get Linux系统

    利用碎片化时间Get Linux系统 起初,我做着一份与IT毫无关系的工作,每月领着可怜的工资,一直想改变现状,但无从下手,也就是大家熟知的迷茫.我相信,每一个人都会或多或少的经历过迷茫,迷茫每一个选 ...

  2. 在ASP.NET MVC中使用Redis

    一.Redis基本认知 1.含义: REmote DIctionary Server(Redis) | 是一个key-value存储系统 2.特性: 2.1 持久化:可以将内存中的数据保存在磁盘中,重 ...

  3. 学习任务,阅读一下Redis分布式锁的官方文档

    地址: https://redis.io/topics/distlock 这是一篇质疑RedLock的论文:https://martin.kleppmann.com/2016/02/08/how-to ...

  4. 【转】Win10开机密码忘了?教你破解Win10开机密码

    [PConline 技巧]Win10开机密码忘记了怎么办?这个问题很多人都遇到过,如何破解一台Win10电脑的开机密码呢(非BIOS开机密码)?其实很简单,利用下面这个方法,分分钟就能搞定. 一招破解 ...

  5. linux命令之 tar

    参数 -c 创建新归档 -d 比较归档和文件系统的差异 -r 追加文件到归档 -t 存档的内容列表 -x 提取归档所有文件 -C 改变解压目录 -f 使用归档文件或设备归档 -j bzip2 压缩 - ...

  6. oracle SQL 执行进度

    SELECT SS.USERNAME, SS.SID, SS.SERIAL#, SS.MACHINE, SS.PROGRAM, SL.OPNAME, SL.TARGET, SL.START_TIME, ...

  7. upper_bound

    头文件: #include<algorithm> 作用: 查找第一个大于给定数的元素或位置 在从小到大的排序数组中, 1.容器 (1).返回元素 #include<cstdio> ...

  8. JAVA 垃圾收集算法,垃圾收集器与内存分配策略(内容全面,解析简单易懂)

    垃圾收集器需要解决的三个问题: 1)哪些内存需要回收 2)什么时候回收 3)如何回收 背景:程序计数器,虚拟机栈,本地方法栈3个区域随线程而生,随线程而灭,在这几个区域内不需要过多的考虑回收的问题,因 ...

  9. Generative Adversarial Nets[content]

    0. Introduction 基于纳什平衡,零和游戏,最大最小策略等角度来作为GAN的引言 1. GAN GAN开山之作 图1.1 GAN的判别器和生成器的结构图及loss 2. Condition ...

  10. LDAP1-安装部署LDAP服务

    基于Linux部署openldap服务 参考文档: https://blog.csdn.net/computer1024/article/details/78172785 参考文档:  https:/ ...