配置MyBatis 3

MyBatis是一个非常流行且也是最有效的SQL映射框架。 MyBatis可用于Java和.net语言。 MyBatis并不是Hibernate的真正替代品,但是我们可以使用该框架来减少MyBatis提供的高效和高性能的数据库相关代码。

本教程将向您展示使用数据库配置MyBatis 3的步骤。 MyBatis 3支持基于xml和基于注释的配置,但是在使用xml配置时可以看到MyBatis的真正功能。 本教程仅向您显示使用xml的配置。


使用的工具:

  1. MyBatis 3.0.4
  2. MySql Java连接器5.1

使用MyBatis不需要很多jar,只需带驱动程序的MyBatis jar:

  1. commons-logging-1.1.1.jar
  2. mybatis-3.0.4.jar
  3. mysql-connector-java-5.1.13-bin.jar

在本教程中,我们将配置MyBatis将pojo类对象存储到数据库表中。 以下是在此示例中将使用的数据库表:

CREATE TABLE Product(id int primary key, brand varchar(20),model varchar(20), name varchar(30));

因此,首先,在要用于存储的数据库中创建此表。
以下是将映射到表产品的Product类:

package com.raistudies.domain;import java.io.Serializable;public class Product implements Serializable{private static final long serialVersionUID = -1900054678340682193L;private long id;private String brand;private String model;private String name;// Getter and setter are removed to make the short}

我们将看到将上述内容映射到数据库表产品所要执行的配置。
在MyBatis 3中,我们有两种类型的配置文件:

环境规范配置文件:将只有一个文件定义MyBatis映射框架要使用的环境设置。 该文件定义了与数据库连接,驱动程序,事务管理,连接池,其他映射文件相关的设置,以及许多我们将在后续教程中看到的设置。

映射文件: MyBatis框架的一个应用程序中可以有多个映射文件。 映射文件包含有关在Java接口中定义的相关服务集的信息。 它定义了用于特定服务的参数化SQL语句,输入了SQL参数,并且还定义了由SQL语句返回的结果数据的返回映射。
这就是说,我们的示例中将有两个xml文件:一个用于环境设置,另一个将是与Product类相关的服务的映射文件。
以下是环境规范配置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><settings><setting name="lazyLoadingEnabled" value="false" /></settings><typeAliases><typeAlias type="com.raistudies.domain.Product" alias="product"/></typeAliases><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost/test"/><property name="username" value="root"/><property name="password" value="pass"/></dataSource></environment></environments><mappers><mapper resource="com/raistudies/services/ProductServices.xml"/></mappers></configuration>

如您所见,<configuration />保留了配置,并且有许多标签定义了MyBatis映射框架的设置。 我们将一一看到以上所有设置:

<settings /> :此标签用于指定一些用于整个MyBatis应用程序的通用设置。 上面的文件文件包含将属性“ lazyLoadingEnabled”设置为禁用的示例。 在接下来的教程中,我们将看到更多设置选项。

<typeAliases>:标记将允许为我们的域类使用定义别名,以便以后在任何MyBatis配置文件中使用。

<environments />:标签用于定义与数据库相关的设置。 我们可以有多个环境设置,但是MyBatis将一次使用默认属性指定的一个环境。

<mappers>:此标记用于定义映射文件xml文件的位置。 我们可以定义多个映射文件。

在界面中定义服务:

之后,您必须创建一个接口,该接口将定义我们要提供的服务。 在is接口之后,该接口仅为域类Product定义了一种“保存”方法:

package com.raistudies.services;import com.raistudies.domain.Product;public interface ProductServices {public void save(Product product);
}

现在,我们必须为此服务定义映射文件。 以下是接口的映射文件:

<?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.raistudies.services.ProductServices"><insert id="save" parameterType="product">INSERT INTO Product (id,brand,model,name)VALUE ( #{id}, #{brand}, #{model}, #{name} )</insert></mapper>

映射文件将包含元素<mapper />来定义服务的SQL语句。 在这里,属性“ 名称空间 ”定义了已为其定义此映射文件的接口。

<insert />标记定义该操作为插入类型。 “ id ”属性的值指定为其定义操作的函数名称。 这是保存。 属性“ parameterType ”定义方法的参数是哪种类型。 我们在这里为产品类使用了别名。 然后,我们必须定义SQL语句。 #{id}定义将Product类的属性“ id ”作为参数传递给SQL查询。

创建MyBatis会话并使用产品服务:

以下是我们的测试类,该类创建MyBasit的Session,然后使用ProductService接口的save方法保存Product类的实例:

package com.raistudies.runner;import java.io.IOException;
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.raistudies.domain.Product;
import com.raistudies.services.ProductServices;public class AppTester {private static SqlSessionFactory sessionFac = null;private static Reader reader;private static String CONFIGURATION_FILE = "sqlmap-config.xml";static{try {reader = Resources.getResourceAsReader(CONFIGURATION_FILE);sessionFac = new SqlSessionFactoryBuilder().build(reader);} catch (IOException e) {e.printStackTrace();}}public static void main(String[] args) {SqlSession session = sessionFac.openSession();try {ProductServices productServiceObj = session.getMapper(ProductServices.class);Product product = new Product();product.setId((long)(Math.random()*100));product.setBrand("LG");product.setModel("P500");product.setName("Optimus One");productServiceObj.save(product);session.commit();} finally {session.close();}}}

session.getMapper()方法提供由MaBatis框架在运行时定义的接口的默认实现。

运行此示例时,记录将保存到数据库表中。

MyBatis配置插入语句结果

您也可以通过从以下链接下载示例代码来尝试该示例:
来源+库: 下载

参考:来自Rai Studies博客的JCG合作伙伴 Rahul Mondal 配置MyBatis 3 。


翻译自: https://www.javacodegeeks.com/2012/01/configuring-mybatis-3.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/373268.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java中datetime类型转换,Java中日期格式和其他类型转换详解

涉及的核心类&#xff1a;Date类、SimpleDateFormat类、Calendar类一、Date型与long型Date型转换为long型Date date new Date();//取得当前时间Date类型long date2long date.getTime();//Date转longlong型转换为Date型long cur System.currentTimeMills();//取得当前时间lon…

GWT MVP变得简单

GWT Model-View-Presenter是用于大规模应用程序开发的设计模式。 它源于MVC&#xff0c;它在视图和逻辑之间进行划分&#xff0c;并有助于创建结构良好&#xff0c;易于测试的代码。 为了帮助像我这样的懒惰开发人员&#xff0c;我研究了如何减少使用声明式UI时要编写的类和接口…

今年计划要看的书全部备齐

上个月购买的书《今年计划看的书其中几本》 http://www.cnblogs.com/insus/p/5325513.html 昨天购买的书回来了&#xff0c;今年计划要看的书全部备齐。《MongoDB》&#xff0c;《深入理解Bootstarp》和《ASP.NETSignalR编程实践》…… 转载于:https://www.cnblogs.com/in…

图形教程

众所周知&#xff0c;我们可以借助Java库制作游戏&#xff0c;这些库为我们提供制作游戏所需的图形。 因此&#xff0c;今天我将开始一个关于Java图形的非常新的部分。 我之前曾发表过有关如何制作所得税计算器的文章 。 首先要满足一些先决条件&#xff1a; -您应该对Java语法…

向导设计模式

我们都喜欢巫师……。 &#xff08;我的意思是软件向导&#xff09;。 我们总是很高兴跳上那些“下一步”按钮&#xff0c;就像我们在我们的时髦的小鸡上跳舞一样。 因此&#xff0c;今天我们将您心爱的向导带入您的编码经验中。 让我们跳入一个例子。 假设您要设计一个Conserv…

Flex 布局教程:语法篇

网页布局&#xff08;layout&#xff09;是CSS的一个重点应用。 布局的传统解决方案&#xff0c;基于盒状模型&#xff0c;依赖 display属性 position属性 float属性。它对于那些特殊布局非常不方便&#xff0c;比如&#xff0c;垂直居中就不容易实现。 2009年&#xff0c;W3…

JavaFX 2中的PopupMenu

创建弹出菜单 要在JavaFX中创建Popupmenu&#xff0c;可以使用ContextMenu类。 您向其中添加MenuItems&#xff0c;也可以使用SeparatorMenuItem创建可视分隔符。 在下面的示例中&#xff0c;我选择子类ContextMenu并将MenuItems添加到其构造函数中。 public class Animatio…

matlab中CH指标聚类评价指标,MATLAB聚类有效性评价指标(外部)

MATLAB聚类有效性评价指标(外部)作者&#xff1a;凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/更多内容&#xff0c;请看标签&#xff1a;MATLAB、聚类前提&#xff1a;数据的真实标签已知&#xff01;1. 归一化互信息(Normalized Mutual information)定义程序functio…

php-cgi cpu很高,php-cgi占用cpu资源过高的解决方法

转的网上的&#xff0c;不过对PHP-CGI菜鸟的人&#xff0c;还是有点帮助的。1. 一些php的扩展与php版本兼容存在问题&#xff0c;实践证明 eAccelerater与某些php版本兼容存在问题&#xff0c;具体表现时启动php-cgi进程后&#xff0c;运行10多分钟&#xff0c;奇慢无比&#x…

多表之间关联查询

内连接 jion on 自连接 本表进行内连接的查询形式 外链接&#xff1a; 左链接 写法&#xff1a;select 字段 from 表1 t left join 表2 s on t.字段1 s.字段1 where 条件 或者 作用&#xff1a;保证左边的表的数据全部显示&#xff0c;包括空的 右链接 写法 &#xff1a;sele…

Java 7:WatchService

在Java 7的所有新功能中&#xff0c;更有趣的是WatchService&#xff0c;它增加了监视目录更改的功能。 WatchService直接映射到本机文件事件通知机制&#xff08;如果有&#xff09;。 如果本机事件通知机制不可用&#xff0c;则默认实现将使用轮询。 结果&#xff0c;响应性&…

做一件事情的3个关键指标:兴趣、能力和回报

最近突然有了一点新的感悟&#xff0c;在原有的认识基础之上。关于找工作&#xff0c;大家说的最多的&#xff0c;根据自己的“兴趣”和“能力”。我觉得这是不够的&#xff0c;还应该加上一个“回报”。兴趣&#xff1a;对一件事有没有愿望去尝试&#xff0c;侧重“好奇心”。…

iOS应用内支付(IAP)详解

在iOS开发中如果涉及到虚拟物品的购买&#xff0c;就需要使用IAP服务&#xff0c;我们今天来看看如何实现。 在实现代码之前我们先做一些准备工作&#xff0c;一步步来看。 1、IAP流程 IAP流程分为两种&#xff0c;一种是直接使用Apple的服务器进行购买和验证&#xff0c;另一种…

php 去除 html 属性,用PHP 去掉所有html标签里的部分属性

用PHP 去掉所有html标签里的部分属性http://zhidao.baidu.com/question/418471924.html用PHP 去掉所有html标签里的部分属性 tppabsset_time_limit(0);function view_dir($dir){$dpopendir($dir); //打开目录句柄//echo "".$dir."";$path2;while ($file r…

在Windows上安装Elasticsearch 5.0

在windows上安装Elasticsearch Elasticsearch可以使用.zip软件包安装在Windows上。 elasticsearch-service.bat命令&#xff0c;它将设置Elasticsearch作为服务运行。 Elasticsearch的最新稳定版在Download Elasticsearch下载&#xff0c;其他的版本在Past Releases page下载。…

Java EE 6示例– Galleria

您是否一直想知道在哪里可以找到使用Java EE 6构建的良好端到端示例&#xff1f; 我有。 您在网上找到的大多数东西都是非常基础的&#xff0c;不能解决现实世界中的问题。 Java EE 6教程就是这样。 所有其他内容&#xff0c;例如Adam Bien所发表的大多数内容&#xff0c;都是范…

如何在Jetty中使用SPDY

SPDY是Google提出的一种新协议&#xff0c;是针对网络的新协议。 SPDY与HTTP兼容&#xff0c;但尝试通过压缩&#xff0c;多路复用和优先级降低网页负载。准确地说&#xff0c;快速的目标是&#xff1a;&#xff08; http://dev.chromium.org/spdy/spdy-whitepaper &#xff09…

虐杀外星人java,逆天游戏《毁灭全人类2》登PS4 外星人疯狂虐杀地球人

逆天游戏《毁灭全人类2》登PS4 外星人疯狂虐杀地球人2016-10-17 10:45:58来源&#xff1a;游戏下载编辑&#xff1a;小年青评论(0)广大的小伙伴都有看过许多外星人企图入侵毁灭地球的电影&#xff0c;已此为题材而开发的游戏也不在少数。近日泛欧洲游戏信息组织又为一款该种题材…

Android之仿微信图片选择器

先上效果图。第一张图显示的是“相机”文件夹中的所有图片&#xff1b;通过点击多张图片可以到第二张图所示的效果&#xff08;被选择的图片会变暗&#xff0c;同时选择按钮变亮&#xff09;&#xff1b;点击最下面的那一栏可以到第三张图所示的效果&#xff08;显示手机中所有…

loss function

什么是loss? loss: loss是我们用来对模型满意程度的指标。loss设计的原则是&#xff1a;模型越好loss越低&#xff0c;模型越差loss越高&#xff0c;但也有过拟合的情况。     loss function: 在分类问题中&#xff0c;输入样本经过含权重矩阵θ的模型后会得出关于各个类别…