??xml version="1.0" encoding="utf-8" standalone="yes"?>91网站在线播放,99精品视频精品精品视频,国产精品三p一区二区http://www.aygfsteel.com/usherlight/category/31459.html天^׃白云泉,云自无心水自闌Ӏ何必奔冲山下去Q更LL向人间Q?/description>zh-cnTue, 14 Sep 2010 07:52:54 GMTTue, 14 Sep 2010 07:52:54 GMT60mybatis3.0.2已经发布http://www.aygfsteel.com/usherlight/archive/2010/09/13/331886.html云自无心水自?/dc:creator>云自无心水自?/author>Mon, 13 Sep 2010 04:42:00 GMThttp://www.aygfsteel.com/usherlight/archive/2010/09/13/331886.htmlhttp://www.aygfsteel.com/usherlight/comments/331886.htmlhttp://www.aygfsteel.com/usherlight/archive/2010/09/13/331886.html#Feedback1http://www.aygfsteel.com/usherlight/comments/commentRss/331886.htmlhttp://www.aygfsteel.com/usherlight/services/trackbacks/331886.htmlq是mybatis从ibatis更名q来后,发布的第2个版本(W?个版本是3.0.1)?br /> 在这个版本中只修复了4个bug(感觉数目有点,N是因Z一个版本的bug真的如此之少?)Q增加了一个小功能.
作者的话:管只有5个修改,但我q是觉得值得为此发布一个新版本?br /> q?个修ҎQ?br /> 1、在org.apache.ibatis.Session中增加了一个新ҎQvoid select(String statement, ResultHandler handler);
原来只有Q?br />  void select(String statement, Object parameter, ResultHandler handler);
 void select(String statement, Object parameter, RowBounds rowBounds, ResultHandler handler);

2、修复了ManagedConnection中关闭连接的问题
3、修复了schema migration中,语句提交(statement commit)不正的问题
4、修复了延迟加蝲已经预读取属性时的问?br /> 5、修复了schema migration中,FileInputStream没有正确关闭的问?br />



]]>
iBatis已经更名为MyBatisQƈ搬迁到Google Codehttp://www.aygfsteel.com/usherlight/archive/2010/05/24/321759.html云自无心水自?/dc:creator>云自无心水自?/author>Mon, 24 May 2010 11:58:00 GMThttp://www.aygfsteel.com/usherlight/archive/2010/05/24/321759.htmlhttp://www.aygfsteel.com/usherlight/comments/321759.htmlhttp://www.aygfsteel.com/usherlight/archive/2010/05/24/321759.html#Feedback2http://www.aygfsteel.com/usherlight/comments/commentRss/321759.htmlhttp://www.aygfsteel.com/usherlight/services/trackbacks/321759.html现在打开iBatis的主:ibatis.apache.org会发C者发布了一个新L者说是声明?br />
大意是因为各U原因,已经把iBatis更名为MyBatis, q且搬迁到Google Code中了?br />
新的主页地址是: http://www.mybatis.org

另外QMyBatis3.0.1的正式版已经?a >http://code.google.com/p/mybatis/可以下蝲了?br />



]]>
iBatis3正式版的候选版已经释出http://www.aygfsteel.com/usherlight/archive/2010/04/20/318829.html云自无心水自?/dc:creator>云自无心水自?/author>Tue, 20 Apr 2010 03:21:00 GMThttp://www.aygfsteel.com/usherlight/archive/2010/04/20/318829.htmlhttp://www.aygfsteel.com/usherlight/comments/318829.htmlhttp://www.aygfsteel.com/usherlight/archive/2010/04/20/318829.html#Feedback2http://www.aygfsteel.com/usherlight/comments/commentRss/318829.htmlhttp://www.aygfsteel.com/usherlight/services/trackbacks/318829.html Ҏ其描qͼ只有PMC的投才会被真正的计。但是同时又补充说明Q其实很多PMC的投是参考社区用L投票l果的?br /> 所以也鼓励大家发表自己的看法,q期待大家的反馈?br />
原文Q?br /> After well over a year of development and testing effort, iBATIS 3.0 is now ready for prime time. I've uploaded the new bundles for iBATIS 3 Core and Migrations. It is this release that we'll vote on for GA status. I'll leave the vote open for a good while (maybe a couple of weeks), just to give everyone a chance to try it out. As usual, only PMC votes actually count, but many PMC members will vote based on the community votes. So please offer your feedback. Otherwise, enjoy iBATIS 3.0!

]]>
IBatis3Beta10已经释出Q不出意外的话,q就是最后的GA?/title><link>http://www.aygfsteel.com/usherlight/archive/2010/03/08/314874.html</link><dc:creator>云自无心水自?/dc:creator><author>云自无心水自?/author><pubDate>Mon, 08 Mar 2010 11:50:00 GMT</pubDate><guid>http://www.aygfsteel.com/usherlight/archive/2010/03/08/314874.html</guid><wfw:comment>http://www.aygfsteel.com/usherlight/comments/314874.html</wfw:comment><comments>http://www.aygfsteel.com/usherlight/archive/2010/03/08/314874.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.aygfsteel.com/usherlight/comments/commentRss/314874.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/usherlight/services/trackbacks/314874.html</trackback:ping><description><![CDATA[2?5日,IBatis3发布了Beta10Q在主页上Uͼ一个月来Beta9的公都没有收到真正的Bug提交?br /> 所有收到的问题都是新的功能要求?br /> 所以,如果没有意外的话QBeta10会用于投票表决是否作ؓGAQGeneral AvailableQ版本?img src ="http://www.aygfsteel.com/usherlight/aggbug/314874.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/usherlight/" target="_blank">云自无心水自?/a> 2010-03-08 19:50 <a href="http://www.aygfsteel.com/usherlight/archive/2010/03/08/314874.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>IBatis3中用自定义数据源C3P0http://www.aygfsteel.com/usherlight/archive/2010/02/01/311493.html云自无心水自?/dc:creator>云自无心水自?/author>Mon, 01 Feb 2010 04:57:00 GMThttp://www.aygfsteel.com/usherlight/archive/2010/02/01/311493.htmlhttp://www.aygfsteel.com/usherlight/comments/311493.htmlhttp://www.aygfsteel.com/usherlight/archive/2010/02/01/311493.html#Feedback0http://www.aygfsteel.com/usherlight/comments/commentRss/311493.htmlhttp://www.aygfsteel.com/usherlight/services/trackbacks/311493.html 如果要实现自定义的DataSourceQ就需要通过扩展DataSourceFactory。本文就演示一下这个过E?br /> 准备工作QConnection Pool的选择Q通过搜烦发现目前比较行的免Ҏ据库q接池主要有3U:Apache DBCP, C3P0, Proxool?br /> 看了一下,Proxool的最新版本是0.9.1(2008-08-23), C3P0的最新版本是0.9.1.2(2007-05-21), DBCP最新版本是1.2.2(2007-04-04)
好像q?个项目都已经挺长旉没有更新了。但是M评h上C3P0无论从稳定上q是效率上都要好一炏V?br /> Q具体这3个项目谁更优UQƈ不是本文的重点,本文主要是介l一下如何在IBatis3中自定义数据源)
大致步骤Q?br /> 1、实现org.apache.ibatis.datasource.DataSourceFactory接口Q主要是2个方?br /> a、public DataSource getDataSource() 如何具体地得C个数据源
b、public void setProperties(Properties properties) 如何讄数据源的参数属?br /> 2、实现javax.sql.DataSourceQ这个就是提供给DataSourceFactory的实?br /> 3、在IBatis3中引用新加入的数据源

1. 从代码中可以看出QIBatis3与IBatis2不同Q不再通过一个ConfigurationcLq行数据源属性的讄Q而是使用反射机制直接调用数据源的Ҏ来设|参数?br /> q就要求配置文g中的参数名称必须与数据源cM的方法名匚w.
 1 public class C3p0DataSourceFactory implements DataSourceFactory {
 2 
 3     private DataSource dataSource;
 4 
 5     public C3p0DataSourceFactory() {
 6         dataSource = new C3p0DataSource();
 7     }
 8 
 9     public DataSource getDataSource() {
10         return dataSource;
11     }
12 
13     public void setProperties(Properties properties) {
14         Properties driverProperties = new Properties();
15         MetaObject metaDataSource = MetaObject.forObject(dataSource);
16         for (Object key : properties.keySet()) {
17             String propertyName = (String) key;
18             if (propertyName.startsWith(DRIVER_PROPERTY_PREFIX)) {
19                 String value = properties.getProperty(propertyName);
20                 driverProperties.setProperty(propertyName
21                         .substring(DRIVER_PROPERTY_PREFIX_LENGTH), value);
22             } else if (metaDataSource.hasSetter(propertyName)) {
23                 String value = (String) properties.get(propertyName);
24                 Object convertedValue = convertValue(metaDataSource,
25                         propertyName, value);
26                 metaDataSource.setValue(propertyName, convertedValue);
27             } else {
28                 throw new DataSourceException("Unkown DataSource property: "
29                         + propertyName);
30             }
31         }
32         if (driverProperties.size() > 0) {
33             metaDataSource.setValue("driverProperties", driverProperties);
34         }
35     }
36 
37     @SuppressWarnings("unchecked")
38     private Object convertValue(MetaObject metaDataSource, String propertyName,
39             String value) {
40         Object convertedValue = value;
41         Class targetType = metaDataSource.getSetterType(propertyName);
42         if (targetType == Integer.class || targetType == int.class) {
43             convertedValue = Integer.valueOf(value);
44         } else if (targetType == Long.class || targetType == long.class) {
45             convertedValue = Long.valueOf(value);
46         } else if (targetType == Boolean.class || targetType == boolean.class) {
47             convertedValue = Boolean.valueOf(value);
48         }
49         return convertedValue;
50     }
51 
52     private static final String DRIVER_PROPERTY_PREFIX = "driver.";
53     private static final int DRIVER_PROPERTY_PREFIX_LENGTH = DRIVER_PROPERTY_PREFIX
54             .length();
55 
56 }
57 

2. 数据源类Q其中的一堆setter是用于讄属性的?br />
 1 public class C3p0DataSource implements DataSource {
 2 
 3     private ComboPooledDataSource dataSource;
 4     public C3p0DataSource() {
 5         this.dataSource = new ComboPooledDataSource();
 6     }
 7     
 8     public Connection getConnection() throws SQLException {
 9         return dataSource.getConnection();
10     }
11 
12     public Connection getConnection(String username, String password)
13             throws SQLException {
14         return dataSource.getConnection(username, password);
15     }
16 
17     public PrintWriter getLogWriter() throws SQLException {
18         return dataSource.getLogWriter();
19     }
20 
21     public int getLoginTimeout() throws SQLException {
22         return dataSource.getLoginTimeout();
23     }
24 
25     public void setLogWriter(PrintWriter out) throws SQLException {
26         dataSource.setLogWriter(out);
27     }
28 
29     public void setLoginTimeout(int seconds) throws SQLException {
30         dataSource.setLoginTimeout(seconds);
31     }
32     
33     
34     public synchronized void setDriver(String driver) {
35         try {
36             dataSource.setDriverClass(driver);
37         } catch (Exception e) {
38         }
39     }
40     
41     public void setUrl(String url) {
42         dataSource.setJdbcUrl(url);
43     }
44     
45     public void setUsername(String username) {
46           dataSource.setUser(username);
47     }
48 
49     public void setPassword(String password) {
50         dataSource.setPassword(password);
51     }
52     
53     public void setInitialPoolSize(int initialPoolSize) {
54         dataSource.setInitialPoolSize(initialPoolSize);
55     }
56     
57     public void setMaxPoolSize(int maxPoolSize) {
58         dataSource.setMaxPoolSize(maxPoolSize);
59     }
60       
61     public void setMinPoolSize(int minPoolSize) {
62         dataSource.setMinPoolSize(minPoolSize);
63     }
64     
65     public void setPreferredTestQuery(String preferredTestQuery) {
66         dataSource.setPreferredTestQuery(preferredTestQuery);
67     }
68     
69     public void setPoolPingQuery(String poolPingQuery) {
70         dataSource.setPreferredTestQuery(poolPingQuery);
71     }
72 }

3. 在配|文件Configuration.xml中,可以先定义数据源的别Uͼ然后pPOOLED和UNPOOLED一样用别U来引用数据源?br /> <Configuration>
    ...
    <typeAlias>
        <typeAlias type="com.test.datasource.C3p0DataSourceFactory" alias="C3P0"/>
    </typeAlias>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="C3P0">
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
                <property name="poolPingQuery" value="${pingquery}"/>           
            </dataSource>
        </environment>
    </environments>
    ...
<Configuration>





]]>
IBatis3临近发布正式版了http://www.aygfsteel.com/usherlight/archive/2010/01/15/309705.html云自无心水自?/dc:creator>云自无心水自?/author>Fri, 15 Jan 2010 12:49:00 GMThttp://www.aygfsteel.com/usherlight/archive/2010/01/15/309705.htmlhttp://www.aygfsteel.com/usherlight/comments/309705.htmlhttp://www.aygfsteel.com/usherlight/archive/2010/01/15/309705.html#Feedback4http://www.aygfsteel.com/usherlight/comments/commentRss/309705.htmlhttp://www.aygfsteel.com/usherlight/services/trackbacks/309705.html 那么IBatis3与IBatis2相比Q究竟变化在哪里呢?
最重要的变化是IBatis3中引入了接口l定QInterface BindingQ的概念。在IBatis2中,没有应用Java5的泛型,所以需要大量用强制类型{换,比如Q?br /> Employee employee = (Employee)sqlMapper.queryForList("getEmployee", 5);
//...and...
List employees = sqlMapper.queryForList("listAllEmployees");
但是在IBatis3中,Ҏ改变成:
MapperFactory factory = someConfiguration.buildMapperFactory();
EmployeeMapper employeeMapper = factory.getMapper (EmployeeMapper.class);
Employee emp = empMapper.getEmployee(5);
//...and...
List<Employee> employees = empMapper.listAllEmployees();
所以IBatis3臛_需要用Java5以上的版本。上面代码中QEmployeeMapper是一个自定义的接口(注意Q开发h员只需要定义一个接口,不需要提供具体的实现Q?br /> public interface EmployeeMapper {
  Employee getEmployee (int employeeId);
  List<Employee> listAllEmployees();
}
q样p了,IBatis会自动ؓ你生成接口的具体实现。是不是感觉有点P

]]>
Tapestry最新版5.1.0.5教程Q七Q:与IBatis3的整?/title><link>http://www.aygfsteel.com/usherlight/archive/2010/01/06/308415.html</link><dc:creator>云自无心水自?/dc:creator><author>云自无心水自?/author><pubDate>Wed, 06 Jan 2010 04:20:00 GMT</pubDate><guid>http://www.aygfsteel.com/usherlight/archive/2010/01/06/308415.html</guid><wfw:comment>http://www.aygfsteel.com/usherlight/comments/308415.html</wfw:comment><comments>http://www.aygfsteel.com/usherlight/archive/2010/01/06/308415.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.aygfsteel.com/usherlight/comments/commentRss/308415.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/usherlight/services/trackbacks/308415.html</trackback:ping><description><![CDATA[与现在最行的SSH相比较,Tapestry能够完全替代其中Struts2和SpringQ但是他q是需要一个ORM的框架。IBatis׃比较低的学习曲线Q也受到很多人的喜爱。尤其是在IBatis3中引入了许多新的概念和想法,使用更加安全和便利?br zid="2" /> 本文主要介绍如何Tapestry5.1和IBatis3q行整合?br zid="3" /> 要步骤:<br zid="4" /> 1. 准备工作<br zid="5" /> 2. 数据库的建立<br zid="6" /> 3. POJO的徏?br zid="7" /> 4. IBatis相关配置文g的创?br zid="8" /> 5. Tapestry相关代码的完?br zid="9" /> 概要说明Q?br zid="10" /> 1、准备工作。这一部分是比较简单的QEclipse之类的开发环境是必需的。Tapestry5.1、IBatis3Q目前还是Beta7Q、数据库Q我使用的是MySqlQ的下蝲安装?br zid="11" /> 2、数据库的徏立,׃是示例,所以数据库的徏立也非常单,只有一张User表,3个字D,IdQNameQPassword<br zid="12" /> 3、com.sample.Userc,对应数据库表?个字D,生成Userc?br zid="13" /> 4、IBatis配置文gQConfiguration.xmlQUserMapper.xmlQjdbc.properties的生? 前两个必需Q最后一个可?<br zid="14" /> 5、在AppModule里,使用buildҎ, d服务生成IBatis3的SqlSessionFactory, 在需要用SqlSessionFactory的地方,使用@InjectService注入卛_<br zid="15" /> 详细说明Q?br zid="16" /> 1、大家到各自的网站上下蝲相应的包好了。我只罗列一下我所用到的LibQ?br zid="23" /> <span zid="151">    </span>antlr-runtime-3.1.1.jar<br zid="24" /> <span zid="152">    </span>commons-codec-1.3.jar<br zid="25" /> <span zid="154">    </span>commons-lang-2.4.jar<br zid="27" /> <span zid="156">    </span>ibatis-3-core-3.0.0.216.jar<br zid="29" /> <span zid="157">    </span>javassist.jar<br zid="30" /> <span zid="158">    </span>log4j-1.2.14.jar<br zid="31" /> <span zid="159">    </span>mysql-connector-java-5.0.5.jar<br zid="32" /> <span zid="160">    </span>slf4j-api-1.5.10.jar<br zid="33" /> <span zid="161">    </span>slf4j-log4j12-1.5.10.jar<br zid="34" /> <span zid="162">    </span>stax2-api-3.0.1.jar<br zid="35" /> <span zid="163">    </span>tapestry-core-5.1.0.5.jar<br zid="36" /> <span zid="164">    </span>tapestry-ioc-5.1.0.5.jar<br zid="37" /> <span zid="165">    </span>tapestry5-annotations-5.1.0.5.jar<br zid="38" /> <span zid="166">    </span>woodstox-core-lgpl-4.0.7.jar<br zid="17" /> 2、Create Table<br zid="39" /> DROP TABLE IF EXISTS `test`.`user`;<br zid="40" /> CREATE TABLE  `test`.`user` (<br zid="41" />   `id` int(10) unsigned NOT NULL AUTO_INCREMENT,<br zid="42" />   `name` varchar(45) NOT NULL,<br zid="43" />   `password` varchar(45) NOT NULL,<br zid="44" />   PRIMARY KEY (`id`)<br zid="45" /> ) ENGINE=InnoDB;<br zid="46" /> <br zid="18" /> 3?br zid="175" /> package com.sample.model;<br zid="47" /> public class User {<br zid="48" />     private long id;<br zid="49" />     private String name;<br zid="50" />     private String password;<br zid="51" />     // getter and setter    ....<br zid="52" /> }<br zid="176" /> <br zid="19" /> 4、我把Configuration.xml和UserMapper.xml都放在src目录下,q样在部|的时候,是生成在classesQ也是c\径的根目录下?br zid="177" /> Configuration.xml:<br zid="53" /> <?xml version="1.0" encoding="UTF-8" ?> <br zid="54" /> <!DOCTYPE configuration <br zid="55" />   PUBLIC "-//ibatis.apache.org//DTD Config 3.0//EN" <br zid="56" />   "http://ibatis.apache.org/dtd/ibatis-3-config.dtd">  <br zid="57" /> <configuration> <br zid="58" />     <properties resource="jdbc.properties"><br zid="59" />     </properties><br zid="64" />     <environments default="development"> <br zid="65" />         <environment id="development"> <br zid="66" />             <transactionManager type="JDBC"/> <br zid="67" />             <dataSource type="POOLED"> <br zid="68" />                 <property name="driver" value="${jdbc.driver}"/> <br zid="69" />                 <property name="url" value="${jdbc.url}"/> <br zid="70" />                 <property name="username" value="${jdbc.username}"/> <br zid="71" />                 <property name="password" value="${jdbc.password}"/><br zid="72" />                 <property name="poolPingEnabled" value="${pingenable}"/>            <br zid="73" />                 <property name="poolPingQuery" value="${pingquery}"/>            <br zid="74" />                 <property name="poolPingConnectionsNotUsedFor" value="${pingnotusetime}"/>            <br zid="75" />             </dataSource> <br zid="76" />         </environment> <br zid="77" />     </environments> <br zid="78" />     <mappers> <br zid="79" />         <mapper resource="UserMapper.xml"/> <br zid="80" />     </mappers> <br zid="81" /> </configuration> <br zid="82" /> <br zid="168" /> <br zid="83" /> UserMapper.xml:<br zid="169" /> <?xml version="1.0" encoding="UTF-8" ?>  <br zid="85" /> <!DOCTYPE mapper  <br zid="86" />     PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"  <br zid="87" />     "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd"><br zid="88" />     <br zid="89" /> <mapper namespace="com.sample.model.UserMapper"><br zid="90" />     <select id="selectUser" parameterType="int" resultType="com.sample.model.User">  <br zid="91" />         select * from user where id = #{id}  <br zid="92" />     </select><br zid="93" /> </mapper> <br zid="94" /> <br zid="95" /> <br zid="170" /> <br zid="171" /> jdbc.properties:<br zid="96" /> jdbc.driver=com.mysql.jdbc.Driver<br zid="97" /> jdbc.url=jdbc:mysql://localhost/test?autoReconnect=true<br zid="98" /> jdbc.username=root<br zid="99" /> jdbc.password=root<br zid="100" /> pingenable=true<br zid="101" /> pingquery=SELECT 1<br zid="102" /> pingoldertime=0<br zid="103" /> pingnotusetime=3600000<br zid="104" /> <br zid="20" /> 5?br zid="172" /> package com.sample.web.services;<br zid="21" /> public class AppModule {<br zid="105" />     public static SqlSessionFactory buildSqlSessionFactory() {<br zid="106" />         try {<br zid="107" />             String resource = "Configuration.xml";<br zid="108" />             Reader reader = Resources.getResourceAsReader(resource);<br zid="109" />             return new SqlSessionFactoryBuilder().build(reader);<br zid="110" />         } catch (Exception e) {<br zid="111" />             logger.warn("failed to build SqlSessionFactory: ", e);<br zid="112" />             return null;<br zid="113" />         }<br zid="114" />     }<br zid="115" /> <br zid="116" />     private static Logger logger = LoggerFactory.getLogger(AppModule.class);<br zid="117" /> }<br zid="118" /> <br zid="119" /> <br zid="173" /> package com.sample.model;<br zid="120" /> public interface UserMapper {<br zid="121" />     public User selectUser(int id);<br zid="122" /> }<br zid="123" /> <br zid="124" /> <br zid="174" /> package com.pc.sample.web.pages;<br zid="125" /> public class Layout {<br zid="126" />     @InjectService("SqlSessionFactory")<br zid="127" />     private SqlSessionFactory sqlMapper;<br zid="128" />     public String getUserName() {<br zid="129" />         if ( sqlMapper == null ) {<br zid="130" />             return "null-mapper";<br zid="131" />         }<br zid="132" />         SqlSession session = sqlMapper.openSession();<br zid="133" />         try {<br zid="134" />             UserMapper userMapper = session.getMapper(UserMapper.class);<br zid="135" />             if ( userMapper == null ) {<br zid="136" />                 return "null-userMapper";<br zid="137" />             }<br zid="138" />             User user = userMapper.selectUser(1);<br zid="139" />             if ( user == null ) {<br zid="140" />                 return "null-user";<br zid="141" />             }<br zid="142" />             return user.getName();<br zid="143" />         } catch (Exception e) {<br zid="144" />             return "exception-" + e.getMessage();<br zid="145" />         } finally {<br zid="146" />             session.close();<br zid="147" />         }<br zid="148" />     }<br zid="149" /> }<br zid="150" /> <br zid="178" /> 几个注意事项Q?br zid="179" /> 1Q? 因ؓ我的IBatis的配|文件Configuration.xml是放在类路径的根目录下,所以在初始化SqlSessionFactory的时候,? 接用String resource = "Configuration.xml";p了,否则需要添加相应的路径Q比如:把Configuration.xml与UsercL在一P也就是在 com.sample.modelq个package中,那么p写成QString resource = "com/sample/model/Configuration.xml";<br zid="180" /> 同样Q在Configuration.xml中,指定UserMapper.xml的规则也是这L?br zid="181" /> 2QUserMapper的用。Mapper的用是IBatis3中才有的新功能,也是IBatis用户指南中推荐用的方式。因样用的话,完全避免了cd的强制{换,实现了类型安全?br zid="182" /> 需要注意的是UserMapper只是一个接口。我们不需要提供这个接口的具体实现。IBatis3会自动生成一个具体的实例?br zid="183" /> <br zid="184" /> 其中的方法名必须与UserMapper.xml中的select语句的id一栗在我的例子中是selectUser.<br zid="185" /> 另外Q此Ҏ的返回值的cd必须与UserMapper.xml中配|的returnType一致?br zid="186" /> 最后要提醒的是UserMapper.xml中的namespace必须是UserMapper的全cd,在本例中是com.sample.model.UserMapper<br zid="22" /><img src ="http://www.aygfsteel.com/usherlight/aggbug/308415.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/usherlight/" target="_blank">云自无心水自?/a> 2010-01-06 12:20 <a href="http://www.aygfsteel.com/usherlight/archive/2010/01/06/308415.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>介绍作ؓiBatis辅助工具的iBator的用方?/title><link>http://www.aygfsteel.com/usherlight/archive/2009/10/07/297401.html</link><dc:creator>云自无心水自?/dc:creator><author>云自无心水自?/author><pubDate>Wed, 07 Oct 2009 12:18:00 GMT</pubDate><guid>http://www.aygfsteel.com/usherlight/archive/2009/10/07/297401.html</guid><wfw:comment>http://www.aygfsteel.com/usherlight/comments/297401.html</wfw:comment><comments>http://www.aygfsteel.com/usherlight/archive/2009/10/07/297401.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.aygfsteel.com/usherlight/comments/commentRss/297401.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/usherlight/services/trackbacks/297401.html</trackback:ping><description><![CDATA[<p>目前从实际应用来看,ORM的老大自然是HibernateQ可是iBatis因ؓ相对比较直观、学习曲U相对较低,因而也赢得了不用L青睐?br /> 本文主要介绍作ؓiBatis辅助工具的iBator的用方法?br /> iBator是一个iBatis相关代码的自动生成工兗?br /> 1、安装iBator的插?br /> 在Eclipse中,使用d站点的方法,输入|址http://ibatis.apache.org/tools/ibatorQ进行iBator的安装?br /> 2、徏议不要直接在使用iBatis的项目里直接使用iBatorQ推荐另外单独徏立一个项目来生成。比如,建立一个项目叫QIbatorPrj<br /> 3、右键点击IbatorPrjq个目Q如果刚才的插g安装正确的话Q就会看C?#8220;Add iBATOR to the build path”的选项Q点M下?br /> 4、创建iBator的配|文件。下面是我的例子Q大家在实际使用的过E中Q需要根据自q情况q行相应的修攏V?br /> 主要是数据库JDBC库的路径、数据库驱动的类名、项目的名称、包名等?br /> <?xml version="1.0" encoding="UTF-8"?><br /> <!DOCTYPE ibatorConfiguration<br />   PUBLIC "-//Apache Software Foundation//DTD Apache iBATIS Ibator Configuration 1.0//EN"<br />   "http://ibatis.apache.org/dtd/ibator-config_1_0.dtd"></p> <p><ibatorConfiguration><br />         <classPathEntry location="c:\javaLibs\MySql\mysql-connector-java-5.0.6-bin.jar" /></p> <p>        <ibatorContext id="SampleiBator" targetRuntime="Ibatis2Java5"><br />                 <jdbcConnection driverClass="com.mysql.jdbc.Driver"<br />                         connectionURL="jdbc:mysql://localhost/sample" userId="root" password="admin"><br />                 </jdbcConnection></p> <p>                <javaTypeResolver><br />                         <property name="forceBigDecimals" value="false" /><br />                 </javaTypeResolver></p> <p>                <javaModelGenerator targetPackage="com.sample"<br />                         targetProject="IbatorPrj\src"><br />                         <property name="enableSubPackages" value="true" /><br />                         <property name="trimStrings" value="true" /><br />                 </javaModelGenerator></p> <p>                <sqlMapGenerator targetPackage="com.sample.xml"<br />                         targetProject="IbatorPrj\src"><br />                         <property name="enableSubPackages" value="true" /><br />                 </sqlMapGenerator></p> <p>                <daoGenerator type="GENERIC-CI" targetPackage="com.sample.dao"<br />                         targetProject="IbatorPrj\src"><br />                         <property name="enableSubPackages" value="true" /><br />                 </daoGenerator></p> <p>                <table schema="sample" tableName="tab1" domainObjectName="JavaBean1"><br />                         <property name="useActualColumnNames" value="false" /><br />                         <generatedKey column="ID" sqlStatement="MySql" identity="true" /><br />                 </table></p> <p>        </ibatorContext><br /> </ibatorConfiguration><br /> 5、配|文件生成完毕后Q右键点击这个文Ӟ选择“Generate iBatis Artifact”Q然后你在配置的文件夹下找到自动生成的文g了?/p><img src ="http://www.aygfsteel.com/usherlight/aggbug/297401.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/usherlight/" target="_blank">云自无心水自?/a> 2009-10-07 20:18 <a href="http://www.aygfsteel.com/usherlight/archive/2009/10/07/297401.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>iBatis使用mysqlQ数据库时自动关闭问题的解?/title><link>http://www.aygfsteel.com/usherlight/archive/2008/05/13/200164.html</link><dc:creator>云自无心水自?/dc:creator><author>云自无心水自?/author><pubDate>Tue, 13 May 2008 03:08:00 GMT</pubDate><guid>http://www.aygfsteel.com/usherlight/archive/2008/05/13/200164.html</guid><wfw:comment>http://www.aygfsteel.com/usherlight/comments/200164.html</wfw:comment><comments>http://www.aygfsteel.com/usherlight/archive/2008/05/13/200164.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.aygfsteel.com/usherlight/comments/commentRss/200164.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/usherlight/services/trackbacks/200164.html</trackback:ping><description><![CDATA[iBatis自己带了一个simple的数据库q接池,基本的功能都有。但是在处理部分数据库(比如mysqlQ的q接I闲旉太长Qmysql?时Q自动超时的时候,比不上象c3p0q样的连接池软g了(c3p0能自动处理数据库q接被关闭的情况)?br id="oaq02" /> 我目前采用的Ҏ是iBatis本n提供的一U算得上是取巧的办法Q基本思想是每隔一D|间往数据库发一条查询语句,q样使得数据库空闲时间不会太长,而得其自动关闭?br id="oaq03" /> Ҏ是在SqlMapConfig.xml的dataSourceq行如下配置Q?br id="oaq04" /> <dataSource type="SIMPLE"><br id="oaq05" />     <property name="JDBC.Driver" value="${jdbc.driverClassName}"/><br id="oaq06" />     <property name="JDBC.ConnectionURL" value="${jdbc.url}"/><br id="oaq07" />     <property name="JDBC.Username" value="${jdbc.username}"/><br id="oaq08" />     <property name="JDBC.Password" value="${jdbc.password}"/><br id="oaq09" />     <property name="Pool.PingEnabled" value="true"/><br id="oaq010" />     <property name="Pool.PingQuery" value="select 1"/><br id="oaq011" />     <property name="Pool.PingConnectionsOlderThan" value="0"/><br id="oaq012" />     <property name="Pool.PingConnectionsNotUsedFor" value="3600000"/> <br id="oaq013" /> </dataSource><br id="oaq014" /> 开始的Q行是关于数据库q接信息的,不需要说明了?br id="oaq015" /> Pool.PingEnabledQ是用于讄开启是否允许检连接状?br id="oaq016" /> Pool.PingQueryQ是用于连接的查询语名Q当然是简单越?br id="oaq017" /> Pool.PingConnectionOlderThanQ对持箋q接旉过讑֮|毫秒Q的q接q行,我将其设|ؓQ(不进行此Ҏ)Q否则,iBatis在超q这个时间后Q执行每个sql以前连接,对于性能可能会有一定的影响?br id="oaq018" /> Pool.PingConnectionsNotUsedForQ对I闲过讑֮|毫秒Q的q接q行,我设|ؓ1时Qmysql~省的关闭时间是8时)<br id="j_7.0" /> <br id="j_7.1" /> 当然Q还有一个办法是使用c3p0q样的连接池<br id="j_7.2" /> 但是需要自己写一部分代码Q实C下接口: <pre id="j_7.3" style="margin: 0em;">public interface DataSourceFactory {<br id="j_7.4" /> public void initialize(Map map);<br id="j_7.5" /> public DataSource getDataSource();<br id="j_7.6" /> }</pre><img src ="http://www.aygfsteel.com/usherlight/aggbug/200164.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/usherlight/" target="_blank">云自无心水自?/a> 2008-05-13 11:08 <a href="http://www.aygfsteel.com/usherlight/archive/2008/05/13/200164.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> վ֩ģ壺 <a href="http://" target="_blank">ʳ</a>| <a href="http://" target="_blank">ƽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ƽ</a>| <a href="http://" target="_blank">ֹ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ַ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Դ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank">»</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ҵ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ƹ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">º</a>| <a href="http://" target="_blank">ƽ</a>| <a href="http://" target="_blank">ֳ</a>| <a href="http://" target="_blank">ʯɽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ϫ</a>| <a href="http://" target="_blank">ʯɽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">»</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>