今天本人看别人用springmvc和mybatis结合的代码 以前本人用SSH框架的
发现了个问题
public interface MmMapper {
public List<HashMap<String, Object>> mmQueryByPage(@Param(“mm”)HashMap<String, Object> params);
}
@Service
public class MmServiceImpl implements IMmService{
@Autowired
private MmMapper mmMapper;
…………………省略
}
看这个代码的意思就是直接把用mybatis写的dao接口直接注入到service层了
本人记得以前写SSH用hibernate要先写个接口 然后写这个接口与数据库打交道的具体实现类的啊
莫非mybatis不要具体写实现类吗
例如
public User findUserById(String id) {
return (User) this.getSqlSession().selectOne(“cn.test.mybatis.domain.User.selectUserById”, id);
}
莫非mybatis智能到只要写接口 框架就做完了具体实现类吗 mybatis是怎么做到的呢
发现了个问题
public interface MmMapper {
public List<HashMap<String, Object>> mmQueryByPage(@Param(“mm”)HashMap<String, Object> params);
}
@Service
public class MmServiceImpl implements IMmService{
@Autowired
private MmMapper mmMapper;
…………………省略
}
看这个代码的意思就是直接把用mybatis写的dao接口直接注入到service层了
本人记得以前写SSH用hibernate要先写个接口 然后写这个接口与数据库打交道的具体实现类的啊
莫非mybatis不要具体写实现类吗
例如
public User findUserById(String id) {
return (User) this.getSqlSession().selectOne(“cn.test.mybatis.domain.User.selectUserById”, id);
}
莫非mybatis智能到只要写接口 框架就做完了具体实现类吗 mybatis是怎么做到的呢
解决方案
10
好吧刚理解错,应该说的是这个吧
public interface CategoryMapper { @Select("SELECT * FROM category WHERE name=#{name}") Category findById(String name); }
spring配置
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="xx.xx.mapper" /> </bean>
然后MyBatis会根据这些动态生成实现类的
10
mybatis结合spring的自动映射,这种注解方式不建议用,原因是用这种方式就没办法使用mybatis拥有的动态sql了,那些ognl标签都无法使用了,只能映射写死的sql,并且维护起来极不方便,mybatis还是用xml的方式,把sql写在xml中,用传统的dao模式更好。