【随谈】喜欢上iBatis

本文介绍了一个偶然接触Ibatis的经历,并详细解析了Ibatis相对于JDBC的优势。通过具体例子展示了Ibatis的基本配置及使用方法。
接触Ibatis是一个偶然。

早在今年3月份(2010.03)的时候,因为Java项目涉及到数据库(SQL Server2005)的缘故,开始调查JDBC和ORM工具.

JDBC如果仅仅使用的话,上手还是很快的。

Statement stmt = null;
ResultSet rs = null;
try {
// 加载驱动
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();

// 从.properties中获取相关的DB url, username, password信息
final String url = PropertiesHandle.getUrl();
final String username = PropertiesHandle.getUserName();
final String password = PropertiesHandle.getPassWord();

// 获取数据库连接
final Connection conn = DriverManager.getConnection(url, username, password);
final String sql = "SELECT * FROM TABLE";
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
rs.close();
stmt.close();
} catch (final Exception e) {
logger.error("<error>Error Occurred while connecting to SQL Server:" + e.getMessage());
}


但是如果复杂的查询、多次操作数据库,那么JDBC就很不方便了, 不停地Try/Catch,容易'疲劳', 另外resultset的操作也没有对象的操作来的灵活,所以开始寻找一个合适的ORM(Object Relational Mapping)工具。
-----------------------------------------------------------------------------
最先考虑的当然是Hibernate。 虽然没有学习过Hibernate,但毫无疑问它是一个功能强大的ORM工具,不过学习周期稍微长一些,而项目时间比较紧,于是退而求其次,选择了Ibatis。说句实在话,在这之前我没整过数据库,而且对Ibatis一无所知(我都不知道有这个东西,自嘲...)。

[b]Ibatis吸引我的地方有3个:[/b]
1. 学习周期短,容易上手;
2. Java代码与SQL 语句分离, SQL 语句写在Mapper xml文件中;
3. 有Eclipse插件可以帮助生成POJO(plain old java Object)和Mapper xml文件(可惜是针对Ibatis2.*版本的,当前的Ibatis3.*不适用,不过生成的POJO还是能用的);

除此之外, Ibatis功能亦是非常实用而且强大的,完全可以实现企业级运用。

-----------------------------------------------------------------------------
以下是Ibatis举例:
[b] Mapper Xml: 定义查询语句 ‘selectUser’[/b]
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"
"http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">
<mapper namespace="cn.test.ibatis.UserDataMapper" >
<resultMap id="UserDataResultMap" type="cn.test.ibatis.UserData" >
<result column="userID" property="userID" jdbcType="NVARCHAR" />
<result column="userName" property="userName" jdbcType="NVARCHAR" />
</resultMap>

<select id="selectUser" parameterType="String" resultType="cn.test.ibatis.UserData" >
SELECT userID, userName
FROM UserData
WHERE userID = #{userID}
</select>

</mapper>


[b] Mapper Class :根据上述xml中的namespace创建Interface:cn.test.ibatis.UserDataMapper,并根据xml定义method : selectUser(java调用该方法时即是执行xml中的SQL 语句)[/b]
 public interface UserDataMapper {

/**
* 查找用户
* selectUser
* @return UserData
*/
UserData selectUser(final String id);
}


[b]POJO: 其实就是javabean[/b]
public class UserData {

private String userID;

private String userName;


public final String getUserID() {
return userID;
}

public final void setUserID(final String userID) {
this.userID = userID == null ? null : userID.trim();
}

public final String getUserName() {
return userName;
}

public final void setUserName(final String userName) {
this.userName = userName == null ? null : userName.trim();
}

}


[b] Main Class :调用selectUser方法[/b]

SqlSession session = null;
try {
session = IbatisUtil.getSessionFactory().openSession();
final UserDataMapper map = session.getMapper(UserDataMapper.class);

// 查找UserData表中用户:222
final UserData list = map.selectUser("222");
} catch ( ...) {
}
C语言-光伏MPPT算法:电导增量法扰动观察法+自动全局搜索Plecs最大功率跟踪算法仿真内容概要:本文档主要介绍了一种基于C语言实现的光伏最大功率点跟踪(MPPT)算法,结合电导增量法与扰动观察法,并引入自动全局搜索策略,利用Plecs仿真工具对算法进行建模与仿真验证。文档重点阐述了两种经典MPPT算法的原理、优缺点及其在不同光照和温度条件下的动态响应特性,同时提出一种改进的复合控制策略以提升系统在复杂环境下的跟踪精度与稳定性。通过仿真结果对比分析,验证了所提方法在快速性和准确性方面的优势,适用于光伏发电系统的高效能量转换控制。; 适合人群:具备一定C语言编程基础和电力电子知识背景,从事光伏系统开发、嵌入式控制或新能源技术研发的工程师及高校研究人员;工作年限1-3年的初级至中级研发人员尤为适合。; 使用场景及目标:①掌握电导增量法与扰动观察法在实际光伏系统中的实现机制与切换逻辑;②学习如何在Plecs中搭建MPPT控制系统仿真模型;③实现自动全局搜索以避免传统算法陷入局部峰值问题,提升复杂工况下的最大功率追踪效率;④为光伏逆变器或太阳能充电控制器的算法开发提供技术参考与实现范例。; 阅读建议:建议读者结合文中提供的C语言算法逻辑与Plecs仿真模型同步学习,重点关注算法判断条件、步长调节策略及仿真参数设置。在理解基本原理的基础上,可通过修改光照强度、温度变化曲线等外部扰动因素,进一步测试算法鲁棒性,并尝试将其移植到实际嵌入式平台进行实验验证。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值