tapestry mysql_Tapestry Work With Mybatis

tapestry5-annotations-5.1.0.5.jar

woodstox-core-lgpl-4.0.7.jar

2、Create Table

DROP TABLE IF EXISTS `test`.`user`;

CREATE TABLE  `test`.`user` (

`id` int(10) unsigned NOT NULL AUTO_INCREMENT,

`name` varchar(45) NOT NULL,

`password` varchar(45) NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB;

3、

package com.sample.model;

public class User {

private long id;

private String name;

private String password;

// getter and setter    ....

}

4、我把Configuration.xml和UserMapper.xml都放在src目录下,这样在部署的时候,就是生成在classes,也就是类路径的根目录下。

Configuration.xml:

/p>

PUBLIC "-//ibatis.apache.org//DTD Config 3.0//EN"

"http://ibatis.apache.org/dtd/ibatis-3-config.dtd">

UserMapper.xml:

/p>

PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"

"http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">

select * from user where id = #{id}

jdbc.properties:

jdbc.driver=com.mysql.jdbc.Driver

jdbc.url=jdbc:mysql://localhost/test?autoReconnect=true

jdbc.username=root

jdbc.password=root

pingenable=true

pingquery=SELECT 1

pingoldertime=0

pingnotusetime=3600000

5、

package com.sample.web.services;

public class AppModule {

public static SqlSessionFactory buildSqlSessionFactory() {

try {

String resource = "Configuration.xml";

Reader reader = Resources.getResourceAsReader(resource);

return new SqlSessionFactoryBuilder().build(reader);

} catch (Exception e) {

logger.warn("failed to build SqlSessionFactory: ", e);

return null;

}

}

private static Logger logger = LoggerFactory.getLogger(AppModule.class);

}

package com.sample.model;

public interface UserMapper {

public User selectUser(int id);

}

package com.pc.sample.web.pages;

public class Layout {

@InjectService("SqlSessionFactory")

private SqlSessionFactory sqlMapper;

public String getUserName() {

if ( sqlMapper == null ) {

return "null-mapper";

}

SqlSession session = sqlMapper.openSession();

try {

UserMapper userMapper = session.getMapper(UserMapper.class);

if ( userMapper == null ) {

return "null-userMapper";

}

User user = userMapper.selectUser(1);

if ( user == null ) {

return "null-user";

}

return user.getName();

} catch (Exception e) {

return "exception-" + e.getMessage();

} finally {

session.close();

}

}

}

几个注意事项:

1, 因为我的IBatis的配置文件Configuration.xml是放在类路径的根目录下,所以在初始化SqlSessionFactory的时候,直 接用String resource = "Configuration.xml";就行了,否则需要添加相应的路径,比如:把Configuration.xml与User类放在一起,也就是在 com.sample.model这个package中,那么就要写成:String resource = "com/sample/model/Configuration.xml";

同样,在Configuration.xml中,指定UserMapper.xml的规则也是这样的。

2,UserMapper的使用。Mapper的使用是IBatis3中才有的新功能,也是IBatis用户指南中推荐使用的方式。因为这样使用的话,就完全避免了类型的强制转换,实现了类型安全。

需要注意的是UserMapper只是一个接口。我们不需要提供这个接口的具体实现。IBatis3会自动生成一个具体的实例。

其中的方法名必须与UserMapper.xml中的select语句的id一样。在我的例子中是selectUser.

另外,此方法的返回值的类型必须与UserMapper.xml中配置的returnType一致。

最后要提醒的是UserMapper.xml中的namespace必须是UserMapper的全类名,在本例中就是com.sample.model.UserMapper

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值