目前主流的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是Java开发中最常用的三大开源框架,它们的整合使用,通常被称为SSM框架。这个框架组合提供了完整的后端服务解决方案,包括依赖注入(DI)、面向切面编程(AOP)、模型-视图-控制器(MVC...
MybatisGenerate是一个强大的工具,主要用于自动化生成Mybatis相关的代码,以提高开发效率并减少手动编写重复性工作的负担。这个工具是基于tk.mybatis框架的,它整合了Mybatis的优秀特性,使得开发者能够更加便捷地...
MyBatis是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以对配置和原生Map使用简单的XML或注解,将接口和Java的POJOs...
MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 ...
MyBatis是一个优秀的Java持久层框架,它支持定制化SQL、存储过程以及高级映射。在深入探讨MyBatis 3.2.6版本的源码之前,我们首先需要了解MyBatis的基本概念和功能。 MyBatis的核心部分主要包括SqlSessionFactory、...
MyBatis学习总结笔记 MyBatis是一个优秀的持久层框架,它支持自定义SQL、存储过程以及高级映射。MyBatis免除了几乎所有的JDBC代码以及设置参数和获取结果集的工作。MyBatis可以通过简单的XML或注解来配置和映射原始...
MyBatis是一个优秀的Java持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的...
项目名称: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 ...
这个压缩包文件“mybatisx.zip”包含了多个版本的MybatisX插件,包括MybatisX-1.4.16.zip、MybatisX-1.4.8.zip、MybatisX-1.4.6.zip以及MybatisX-1.1.2.zip。这些版本的差异可能体现在功能增强、性能优化或者修复...
在MyBatis中,`mybatis-3-config.dtd` 和 `mybatis-3-mapper.dtd` 是两个至关重要的DTD(Document Type Definition)文件,它们定义了MyBatis配置文件和映射文件的结构和规则。 首先,让我们深入了解一下`mybatis-3...
mybatis在持久层框架中还是比较火的,一般项目都是基于ssm。虽然mybatis可以直接在xml中通过SQL语句操作数据库,很是灵活。但正其操作都要通过SQL语句进行,就必须写大量的xml文件,很是麻烦。mybatis-plus就很好的...
本篇文章将详细介绍两个针对MyBatis框架的IntelliJ IDEA插件——MyBatisCodeHelper-Pro和MybatisX,它们都是为了提升MyBatis开发体验而设计的。 首先,我们来看MyBatisCodeHelper-Pro。这款插件是专为MyBatis开发者...
MyBatis-Flex: 一个优雅的 MyBatis 增强框架。很轻量,MyBatis-Flex 整个框架只依赖 MyBatis,再无其他任何第三方依赖。只增强,MyBatis-Flex 支持 CRUD、分页查询、多表查询、批量操作,但不丢失 MyBatis 原有的...
MyBatis是一款流行的Java持久层框架,它的设计理念是通过简单的XML或注解用于配置和映射原始类型、接口和Java POJOs(Plain Old Java Objects,普通老式Java对象)为数据库中的记录。MyBatis可以与各种数据库交互,...
MyBatis是一款强大的Java持久层框架,它将SQL与Java代码分离,使开发者可以更方便地操作数据库。这篇“MyBatis入门到精通”的学习资料是针对初学者设计的,旨在帮助新手快速掌握MyBatis的基本用法和高级特性。 1. *...
MyBatis入门 MyBatis是一个优秀的持久层框架,使用XML将SQL与程序解耦,便于维护。MyBatis学习简单,执行高效,是JDBC的延伸。MyBatis提供了数据库增删改查的便捷操作,极大提高了开发效率、统一的编码规则、利于...
MyBatis是一个优秀的Java持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的...
"基于Tk MyBatis框架,mybatis 注解方式实现数据的加解密"这个主题就聚焦于如何在MyBatis框架中使用注解来实现在数据库交互过程中对数据的加密与解密。 首先,我们来看Tk MyBatis。Tk MyBatis是MyBatis的增强工具,...
MyBatis 官方中文文档 MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置...