ing updateUser(final User user) {
return new SQL(){
{
UPDATE(USERTABLE);
if (user.getUsername()!=null) {
SET(" username = #{username} ");
}
if (user.getLoginname()!=null) {
SET(" loginname = #{loginname} ");
}
if (user.getPassword()!=null) {
SET(" password = #{password} ");
}
if (user.getStatus()!=null) {
SET(" status = #{status} ");
}
if (user.getCreateDate()!=null) {
SET(" create_date = #{createDate} ");
}
WHERE(" id = #{id} ");
}
}.toString();
}
}
正如前面编写接口类的时候所说,既然用了@SelectProvider注解,必然会使用到一个class和它的方法。我们在接口类里面用了四次@SelectProvider注解,那么与之对应的就应该有四个方法,分别是分页动态查询(selectWhitParam)、动态查询总数量(count)、动态插入(inserUser)、动态更新(updateUser)。
这个类是专门为接口提供sql语句服务的,不再需要传统的去实现接口,用注解代替了原本繁琐的事情。
ps:或许有人会疑惑,我们怎么把所写的配置在applicationContext.xml里面呢?会不会很麻烦?现在,我告诉你,一点也不麻烦哦!
配置文件
applicationContext.xml
<!-- mybatis:scan 会扫描com.dao.inter包下面的所有接口当作spring的bean配置,之后可以进行依赖注入 -->
<mybatis:scan base-package="com.dao.inter"/>
<!-- 使用PropertyOverrideConfigurer后处理器加载数据源参数 -->
<context:property-override location="classpath:db.properties" />
<!-- 配置c3p0数据源 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.CombopooledDataSource "/>
<!-- 配置sqlSessionFactory。org.mybatis.spring.SqlSessionFactoryBean是mybatis社区开发用于整合Spring的bean -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean" p:dataSource-ref="dataSource"/>
db.properties
dataSource.driverClass=com.mysql.jdbc.Driver
dataSource.jdbcUrl=jdbc:mysql://127.0.0.1:3306/hrm_db
dataSource.user=root
dataSource.password=root
dataSource.maxPoolSize=20
dataSource.maxIdleTime=1000
dataSource.minPoolSize=6
dataSource.initialPoolSize=5
原理:mybatis的持久化DAO接口只需要通过SqlSession的getMapper方法获得对应的接口实例,从而达到调用接口方法完成数据库的操作,而在spring容器里,只负责生成和管理DAO的组件。
看完了?那么大家觉得是不是要比传统的JDBC持久化访问要简单些呢?我想,至少也要方便一些吧。