mybatis标签问题疑惑,什么是sql dialect

mybatis标签问题疑惑,什么是sql dialect,第1张

mybatis的sql和你在数据库客户端执行的sql是一样的,但是在mybatis中调用的sql一般都是动态的,所以用到了参数传递。这个mybatis有对应的标签以及相应的变量来实现。你可以搜索下mybatis标签。同时给你一个参考的你看看,这个是一个查询用户的

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950<select id="queryUsers" parameterType="map" resultType="xxxxxxbeanUserBean"> <![CDATA[ select ID, LOGIN_NAME AS loginName, PASSWORD, REAL_NAME AS realName, POSITION, (SELECT DPOSITION_NAME FROM UNIT_POSITION D WHERE DPOSITION_CODE=TPOSITION) POSITIONNAME, USER_TYPE AS userType, SEX, PID, TO_CHAR(TBIRTHDAY,'YYYY-MM-DD') BIRTHDAY, EMAIL, CONTACT_TEL AS contactTel, CONTACT_MOBILE AS contactMobile, CONTACT_FAX AS contactFax, CONTACT_ZIP AS contactZip, CONTACT_ADDR AS contactAddr, STATUS, EDUCATION, (SELECT DEDUCATION_NAME FROM UNIT_EDUCATION D WHERE DEDUCATION_CODE=TEDUCATION AND DSTATUS=0) EDUCATIONNAME, NATION, POLITICAL, REMARK, TO_CHAR(TCREATE_DATE,'YYYY-MM-DD HH24:MI:SS') createDate, (SELECT DREAL_NAME FROM UNIT_USER D WHERE DID= TCREATE_USER_ID) createUserId, TO_CHAR(TUPDATE_DATE,'YYYY-MM-DD HH24:MI:SS') updateDate, (SELECT DREAL_NAME FROM UNIT_USER D WHERE DID= TUPDATE_USER_ID) updateUserId from UNIT_USER T ]]> <where> TSTATUS='1' <if test="realName !=null and realName !=''"> and TREAL_NAME like '%${realName}%' </if> <if test="nexusDpartment !=null"> AND TID IN (SELECT DISTINCT DUSER_ID FROM UNIT_USER_DEPT D WHERE DDEPT_CODE IN (${nexusDpartment})) </if> <if test="deptCode !=null and deptCode !=''"> AND TID IN (SELECT DISTINCT DUSER_ID FROM UNIT_USER_DEPT D WHERE DDEPT_CODE = #{deptCode}) </if> </where> <if test="sort != null and sort != ''"> order by ${sort} <if test="direction != null and direction != ''"> ${direction} </if> </if> </select>

公共参数的配置

1

首先创建一个maven工程,因为只涉及到后台的数据处理,所以可以创建一个jar的工程项目,具体创建方法可以参考以下经验。

9如何创建maven项目

2

依赖包的引入。创建好maven项目之后,打开maven项目下的pomxml文件,在配置文件中增加对mybatis包和mysql驱动包的依赖。在dependencies中增加对这两个包的配置即可自动将这两个包添加到项目中。

3

mybatis数据库配置。对于mybatis框架来说,首先需要配置的就是数据库的数据源配置以及采用何种开发模式的配置,对于mavne项目来说这些资源信息都需要配置在src/main/resources下面,对于普通的java项目则只需要配置在src下即可。

4

mybatis-configxml的配置。在src/main/resources/下创建一个名为mybatis-config的文件。在文件中需要配置resources数据库资源文件,数据库链接需要的driver驱动、url连接串、username数据库用户名、password数据库密码等。

5

数据库信息的配置。根据mybatis-config配置中的resources文件引入,需要创建一个databaseproperties文件的配置。同样是在src/main/resources资源文件夹下新建properties文件。配置url/driver/username/password。

END

普通数据对象的配置

1

创建java对象。根据数据库某个表或者某些表的字段配置一个java对象。mybatis可以根据框架将表中的数据自动转成对象。本示例中,我们对表user中的id、username、password配置。

2

配置xml映射文件。在model包下创建与对象同名的xml文件,配置java与数据库之间交互的方法。主要配置的有namespace、resultMap(表中的字段和java对象字段对应)、sql语句。配置好xml之后,需要在mybatis-config中将这个xml添加到mappers中,这样项目启动的时候才能加载到这些sql脚本。

3

创建加载mybatis配置文件的类。可以通过mybatis框架自带的一些类加载xml配置文件,根据factory获取一个session,通过session执行对应脚本的sql语句。对于执行insert或者update语句需要在最后执行sessioncommit进行提交 *** 作。

END

测试类编写

1

根据maven工程的约定,测试类编写在src/test/java下,在这个source文件夹下创建对应的package包,这个包名称最好和main/java需要测试的对象的包名一致,这样就不用重新导入需要进行测试的类。

2

测试类需要用到junit依赖包,所以首先需要在pomxml中增加对junit依赖包的引入,引入依赖包之后,就可以在测试类中使用junit相关的java文件和注解。一般在进行测试方法之前,需要的公共参数都放在signUp方法内部,即在测试方法运行之前运行signUp方法。

3

开始运行测试方法。测试方法编写完成后,在方法名称上点击右键--选择run as运行方式,选择junit test。就可以运行测试方法。如果在控制台中打印出从数据库中获取的数据,说明运行正常。mybatis框架搭建正常。

>

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

分析问题:

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

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

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

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

解决方法:

1、首选我们在<setting>节点新增一个“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)中,<setting>指定当前程序运行数据库类型

以上就是关于mybatis标签问题疑惑,什么是sql dialect全部的内容,包括:mybatis标签问题疑惑,什么是sql dialect、如何搭建mybatis开发环境、mybatis怎么实现两种数据库的兼容等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/sjk/10169339.html

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

发表评论

登录后才能评论

评论列表(0条)

保存