`
zengshaotao
  • 浏览: 787419 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Mybatis

 
阅读更多

目前主流的ORM,无论 Hibernate 还是
Apache OJB
,都对数据库操作提供了较为完整的封装,提供了从 POJO 到数据库表的全
套映射机制。开发人员往往只需关注POJO 到数据库表的映射关系,然后通过 Hibernate或者 OJB 提供的方法完成持久层操作,基本上不需要对 SQL 的熟练掌握。Hibernate/OJB 会根据制定的存储逻辑,自动生成对应的 SQL 并调用 JDBC 接口加以执行,基本上是一种自动化的操作。 “半自动化,是相对Hibernate等提供了全面的数据库封装机制的全自动化
ORM
实现而言,
着力点在于POJO SQL之间的映射关系,Mybatis便是基于此理念。也就是说,Mybatis并不会为程序员在运行期自动生成 SQL 执行。具体的 SQL 需要程序员编写,然后通过映射配置文件,将SQL所需的参数,以及返回的结果字段映射到指定 POJO

Jar文件为:

ibatis-2.3.jar  
mysql-connecter.jar 

 

数据库脚本:

CREATE DATABASE IBATISSTUDY;  
CREATE TABLE PERSON(  
  ID INT PRIMERY KEY AUTU_INCREMENT,  
  U_NAME VARCHAR(20),  
  U_PASSWORD VARCHAR(20)  

 

POJO类:

package com.jack.ibatis.pojo;  
 
public class Person {  
    private int id;  
    private String username;  
    private String password;  
 
    public int getId() {  
        return id;  
    }  
 
    public void setId(int id) {  
        this.id = id;  
    }  
 
    public String getUsername() {  
        return username;  
    }  
 
    public void setUsername(String username) {  
        this.username = username;  
    }  
 
    public String getPassword() {  
        return password;  
    }  
 
    public void setPassword(String password) {  
        this.password = password;  
    }  


Person类里的属性与person表的字段并不一致,不过没有关系的,在SqlMap中可以使用ResultMap元素进行配置的。
接下来
,就要配置Ibatis的两个关键配置SqlMapConfig总配置文件和SqlMap(连接pojo和sql关系)映射文件。
首先要配置的当然是SqlMapConfig文件:

<?xml version="1.0" encoding="UTF-8"?>  
<!DOCTYPE sqlMapConfig        
    PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"        
    "
http://ibatis.apache.org/dtd/sql-map-config-2.dtd">  
<sqlMapConfig>  
    <!--
唯一的Properties文件,加载数据库连接信息 -->  
    <properties resource="mysql.properties"/>  
<!--
配置和优化SqlMapClient实例的各选项,是可选的
  
<settings   
    cacheModelsEnabled="true"      
    enhancementEnabled="true"      
    lazyLoadingEnabled="true"      
    errorTracingEnabled="true"      
    maxRequests="32"          
    maxSessions="10"          
    maxTransactions="5"          
    useStatementNamespaces="false"   
    />   
-->  
    <!--
配置Ibatis事务管理,使用JDBC事务类型,数据源使用Simple类型
-->  
    <transactionManager type="JDBC">  
        <dataSource type="SIMPLE">  
            <property name="JDBC.Driver" value="${mysql.driver}"/>  
            <property name="JDBC.ConnectionURL" value="${mysql.url}"/>  
            <property name="JDBC.Username" value="${mysql.username}"/>  
            <property name="JDBC.Password" value="${mysql.password}"/>  
        </dataSource>  
    </transactionManager>   
    <!--
配置Ibatis要使用的SqlMap文件信息
-->  
    <sqlMap resource="com/jack/ibatis/pojo/map/person.xml"/>  
</sqlMapConfig>  
   setting
元素可以配置和优化SqlMapClient对象的各选项

 

 

SqlMap文件person.xml,此文件是专门针对您的POJO类进行配置的

<?xml version="1.0" encoding="UTF-8"?>  
<!DOCTYPE sqlMap        
    PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"        
    "
http://ibatis.apache.org/dtd/sql-map-2.dtd">  
<sqlMap>  
    <!--
Person类设置一个别名 -->  
    <typeAlias alias="person" type="com.jack.ibatis.pojo.Person"/>  
    <!--
配置表和类之间的映射关系
-->  
    <resultMap class="com.jack.ibatis.pojo.Person" id="personMap">  
        <result property="id" column="ID"/>  
        <result property="username" column="U_NAME"/>  
        <result property="password" column="U_PASSWORD"/>  
    </resultMap>  
    <!--
添加用户
-->  
    <insert id="insertPerson" parameterClass="person">  
        <!--
配置Mysql主键自动增长
-->  
        <selectKey keyProperty="id" resultClass="int">  
            SELECT LAST_INSERT_ID() as value  
        </selectKey>  
                  <!--
配置Oracle主键自动增长
   
                  <selectKey resultClass="int" keyProperty="id" type="pre">      
                            <![CDATA[SELECT STOCKIDSEQUENCE.NEXTVAL AS ID FROM DUAL]]>      
                  </selectKey>-->  
                  <!--
配置MSServer主键自动增长
   
                  <selectKey resultClass="int" keyProperty="id">      
                     <![CDATA[SELECT SCOPE_IDENTITY() AS ID ]]>    
                  </selectKey>-->  
        <![CDATA[  
            INSERT PERSON(U_NAME,U_PASSWORD) VALUES(#username#,#password#)  
        ]]>  
    </insert>  
    <!--
查看特定用户
-->  
    <select id="queryPersonById" parameterClass="int" resultMap="personMap">  
        <![CDATA[  
            SELECT * FROM PERSON WHERE ID=#id#  
        ]]>  
    </select>  
    <!--
查看所有的用户
-->  
    <select id="queryAllPerson" resultMap="personMap">  
        <![CDATA[  
            SELECT * FROM PERSON  
        ]]>  
    </select>  
</sqlMap> 


Java
代码 
import java.io.Reader;  
 
import org.junit.Test;  
 
import com.ibatis.common.resources.Resources;  
import com.ibatis.sqlmap.client.SqlMapClient;  
import com.ibatis.sqlmap.client.SqlMapClientBuilder;  
import com.jack.ibatis.pojo.Person;  
 
public class TestPerson {  
    @Test 
    public  void testInsert(){  
        String resource = "sqlMapConfig.xml";  
        try {  
            //
读取配置文件  
            Reader reader = Resources.getResourceAsReader(resource);  
            //
得到SqlMapClient  
            SqlMapClient sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);  
            Person person = new Person();  
            person.setUsername("jack");  
            person.setPassword("jack");  
            //
开始Ibatis事务  
            sqlMap.startTransaction();  
            sqlMap.insert("insertPerson", person);  
            //
结束IBatis事务  
            sqlMap.commitTransaction();  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
    }  
    @Test 
    public void testQuery(){  
        String resource = "sqlMapConfig.xml";  
        try {  
            //
读取配置文件  
            Reader reader = Resources.getResourceAsReader(resource);  
            //
得到SqlMapClient  
            SqlMapClient sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);  
            //
查看全部的用户  
            sqlMap.queryForList("queryAllPerson");  
            //
查看特定的用户  
            sqlMap.queryForObject("queryPersonById", 1);  
        }catch(Exception e){}  
    }  


分享到:
评论

相关推荐

    Spring+SpringMVC+Mybatis框架整合例子(SSM) 下载

    Spring、SpringMVC和Mybatis是Java开发中最常用的三大开源框架,它们的整合使用,通常被称为SSM框架。这个框架组合提供了完整的后端服务解决方案,包括依赖注入(DI)、面向切面编程(AOP)、模型-视图-控制器(MVC...

    MybatisGenerate_代码生成_tkMybatis_mybatisgenerate_mybatis_

    MybatisGenerate是一个强大的工具,主要用于自动化生成Mybatis相关的代码,以提高开发效率并减少手动编写重复性工作的负担。这个工具是基于tk.mybatis框架的,它整合了Mybatis的优秀特性,使得开发者能够更加便捷地...

    mybatis的中文api文档

    MyBatis是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以对配置和原生Map使用简单的XML或注解,将接口和Java的POJOs...

    mybatis3.5.7.zip

    MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 ...

    mybatis-3-mybatis-3.2.6

    MyBatis是一个优秀的Java持久层框架,它支持定制化SQL、存储过程以及高级映射。在深入探讨MyBatis 3.2.6版本的源码之前,我们首先需要了解MyBatis的基本概念和功能。 MyBatis的核心部分主要包括SqlSessionFactory、...

    【狂神说】mybatis学习总结笔记(全)PDF格式文档 MyBatis.pdf

    MyBatis学习总结笔记 MyBatis是一个优秀的持久层框架,它支持自定义SQL、存储过程以及高级映射。MyBatis免除了几乎所有的JDBC代码以及设置参数和获取结果集的工作。MyBatis可以通过简单的XML或注解来配置和映射原始...

    mybatis中文离线文档

    MyBatis是一个优秀的Java持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的...

    高效数据脱敏工具 - MyBatis-Cipher,基于MyBatis的数据库敏感信息加密解密方案

    项目名称:MyBatis-Cipher - 高效数据脱敏工具 项目简介: MyBatis-Cipher 是一款基于 Java 语言开发的数据库敏感信息加密解密方案,专为 MyBatis 设计。它能够在数据进出数据库(DB)的过程中自动对敏感信息进行...

    mybatis-plus最新代码生成器项目源码 :mybatis-plus-generator.zip

    mybatis-plus最新代码生成器项目源码 :mybatis-plus-generator.zip mybatis-plus最新代码生成器项目源码 :mybatis-plus-generator.zip mybatis-plus最新代码生成器项目源码 :mybatis-plus-generator.zip ...

    mybatisx.zip

    这个压缩包文件“mybatisx.zip”包含了多个版本的MybatisX插件,包括MybatisX-1.4.16.zip、MybatisX-1.4.8.zip、MybatisX-1.4.6.zip以及MybatisX-1.1.2.zip。这些版本的差异可能体现在功能增强、性能优化或者修复...

    mybatis-3-config.dtd mybatis-3-mapper.dtd

    在MyBatis中,`mybatis-3-config.dtd` 和 `mybatis-3-mapper.dtd` 是两个至关重要的DTD(Document Type Definition)文件,它们定义了MyBatis配置文件和映射文件的结构和规则。 首先,让我们深入了解一下`mybatis-3...

    MyBatis-Plus入门+MyBatis-Plus文档手册 中文pdf高清版.rar

    mybatis在持久层框架中还是比较火的,一般项目都是基于ssm。虽然mybatis可以直接在xml中通过SQL语句操作数据库,很是灵活。但正其操作都要通过SQL语句进行,就必须写大量的xml文件,很是麻烦。mybatis-plus就很好的...

    IDEA的MyBatis插件两个

    本篇文章将详细介绍两个针对MyBatis框架的IntelliJ IDEA插件——MyBatisCodeHelper-Pro和MybatisX,它们都是为了提升MyBatis开发体验而设计的。 首先,我们来看MyBatisCodeHelper-Pro。这款插件是专为MyBatis开发者...

    MyBatis-Flex: 一个优雅的 MyBatis 增强框架

    MyBatis-Flex: 一个优雅的 MyBatis 增强框架。很轻量,MyBatis-Flex 整个框架只依赖 MyBatis,再无其他任何第三方依赖。只增强,MyBatis-Flex 支持 CRUD、分页查询、多表查询、批量操作,但不丢失 MyBatis 原有的...

    MyBatis3官方中文文档

    MyBatis是一款流行的Java持久层框架,它的设计理念是通过简单的XML或注解用于配置和映射原始类型、接口和Java POJOs(Plain Old Java Objects,普通老式Java对象)为数据库中的记录。MyBatis可以与各种数据库交互,...

    MyBatis入门到精通

    MyBatis是一款强大的Java持久层框架,它将SQL与Java代码分离,使开发者可以更方便地操作数据库。这篇“MyBatis入门到精通”的学习资料是针对初学者设计的,旨在帮助新手快速掌握MyBatis的基本用法和高级特性。 1. *...

    MyBatis入门.pdf

    MyBatis入门 MyBatis是一个优秀的持久层框架,使用XML将SQL与程序解耦,便于维护。MyBatis学习简单,执行高效,是JDBC的延伸。MyBatis提供了数据库增删改查的便捷操作,极大提高了开发效率、统一的编码规则、利于...

    MyBatis-3.4.6.zip

    MyBatis是一个优秀的Java持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的...

    基于Tk MyBatis框架,mybatis 注解方式实现数据的加解密

    "基于Tk MyBatis框架,mybatis 注解方式实现数据的加解密"这个主题就聚焦于如何在MyBatis框架中使用注解来实现在数据库交互过程中对数据的加密与解密。 首先,我们来看Tk MyBatis。Tk MyBatis是MyBatis的增强工具,...

    mybatis_3.5.9官方中文文档pdf

    MyBatis 官方中文文档 MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置...

Global site tag (gtag.js) - Google Analytics