1.mapper代理与原始dao开发的区别
1.1抽出许多公共的模块,如获得session,关闭资源
1.2不用实现dao接口
1.3易于维护 ,修改不用重新编译java文件
2.开发规范
2.1mapper.xml文件中的命名空间必须与包名相同
<!-- 开发规范: 1.命名空间必须与包名一样 -->
<mapper namespace="com.ssm.mapping.UserMapperDAO">
2.2接口类与mapper.xml在同一个包下
2.3接口中的方法必须与mapper.xml中的id一一对应
2.4接口中的方法参数与mapper.xml中的parameterType指定类型对应
2.5接口中的方法必须与mapper.xml中的resultType一致
<!-- #{}表示一个占位符 根据id查询用户-->
<select id="findUserById" parameterType="int" resultType="com.ssm.model.User">
SELECT * FROM USER WHERE id=#{value}
</select>
<select id="findUserByName" parameterType="java.lang.String" resultType="com.ssm.model.User">
SELECT * FROM USER WHERE USERNAME LIKE '%${value}%'
</select>
public interface UserMapperDAO {
public User findUserById(int id);
public List<User> findUserByName(String username);
public void insertUser(User user);
public void deleteUser(int id);
public void updateUser(User user);
}
3.在spring配置文件中配置mepper代理bean
<!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件 基于原始的dao开发 需要dao实现类 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation" value="classpath:sqlmapconfig.xml"></property>
</bean>
<!-- 基于mapper代理的dao 开发不需要dao实现类 -->
<bean id="mapperFacetoryBean" class="org.mybatis.spring.mapper.MapperFactoryBean">
<!-- 构造方法需要两个参数sqlsessionfactory 与 mapperInterface -->
<property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
<property name="mapperInterface" value="com.ssm.mapping.UserMapperDAO"></property>
</bean>
4.在需要的地方注入
//接口对象,自动注入
@Autowired
private UserMapperDAO mapperFacetoryBean;
以上,