论坛首页 Java企业应用论坛

MyBatis3新手上路

浏览 27599 次
精华帖 (0) :: 良好帖 (2) :: 新手帖 (7) :: 隐藏帖 (4)
作者 正文
   发表时间:2011-05-18  
恩,看了这个贴子后觉得确实是新手上路啊.呵呵.....投新手贴是有原因的,至少我也会.就我的角度出发,说几点:

1.首先搂主给出的例子和代码明显是ibatis的风格.并不是mybatis.因为mybatis已经不建议使用DAO类(虽然楼主例子的名字叫mapper)了,而是Mapper接口.所以看到extends SqlSessionDaoSupport感到很怪,因为是在介绍Mybatis.
2.ibatis和mybatis在xml的映射配置变化很大,这也是mybatis区别与ibatis的重要特点之一.比如:1对1,1对多,解决N+1,多条件判断. 楼主的例子(最简单的select)一个都没涉及到,都是ibatis风格,所以没有mybatis特点.
3.我没用过spring,不知道spring是怎么管理session的. Mybatis明确指出每次操作要对session进行处理,但是又没有看到.
4.Mybatis对annotation支持.虽然我个人不是很喜欢这个,很乱.但是如果楼主把例子弄成 @Select ...... 至少也看到了mybatis的特点.(毕竟一个都没有嘛...)

综上所述,感觉是在介绍ibatis,不是mybatis.
0 请登录后投票
   发表时间:2011-05-18  
beitongmoming 写道
恩,看了这个贴子后觉得确实是新手上路啊.呵呵.....投新手贴是有原因的,至少我也会.就我的角度出发,说几点:

1.首先搂主给出的例子和代码明显是ibatis的风格.并不是mybatis.因为mybatis已经不建议使用DAO类(虽然楼主例子的名字叫mapper)了,而是Mapper接口.所以看到extends SqlSessionDaoSupport感到很怪,因为是在介绍Mybatis.
2.ibatis和mybatis在xml的映射配置变化很大,这也是mybatis区别与ibatis的重要特点之一.比如:1对1,1对多,解决N+1,多条件判断. 楼主的例子(最简单的select)一个都没涉及到,都是ibatis风格,所以没有mybatis特点.
3.我没用过spring,不知道spring是怎么管理session的. Mybatis明确指出每次操作要对session进行处理,但是又没有看到.
4.Mybatis对annotation支持.虽然我个人不是很喜欢这个,很乱.但是如果楼主把例子弄成 @Select ...... 至少也看到了mybatis的特点.(毕竟一个都没有嘛...)

综上所述,感觉是在介绍ibatis,不是mybatis.

呵呵 有道理啊。
本文主要还是偏向配置MyBatis的,而且确实有很多ibatis的风格,比如继承了SqlSessionDaoSupport。
至于MyBatis的新特性,呵呵,我本想就写个10 Minute Tutorial的。
And我也是MyBatis的新手,所以写出来也是让大家帮忙看有哪些误区、盲点神马的。
总之,很感谢你的批评和建议吧。
0 请登录后投票
   发表时间:2011-05-18  
能否贴下代码,共享下。
我的配置如果SQL语句出错控制台连异常信息都不输出,只有JSP页面有异常。



Mr.Chris 写道
andy20050125 写道
楼主有没有配置过myBatis 的log4j 文件?
纠结了很长时间,没弄出来,报错时不显示SQL

刚才试了一下,是OK的,我的依赖包是:
<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
			<version>1.2.15</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-log4j12</artifactId>
			<version>1.5.6</version>
		</dependency>

log4j.properties
# Rules reminder: 
# DEBUG < INFO < WARN < ERROR < FATAL 

# Global logging configuration 
log4j.rootLogger=INFO, stdout 

## Console output... 
log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss}  %5p %C: %m%n 

log4j.logger.org.apache.ibatis=DEBUG 
log4j.logger.java.sql=DEBUG 
log4j.logger.java.sql.Connection=DEBUG 
log4j.logger.java.sql.Statement=DEBUG 
log4j.logger.java.sql.PreparedStatement=DEBUG 
log4j.logger.java.sql.ResultSet=DEBUG 

0 请登录后投票
   发表时间:2011-05-18   最后修改:2011-05-18
我感觉在看2X,没看到3X的一个新特性,看看官方的文档吧。
0 请登录后投票
   发表时间:2011-05-18  
andy20050125 写道
能否贴下代码,共享下。
我的配置如果SQL语句出错控制台连异常信息都不输出,只有JSP页面有异常。

刚看了下MyBatis的日志结构,如果要输出执行的sql(Executing SQL),只要做到在log4j.xml/log4j.properties里有
java.sql.PreparedStatement的logger配置并且保证log4j.xml/log4j.properties在classpath下即可。
可以参看下PreparedStatementLogger这个类,这个类代理了PreparedStatement,并且在execute、executeUpdate、executeQuery等方法执行前,输出executing sql的。
0 请登录后投票
   发表时间:2011-05-18  
当初学习iBatis就是冲着它的动态SQL去的,但在实际的应用过程中却不如意,后来没办法,自己用velocity+dom4j写了一个动态SQL类(当然有些地方仿ibatis,如include、dynamic等),在项目中更加的灵活,对有些东西也不要太迷信了,当然,好的东西是要吸收的。
0 请登录后投票
   发表时间:2011-05-19  
复杂结果集 无法实现sql级别的分页,只能通过在全部记录集里分页

相当的被催
0 请登录后投票
   发表时间:2011-05-19  
有个问题请教下:同一项目中MyBatis与ibatis能否共存??
0 请登录后投票
   发表时间:2011-05-19  
zhongji 写道
有个问题请教下:同一项目中MyBatis与ibatis能否共存??

有必要么?
0 请登录后投票
   发表时间:2011-05-23  
Mr.Chris 写道
zhongji 写道
有个问题请教下:同一项目中MyBatis与ibatis能否共存??

有必要么?

项目前一段时间用ibatis,后续的开发可否用mybatis?
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics