mybatis和spring,dao层接口注解注入失败

z1246879396 2016-11-30 11:30:42
先看看配置文件吧
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd">
<context:component-scan base-package="com.DC.dao"></context:component-scan>
<!--数据库连接池-->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"
p:driverClass="com.mysql.jdbc.Driver"
p:jdbcUrl="jdbc:mysql://localhost:3306/DC"
p:user="root"
p:password="zfp123"
p:maxPoolSize="60"
p:minPoolSize="5"
p:initialPoolSize="10"
p:maxIdleTime="60">
</bean>
<!--匹配xml文件,xml文件对应的是sqlsession-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation" value="config/Configuration.xml"></property>
<property name="mapperLocations" value="classpath*:com/zfp/mapper/*.xml"></property>
</bean>
<!--这个包配置的是xml文件对应java文件-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="sqlSessionFactory" ref="sqlSessionFactory"/>
<property name="basePackage" value="com.DC.dao"></property>
</bean>
</beans>

然后是mvc-servlet的
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd">
<!--设置控制器-severletcontext容器-->
<context:component-scan base-package="com.DC.dao,com.DC.Services"></context:component-scan>
<mvc:annotation-driven/>
<!--静态资源设置-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property>
<property name="prefix" value="WEB-INF/views/"></property>
<property name="suffix" value = ".jsp"></property>
</bean>
</beans>

再看看dao的接口
package com.DC.dao;

import org.springframework.stereotype.Component;
import com.DC.Beans.User;
@Component
public interface IUseroperation {
public User selectuserbyid(long id);
public User selectuserbyname(String username);
public void adduser(User user);
public void updateUser(User user);
}

最后是测试的调用
package com.DC.Services;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.RequestMapping;

import com.DC.Beans.Goods;
import com.DC.Beans.User;
//import com.DC.dao.Goodsoperation;
import com.DC.dao.IUseroperation;

@Service
public class Login_S {
static ApplicationContext rtx = new ClassPathXmlApplicationContext("config/applicationContext.xml");
@Autowired
IUseroperation iUseroperation;
//@Autowired
//Goodsoperation goodsoperation;
@Autowired
static
Goods goods;
@Autowired
User user;
@RequestMapping("/list")
public void login_user(User _user){
//String username = _user.getU_name();
//String password = _user.getU_password();
String username = "aaaaazfp";
String password = "123";
user = iUseroperation.selectuserbyname(username);
if(password.equals(user.getU_password())){
System.out.println("success");
}else{
System.out.println("sasa“);
}
goods.setBuss_id(1);
goods.setGoods_name("TEST");
goods.setGoods_price(10);
goods.setGoods_news("sas");
// goodsoperation.addgoods(goods);
}
public static void main(String[] args){
goods = (Goods) rtx.getBean("goods");
System.out.println(goods);
Login_S ls = new Login_S();
ls.login_user(null);
}
}

希望大神给出指导
...全文
2315 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
navyzhengyj 2016-12-17
  • 打赏
  • 举报
回复
@MapperScan
nyhyn 2016-12-03
  • 打赏
  • 举报
回复
你的用户业务实现类和Mapper接口类没有贴出来,暂没看出问题在哪里
两个木头 2016-12-02
  • 打赏
  • 举报
回复
dao 用 @Repository
爱睡觉的阿狸 2016-12-01
  • 打赏
  • 举报
回复
mybatis的dao接口不需要注解,你硬要用注解修饰dao接口的话,可以类似这样配置:
<!-- MyBatis begin -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="typeAliasesPackage" value="com.thinkgem.jeesite"/>
        <property name="typeAliasesSuperType" value="com.thinkgem.jeesite.common.persistence.BaseEntity"/>
        <property name="mapperLocations" value="classpath:/mappings/**/*.xml"/>
		<property name="configLocation" value="classpath:/mybatis-config.xml"></property>
    </bean>
    
    <!-- 扫描basePackage下所有以@MyBatisDao注解的接口 -->
    <bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
        <property name="basePackage" value="com.thinkgem.jeesite"/>
        <property name="annotationClass" value="com.thinkgem.jeesite.common.persistence.annotation.MyBatisDao"/>
    </bean>
注意倒数第二行的annotationClass,指定了dao接口上可修饰的注解
Inhibitory 2016-12-01
  • 打赏
  • 举报
回复
package com.DC.dao;
 
import org.springframework.stereotype.Component;
import com.DC.Beans.User;
@Component
public interface IUseroperation {
    public User selectuserbyid(long id);
    public User selectuserbyname(String username);
    public void adduser(User user);
    public void updateUser(User user);
}
MyBatis 的 Mapper 不能使用 @Component 自动生成,如果要自动生成,需要用 MapperScannerConfigurer,可以参考 http://xtuer.github.io/spring-web-mybatis/
z1246879396 2016-12-01
  • 打赏
  • 举报
回复
引用 1 楼 Inhibitory 的回复:
package com.DC.dao;
 
import org.springframework.stereotype.Component;
import com.DC.Beans.User;
@Component
public interface IUseroperation {
    public User selectuserbyid(long id);
    public User selectuserbyname(String username);
    public void adduser(User user);
    public void updateUser(User user);
}
MyBatis 的 Mapper 不能使用 @Component 自动生成,如果要自动生成,需要用 MapperScannerConfigurer,可以参考 http://xtuer.github.io/spring-web-mybatis/
我觉得是我的配置文件的问题,麻烦了。

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧