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. MySQL高级知识(三)——索引

    前言:索引在sql调优部分占据着重要的位置,了解并深入索引对我们来说也是非常重要的.本篇主要介绍MySQL中索引的相关知识点. 1.索引是什么 MySQL官方对索引的定义:索引(Index)是帮助My ...

  2. zabbix全网监控

    为什么要监控 运维的职责1.保障企业数据的安全可靠.2.为客户提供7*24小时服务.3.不断提升用户的体验. 在关键时刻,提前提醒我们服务器要出问题了 当出问题之后,可以便于找到问题的根源 拿到公司服 ...

  3. 【angularJs】阻止默认事件

    $scope.click = function($event){ $event.stopPropagation();//在函数体内加上这句代码就好} 作者:smile.轉角 QQ:493177502 ...

  4. mybatis 常用

    1.新增时获得主键 <insert ...> <selectKey resultType="java.lang.Integer" keyProperty=&quo ...

  5. python3 练习题 day04

    '''1.整理装饰器的形成过程,背诵装饰器的固定格式''''''开放封闭原则:为了保证程序的稳定性,和功能的可开放性,在不修改目标函数源代码和调用方式的情况下,对目标函数增加新功能'''# def w ...

  6. JAVA Exception

    博客背景音乐设置 晴天博客(酷)

  7. redis学习(三)——List数据类型

    一.概述      在Redis中,List类型是按照插入顺序排序的字符串链表.和数据结构中的普通链表一样,我们可以在其头部(left)和尾部(right)添加新的元素.在插入时,如果该键并不存在,R ...

  8. 个人博客添加网易云音乐Flash插件

    博客底部添加网易云音乐播放插件 歌单或者歌曲外链可从音乐界面"生成外链播放器"中得到,选择Flash播放插件即可 footer.html文件增加 实现效果: 历史精选文章: Jli ...

  9. hibernate 解决诡异的mysql存入中文乱码

    使用hibernate查询mysql,通过bean的get方法拿到字符串再写入mysql中的字段会中文乱码,需要String string = xxx.get(),把get方法拿到的值传入到新的str ...

  10. 朱晔的互联网架构实践心得S1E5:不断耕耘的基础中间件

    朱晔的互联网架构实践心得S1E5:不断耕耘的基础中间件 [下载本文PDF进行阅读] 一般而言中间件和框架的区别是,中间件是独立运行的用于处理某项专门业务的CS程序,会有配套的客户端和服务端,框架虽然也 ...