dao層的寫法
1当娱,創(chuàng)建interface注解肌访,該注解可用在類或者方法上螟蒸。
public @interface MyBatisDao {
}
2,編寫daointerface
public interface AdminDao {
public Admin findByCode(String adminCode);
}
3崩掘,寫實(shí)現(xiàn)例
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表示動(dòng)態(tài)參數(shù)的類型。
5挽放,編寫實(shí)體類
略
6绍赛,配置文件
//讀取配置文件
<util:properties id="jdbc" location="classpath:db.properties"></util:properties>
//將配置文件的數(shù)據(jù)設(shè)置到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中的主配置文件中的重要參數(shù)引入spring配置文件中-->
<bean id="ssf" class="org.mybatis.spring.SqlSessionFactoryBean">
<!--注入數(shù)據(jù)源(鏈接 信息)-->
<property name="dataSource" ref="dataSource"/>
<!--注入sql映射定義文件,若是多個(gè)mapper文件可以用*代替-->
<property name="mapperLocations" value="classpath:org/ks/sql/*.xml"/>
</bean>
<!--按指定包掃描接口,批量生成接口的實(shí)例辑畦,采用接口名首字母小寫作為接口實(shí)例的ID-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="org.ks.dao"></property>
<!--此屬性可以不用指定吗蚌,spring會(huì)自動(dòng)注入-->
//接口注釋
<!--org.ks.dao包下有可能有些接口是通過Mapper實(shí)現(xiàn)的,也有可能是自己實(shí)現(xiàn)的
且不符合Mapper規(guī)范纯出,那么就不能把org.ks.dao下的所有接口都自動(dòng)實(shí)例化
當(dāng)出現(xiàn)不需要實(shí)例化的接口時(shí)蚯妇,可以通過增加注解來指定哪些接口需要自動(dòng)
生成實(shí)例-->
<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>