如何处理Spring,Ibatis结合MySQL数据库使用时的事务 *** 作Demo

如何处理Spring,Ibatis结合MySQL数据库使用时的事务 *** 作Demo,第1张

如何处理Spring,Ibatis结合MySQL数据库使用时的事务 *** 作Demo

取决于创建服务器时所选的服务层版本,每个服务器有一定的容量可用于存储数据,例如本例中这台服务器的存储量为 102400MB(100GB)。

在每台服务器上可以创建无限数量个数据库,但所有数据库需要共享这些容量。

方法:在系统运行过程中,针对不同数据库类型区分加载不同文件路径下的sqlmap配置。留给开发人员做的事依旧是快乐地编写原始数据库语句,而不再为多数据库兼容问题挠头。

分析问题:

1、解决ibatis多数据库兼容的问题,实际上就是让ibatis可以自动选择不同数据库sqlmap配置文件。

2、打开ibatis源码工程并进行代码跟踪,最终定位到comibatissqlmapenginebuilderxmlSqlMapConfigParserjava处,系统中运行的sqlmap节点均从这里统一转化加载的。

3、很明显SqlMapConfigParser源码中的addSqlMapNodelets负责解析“/sqlMapConfig/sqlMap”路径,即也就是sqlmap文件路径。

4、要实现“多数据库兼容”,这里改造下这个方法即可。

解决方法:

1、首选我们在节点新增一个“DBProductName”用于判断数据库种类。当然通过javasqlDatabaseMetaData也可以获得,但这太依赖于jdbc驱动,还是手动配置保险。

2、重构SqlMapConfigParser的addSqlMapNodelets方法。

" 1)首选获得单个sqlmap文件的位置,如 sqlmap主目录\XXXxml;

2)依据上面设置的DBProductName属性值获得数据库类型;

3)将sqlmap的文件路径重定位到运行数据库类型文件下。如 sqlmap主目录\mysql\XXXxml,代表程序当前运行于msql数据库上,并加载系统mysql数据库对应的 sqlmap文件"

4、ok,现在ibatis支持“多数据库兼容”了(完整源码见附件)。

使用方法:

1、编译SqlMapConfigParserjava生成可运行文件SqlMapConfigParserclass(见附件),并将其覆盖添加到ibatisjar中。

2、在系统sqlmap配置文件存放主目录如src\conf\mapping添加多数据库兼容支持的子目录,如src\conf\mapping\mysql,src\conf\mapping\oracle等

3、以实际项目需要编写多数据库sqlmap配置文件。注意:不同数据库类型需要确保具有相同的sqlmap配置文件名和sql节点名

4、在ibatis主配置文件(如sql-map-configxml)中,指定当前程序运行数据库类型

这个问题我也遇到了。通过换过数据库排除了ibatis问题。最后在数据库中改个配置后问题解决。

vi /etc/mycnf

[mysqld]

character-set-server=utf8

你写了resultClass,所以返回结果就是Book这个类,你应该有配一个alias。这样写要求你的book类的每一个字段和数据库的字段拼写都一样(首字母小写)。要是要对应的话,要写关联查询的配置,你可以看下api文档,配置较为繁琐。类似这样:

<resultMap type="HrMenu" id="menuResultMap">

<id property="id" column="ID" />

<result property="name" column="name" />

<result property="url" column="url" />

<result property="parentid" column="parentid" />

<result property="level" column="level" />

<result property="seq" column="seq" />

<result property="butnstyle" column="butnstyle" />

<association property="parent" column="parentid" select="HrMenufindMenuById"></association>

<collection property="child" column="id" select="HrMenufindMenusByParentId"></collection>

</resultMap>

<!-- 查询菜单list -->

<select id="findMenuById" parameterType="int" resultMap="menuNavResultMap">

SELECT FROM hr_menu where id=#{id} order by seq;

</select>

<!-- 查询菜单list -->

<select id="findMenusByParentId" parameterType="int" resultMap="menuResultMap">

SELECT FROM hr_menu where parentid=#{id} order by seq asc;

</select>

以上就是关于如何处理Spring,Ibatis结合MySQL数据库使用时的事务 *** 作Demo全部的内容,包括:如何处理Spring,Ibatis结合MySQL数据库使用时的事务 *** 作Demo、mybatis怎么实现两种数据库的兼容、ibatis 连接 mysql 中文乱码 ,常量参数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/10190970.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存