struts2 mybaits spring 整合问题

jjoott 2011-03-01 09:41:01
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:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:jdbc="http://www.springframework.org/schema/jdbc"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">

<!-- in-memory database and a datasource -->
<context:property-placeholder location="classpath:init.properties"/>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${datasource.driverClass}"/>
<property name="url" value="${datasource.url}"/>
<property name="username" value="${datasource.username}"/>
<property name="password" value="${datasource.password}"/>
</bean>

<!-- transaction manager, use JtaTransactionManager for global tx -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="configLocation" value="classpath:mybatis-config.xml"/>
<property name="dataSource" ref="dataSource"/>
</bean>

<bean id="userMapDao" class="org.mybatis.spring.mapper.MapperFactoryBean">
<property name="mapperInterface" value="ssm.dao.UserDao"></property>
<property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
</bean>

<bean id="userSrverTarget" class="ssm.bo.server.UserServerImp">
<property name="idao" ref="userMapDao"/>
</bean>
<!--
<bean id="userService" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="target"><ref local="userSrverTarget"/></property>
<property name="transactionManager"><ref bean="transactionManager"/></property>
<property name="transactionAttributes">
<props>
<prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
-->
<bean id="LoginAction" class="ssm.action.Login">
<property name="service" ref="userSrverTarget"></property>
</bean>
</beans>
...全文
253 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zljxtt 2011-03-02
  • 打赏
  • 举报
回复
哈哈,自己决解了
User.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC
"-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="User">
<resultMap type="User" id="userResultMap">
<id property="id" column="ID"/>
<result property="name" column="NAME"/>
<result property="password" column="PASSWORD"/>
</resultMap>
<select id="selectUserByName" parameterType="java.long.String" resultType="User">
<![CDATA[
select * from user u where u.name = #{name}
]]>
</select>
</mapper>
<mapper namespace="ssm.dao.UserDao">
<select id="selectUserByName" parameterType="java.lang.String" resultMap="userResultMap">
gouxiongyaya 2011-03-02
  • 打赏
  • 举报
回复
applicationContext.xml里
<bean id="userSrverTarget" class="ssm.bo.server.UserServerImp">
这句的class貌似写错了吧,应该是ssm.bo.server.UserServiceImp吧
xttjso 2011-03-01
  • 打赏
  • 举报
回复
错误信息:
java.lang.NullPointerException
ssm.action.Login.execute(Login.java:21)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:452)
com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:291)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:254)
com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:263)
org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:133)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:142)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:166)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:190)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:485)
org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)

我的UserService 应该是注入到Action里边的吧,
但是System.out.println("-->"+service);打印出来是NULL
List list = service.selectUserByName(user.getName());
请高手看看这是什么原因啊
xttjso 2011-03-01
  • 打赏
  • 举报
回复
Login.java
package ssm.action;

import java.util.List;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import ssm.bo.UserService;
import ssm.entity.User;

import com.opensymphony.xwork2.ActionSupport;

public class Login extends ActionSupport {
private User user = new User();
private UserService service;
public String execute() throws Exception {
ApplicationContext context = new ClassPathXmlApplicationContext("/applicationContext.xml");
//service = (UserService)context.getBean("userService");
System.out.println("-->"+user.getName());
System.out.println("-->"+service);
List list = service.selectUserByName(user.getName());
for(int i=0; i<list.size(); i++){
System.out.println(((User)list.get(i)).getId());

}

return "success";
}

public User getUser() {
return user;
}

public void setUser(User user) {
System.out.println("--------");
this.user = user;
}

public UserService getService() {
return service;
}

public void setService(UserService s) {
//System.out.println("service");
this.service = s;
// System.out.println(s);
//System.out.println("server-->"+service);
//List list = s.selectUserByName("abc");
//System.out.println(list.size());
}

}
xttjso 2011-03-01
  • 打赏
  • 举报
回复
UserDao.java
package ssm.dao;

import java.util.List;

public interface UserDao {
public List selectUserByName(String name);
}
UserDaoImp.java
package ssm.dao.imp;

import java.util.List;

import org.apache.ibatis.mapping.SqlMapperException;
import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;

import ssm.dao.UserDao;

public class UserDaoImp extends SqlMapClientDaoSupport implements UserDao {

public List selectUserByName(String name) {

List list = this.getSqlMapClientTemplate().queryForList("selectUserByName");
return list;

}

}
jjoott 2011-03-01
  • 打赏
  • 举报
回复
UserService.java
package ssm.bo;

import java.util.List;

public interface UserService {
public List selectUserByName(String name);
}
UserServiceImp.java
package ssm.bo.server;

import java.util.List;

import ssm.bo.UserService;
import ssm.dao.UserDao;

public class UserServerImp implements UserService {
private UserDao idao = null;
public List selectUserByName(String name) {
return idao.selectUserByName(name);

}
public UserDao getIdao() {
return idao;
}
public void setIdao(UserDao idao) {
this.idao = idao;
}

}
jjoott 2011-03-01
  • 打赏
  • 举报
回复
User.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC
"-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="User">
<resultMap type="User" id="userResultMap">
<id property="id" column="ID"/>
<result property="name" column="NAME"/>
<result property="password" column="PASSWORD"/>
</resultMap>
<select id="selectUserByName" parameterType="java.long.String" resultType="User">
<![CDATA[
select * from user u where u.name = #{name}
]]>
</select>
</mapper>
jjoott 2011-03-01
  • 打赏
  • 举报
回复
init.propertiesdatasource.driverClass = com.mysql.jdbc.Driver
datasource.url = jdbc:mysql://localhost:3306/ddtest?characterEncoding=utf8
datasource.username = root
datasource.password = 123456

mybatis-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>
<settings>
<!-- changes from the defaults -->
<setting name="lazyLoadingEnabled" value="false" />
</settings>
<typeAliases>
<typeAlias alias="User" type="ssm.entity.User"/>
</typeAliases>
<mappers>
<mapper resource="ssm/sqlmap/User.xml"/>
</mappers>
</configuration>

67,516

社区成员

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

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