dao层的写法
1,创建interface注解,该注解可用在类或者方法上。
public @interface MyBatisDao {
}
2,编写daointerface
public interface AdminDao {
public Admin findByCode(String adminCode);
}
3,写实现例
package org.ks.dao;
import org.ks.entity.Admin;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.stereotype.Repository;
import javax.annotation.Resource;
/*SqlSessionTemplate,用法和sqlsessionn一致
有mybatis-spring.jar提供*/
@Repository("dao1")
public class MyBatisAdminDao implements AdminDao {
@Resource
private SqlSessionTemplate template;
public SqlSessionTemplate getTemplate() {
return template;
}
public void setTemplate(SqlSessionTemplate template) {
this.template = template;
}
@Override
public Admin findByCode(String adminCode) {
Admin admin=template.selectOne("findByCode",adminCode);
return admin;
}
}
sqlsessiontemplate简介
http://www.mybatis.org/spring/zh/sqlsession.html
4,编写mapple
<mapper namespace="org.ks.dao.AdminDao">
<select id="findByCode" resultType="org.ks.entity.Admin" parameterType="string">
SELECT * FROM admin WHERE admin_code=#{code}
</select>
</mapper>
id需要与方法名相同
resulttype表示查询到返回的类型,需要全路径。
parametertype表示动态参数的类型。
5,编写实体类
略
6,配置文件
//读取配置文件
<util:properties id="jdbc" location="classpath:db.properties"></util:properties>
//将配置文件的数据设置到datasource里
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" >
<property name="driverClassName" value="#{jdbc.driverName}"></property>
<property name="url" value="#{jdbc.url}"></property>
<property name="username" value="#{jdbc.userName}"></property>
<property name="password" value="#{jdbc.password}"></property>
</bean>
<!--定义 SQLSessionFactoryBean 将Mybatis中的主配置文件中的重要参数引入spring配置文件中-->
<bean id="ssf" class="org.mybatis.spring.SqlSessionFactoryBean">
<!--注入数据源(链接 信息)-->
<property name="dataSource" ref="dataSource"/>
<!--注入sql映射定义文件,若是多个mapper文件可以用*代替-->
<property name="mapperLocations" value="classpath:org/ks/sql/*.xml"/>
</bean>
<!--按指定包扫描接口,批量生成接口的实例,采用接口名首字母小写作为接口实例的ID-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="org.ks.dao"></property>
<!--此属性可以不用指定,spring会自动注入-->
//接口注释
<!--org.ks.dao包下有可能有些接口是通过Mapper实现的,也有可能是自己实现的
且不符合Mapper规范,那么就不能把org.ks.dao下的所有接口都自动实例化
当出现不需要实例化的接口时,可以通过增加注解来指定哪些接口需要自动
生成实例-->
<property name="annotationClass" value="org.ks.util.MyBatisDao"></property>
<property name="sqlSessionFactory" ref="ssf"></property>
</bean>
<context:component-scan base-package="org.ks"/>
<!--配置HandleMapping-->
<mvc:annotation-driven/>
//
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/"/>
<property name="suffix" value=".jsp"/>
</bean>
<!--配置sqlsessionTemplate-->
<bean id="sqSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="ssf"/>
</bean>
网友评论