`

Ibatis简单应用

阅读更多

 

jar包:

下载ibatis-2.3.0.677.jar

mysql驱动包

配置文件:

jdbc配置文件:db.properties

 

driver=com.mysql.jdbc.Driver

url=jdbc:mysql://localhost:3306/test

username=root

password=root

数据库表:

 

DROP TABLE IF EXISTS `test`;

/*!40101 SET @saved_cs_client     = @@character_set_client */;

/*!40101 SET character_set_client = utf8 */;

CREATE TABLE `test` (

  `id` int(11) NOT NULL AUTO_INCREMENT,

  `name` varchar(30) DEFAULT NULL,

  PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8;

主配置:SqlMapConfig.xml (像hibernate中的hibernate.cfg.xml)

 

<?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 resource="db.properties"/>

<transactionManager type="JDBC">

<dataSource type="SIMPLE">

<property value="${driver}" name="JDBC.Driver"/>

<property value="${url}" name="JDBC.ConnectionURL"/>

<property value="${username}" name="JDBC.Username"/>

<property value="${password}" name="JDBC.Password"/>

</dataSource>

</transactionManager>

    <!--如果有包的话用'/'隔开-->

<sqlMap resource="Test.xml"/>

</sqlMapConfig>

 

 类配置:Test.xml(像hibernate中的类名.hbm.xml不过那是对象映射,而这里配置的是所使用的sql

 

<?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>

   <!--alias用于起别名 如果type中有包名的话 alias可简化代码-->

<typeAlias alias="Test" type="Test"/>

<!-- id是个标识,不能重复,用于读取 就像spring里配置文件中bean中的id 

resultClass是返回对象的类型  如果是list返回list中元素的类型-->

<select id="selectAll" resultClass="Test">

select * from test

</select>


<!-- parameterClass是参数的类型 参数用#param#表示-->

<select parameterClass="int" id="selectTestById" resultClass="Test">

select * from test where id=#id#

</select>

<!-- parameterClass不区分大小写 -->

<insert id="add" parameterClass="test">

insert into test(id,name) values(#id#,#name#)

</insert>


<!-- set多 用,隔开 -->

<update id="update" parameterClass="Test">

update test set name=#name# where id=#id#

</update>

<!-- 模糊查询必须加单引号或者双引号并且参数用$param$表示,%放到引号内参数外-->

<select id="fuzzyRetrieve" parameterClass="String" resultClass="Test">

select * from test where name like '%$name$%'

</select>


<!--   也可以在外部传参用%param%,配置用'$param$'表示

<select id="fuzzyRetrieve" parameterClass="String" resultClass="Test">

select * from test where name like '$name$'

</select>

-->


<delete id="delete" parameterClass="int">

delete from test where id=#id#

</delete>

</sqlMap>

 

 javabean:

 

public class Test {



private int id = 0;

private String name = null;

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

}

 

 接口:

 

import java.util.List;

public interface TestDao {

public void add(Test test) throws Exception;

public void delete(int id) throws Exception;

public void update(Test test) throws Exception;

public List<Test>query() throws Exception;

public List<Test> query(String name) throws Exception;

public Test query(int id) throws Exception;

public void addBySequence(Test test) throws Exception;

}

 接口实现:

 

import java.io.IOException;

import java.io.Reader;

import java.util.List;



import com.ibatis.common.resources.Resources;

import com.ibatis.sqlmap.client.SqlMapClient;

import com.ibatis.sqlmap.client.SqlMapClientBuilder;

public class ITestDaoImpl implements TestDao {


private static SqlMapClient sqlMapClient = null;


static{

try {

Reader reader = Resources.getResourceAsReader("SqlMapConfig.xml");

sqlMapClient = SqlMapClientBuilder.buildSqlMapClient(reader);

reader.close();

} catch (IOException e) {

e.printStackTrace();

}

}



public void add(Test test) throws Exception {

sqlMapClient.insert("add",test);

}



public void delete(int id) throws Exception {

sqlMapClient.delete("delete",id);

}



@SuppressWarnings("unchecked")

public List<Test> query() throws Exception {

List<Test>list = sqlMapClient.queryForList("selectAll");

return list;

}



@SuppressWarnings("unchecked")

public List<Test> query(String name) throws Exception {

List<Test>list = sqlMapClient.queryForList("fuzzyRetrieve",name);

return list;

}



public Test query(int id) throws Exception {

Test test = null;

test = (Test)sqlMapClient.queryForObject("selectTestById",id);

return test;

}



public void update(Test test) throws Exception {

sqlMapClient.update("update", test);

}

 以上即配置完成,直接使用mian函数测试,也可使用junit测试


 

ibatis缺点


sql需要自己写

参数数量只能一个


 

ibatis优点

减少代码

简单

 

sql语句与程序代码分离

简化项目中的分工

增强了移植性

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    (179722824)三相异步电机矢量控制仿真模型

    三相异步电机矢量控制仿真模型。内容来源于网络分享,如有侵权请联系我删除。另外如果没有积分的同学需要下载,请私信我。

    一次并发导致错误分析与总结

    一次并发导致错误分析

    025 - 快手直播词和控场话术.docx

    025 - 快手直播词和控场话术

    第4章 管理信息库2024v2.pdf

    第4章 管理信息库2024v2

    (178729196)pytorch人脸表情识别数据集(2w8训练集+7k测试集)

    在本文中,我们将深入探讨如何使用PyTorch进行人脸表情识别。这个数据集包含28,000张训练图像和7,000张测试图像,专为Python开发人员设计,以研究和构建深度学习模型来理解人类的情绪。PyTorch是一个强大的深度学习框架,因其灵活性和易用性而被广泛采用,它提供了动态计算图的功能,便于构建和调试神经网络。 让我们了解人脸表情识别的基本概念。这是一个计算机视觉任务,旨在根据面部特征识别七种基本表情:高兴、悲伤、惊讶、恐惧、愤怒、厌恶和中立。这通常涉及到图像处理、特征提取和机器学习算法。 要开始使用这个数据集,你需要做以下步骤: 1. **数据预处理**:解压Datawhale_人脸情绪识别_数据集文件,然后对图像进行预处理。这可能包括调整大小、归一化像素值到0-1区间、以及数据增强,如随机翻转、裁剪或旋转,以增加模型的泛化能力。 2. **数据加载器**:使用PyTorch的`torch.utils.data.Dataset`和`DataLoader`类来创建自定义数据加载器。这将使你能批量加载数据,并在训练过程中高效地处理图像。 3. **模型构建**:选择一个适合任务的卷

    070 - 直播核心细节话术.docx

    070 - 直播核心细节话术

    基于springboot的微服务的旅行社门店系统的设计实现源码(java毕业设计完整源码+LW).zip

    功能说明:可以管理首页、个人中心、用户管理、旅行社管理、产品分类管理、门店公告管理、行政中心管理、订单信息管理、合同信息管理、社区留言、系统管理等功能模块。环境说明:开发语言:Java框架:springboot,mybatisJDK版本:JDK1.8数据库:mysql 5.7数据库工具:Navicat11开发软件:eclipse/ideaMaven包:Maven3.6

    基于springboot的校友社交系统源码(java毕业设计完整源码+LW).zip

    系统管理员主要包括首页、个人中心、用户管理、校友信息管理、校友会信息管理、加入校友会管理、活动类型管理、校友活动管理、报名申请管理、岗位管理、招聘信息管理、项目管理、校园捐赠管理、我的捐赠管理、校友相亲管理、论坛中心、系统管理。 环境说明: 开发语言:java JDK版本:jdk1.8 框架:springboot 数据库:mysql 5.7/8 数据库工具:navicat 开发软件:eclipse/idea

    АДЛИН - No Love(Instrumental).mp3

    АДЛИН - No Love(Instrumental).mp3

    基于java+springboot+mysql+微信小程序的社区超市管理系统 源码+数据库+论文(高分毕业设计).zip

    项目已获导师指导并通过的高分毕业设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行!可以放心下载 技术组成 语言:java 开发环境:idea、微信开发者工具 数据库:MySql5.7以上 部署环境:maven 数据库工具:navicat

    (177078646)python决策树实现鸢尾花分类

    这个项目是基于 Python 编写的,使用决策树算法对鸢尾花数据集进行分类。决策树是一种常用的监督学习算法,适用于分类和回归问题。在这个项目中,我们主要关注鸢尾花分类任务。 项目介绍: 数据集: 项目使用经典的鸢尾花数据集(Iris dataset)。这个数据集包含了三个不同种类的鸢尾花(山鸢尾、变色鸢尾、维吉尼亚鸢尾)的样本数据,每个样本有四个特征(花瓣长度、花瓣宽度、花萼长度、花萼宽度)。 决策树算法: 决策树是一种树形结构,其中每个节点代表一个特征,每个分支代表一个特征取值,每个叶子节点代表一个类别。通过对数据集进行递归划分,决策树学习从输入特征到输出标签的映射。 数据预处理: 在项目中,首先对鸢尾花数据集进行加载和预处理,包括数据的划分成训练集和测试集。 模型训练: 使用训练集训练决策树模型,让模型从数据中学习特征和类别之间的关系。 模型评估: 使用测试集对训练好的决策树模型进行评估,衡量模型的分类性能。通常使用准确率、精确度、召回率等指标进行评估。 结果展示: 最后,项目展示了决策树模型对新样本进行分类的能力,通过可视化方式展示决策树的结构。 这个项目旨在演。内容来源于网络分

    096 - 主播活跃直播间的台词.docx

    096 - 主播活跃直播间的台词

    全球地表覆盖图 -所有类型(无偏移).zip

    地表覆盖分布是气候变化研究、生态环境评估及地理国情监测等不可或缺的重要基础信息。近年来,随着卫星遥感和计算机存储与计算能力的不断增强,全球尺度中高分辨率地表覆盖产品的应用需求日益迫切。   作为全球首套2020年全球30米精细地表覆盖产品,该数据集及时反映了2020年全球陆地区域(除南极洲)在30米空间分辨率下的地表覆盖分布状况,为地表相关应用提供了最新的数据支撑,对于全球变化、可持续发展分析以及地理国情监测等具有重要意义。   经过多年研究,该团队突破了全球30米地表覆盖多时相自动化精细分类关键技术,并于2019年9月发布了精细分类体系的2015年全球30米地表覆盖精细分类产品。该团队在此基础上做了大量优化工作,例如结合定量遥感反演模型对分类体系做了进一步深化(林地二级类从区域尺度拓展为全球尺度),利用多源辅助数据集和专家先验知识集改善了原来存在的少量错分和漏分问题,针对原来存在的少许空间过渡不连续问题进行了针对性处理与优化。

    基于springboot的旧物置换网站源码(java毕业设计完整源码+LW).zip

    项目均经过测试,可正常运行! 环境说明: 开发语言:java JDK版本:jdk1.8 框架:springboot 数据库:mysql 5.7/8 数据库工具:navicat 开发软件:eclipse/idea

    (2368806)CCNA中文版PPT

    **CCNA(思科认证网络助理工程师)是网络技术领域中的一个基础认证,它涵盖了网络基础知识、IP编址、路由与交换技术等多个方面。以下是对CCNA中文版PPT中可能涉及的知识点的详细说明:** ### 第1章 高级IP编址 #### 1.1 IPv4地址结构 - IPv4地址由32位二进制组成,通常分为四段,每段8位,用点分十进制表示。 - 子网掩码用于定义网络部分和主机部分,如255.255.255.0。 - IP地址的分类:A类、B类、C类、D类(多播)和E类(保留)。 #### 1.2 子网划分 - 子网划分用于优化IP地址的分配,通过借用主机位创建更多的子网。 - 子网计算涉及掩码位数选择,以及如何确定可用的主机数和子网数。 - CIDR(无类别域间路由)表示法用于更有效地管理IP地址空间。 #### 1.3 私有IP地址 - 为了节省公网IP地址,私有IP地址被用于内部网络,如10.0.0.0/8,172.16.0.0/12,192.168.0.0/16。 #### 1.4 广播地址 - 每个网络都有一个特定的广播地址,所有数据包都会发送到这个地址以达到同一网络内的所有设备。

    汽车安全技术之ESC系统介绍及其电路配置

    内容概要:本文介绍了 ESC(Electronic Stability Control)电子稳定控制系统,这是一种用于提高汽车操控稳定性的技术,主要包括 ABS(防抱死刹车系统)、TCS(牵引力控制系统)和偏航控制。ESC 通过监测车辆动态,自动调整四个车轮的刹车,防止车轮打滑和车辆侧滑。文章还详细解释了 ESC 的电路配置,包括收发器、MCU、DC/DC 转换器、马达驱动电路和阀门驱动电路等关键组件的工作原理和所需电子零部件的特点。 适合人群:汽车行业从业者、汽车电子工程师及相关领域的研究者。 使用场景及目标:帮助读者了解 ESC 系统的基本原理和技术细节,适用于汽车安全技术研发、故障排除及系统维护等工作。 其他说明:文中还提到了未来 ESC 系统的发展趋势,包括提高刹车控制精度、小型化和冗余化、低损耗与耐热性,以及智能化和网联化等方面的内容。

    三轴转台sw2016可编辑全套技术资料100%好用.zip

    三轴转台sw2016可编辑全套技术资料100%好用.zip

    conda文件下载1111

    conda文件下载1111

    二叉树深度计算的Python与多语言实现及应用场景

    内容概要:本文详细介绍了二叉树的深度概念及其两种常见的计算方法——递归方法和层序遍历方法。提供了Python、Java和C++的代码实现,并对不同方法的优缺点进行了对比分析,解释了它们适用于不同类型二叉树的情况。 适合人群:具有一定数据结构基础的学习者,特别是对二叉树有初步了解但需要深入掌握二叉树深度计算的读者。 使用场景及目标:通过理论结合代码实例的方式,帮助学习者深刻理解二叉树的性质,掌握二叉树深度的不同计算方式,能够在实际项目中灵活选用最适合的方法进行高效计算。 阅读建议:建议读者先熟悉二叉树的基本概念,再逐步深入学习递归和层序遍历的方法。在实践中运行并调试给出的代码例子,有助于更好地吸收文章内容。

    009 - 成功暖场留人话术.docx

    009 - 成功暖场留人话术

Global site tag (gtag.js) - Google Analytics