Spring3+Mybatis3基础问题,Servise注入不了

Kreocn 2015-01-07 03:06:39
先发代码吧,不然说明不了.
配置文件就不发了,应该没有多大问题

BaseMapper.java
MyBatis基础Mapper映射类,想着如果只有增删改查,就直接映射引用这个类就行了

package org.erms.base;
import java.util.HashMap;
import java.util.List;
public interface BaseMapper<T> {
public List<T> select(HashMap<String, Object> map);
public Integer count(HashMap<String, Object> map);
public T get(Object uuid);
public Integer insert(T entity);
public Integer update(T entity);
public Integer delete(Object uuid);
}


BaseBean.java
空的接口

package org.erms.base;
public interface BaseBean {
}


业务基础类,随便建了个表

package org.erms.hello.bean;
import java.util.Date;
import org.erms.base.BaseBean;
public class GoodsType implements BaseBean {
private Integer uuid;// (int) 主键
private String type_name;// (varchar) 类型名称
private String type_group;// (varchar) 属性分组
private Integer status;// (int) 状态
private String lm_user;// (varchar) 0
private Date lm_time;// (datetime) 0
//get set方法省略
}


Mapper扩展方法

package org.erms.hello.dao;
import org.erms.base.BaseMapper;
import org.erms.hello.bean.GoodsType;
import org.springframework.stereotype.Repository;
@Repository
public interface GoodsTypeMapper extends BaseMapper<GoodsType> {
public Integer updateStatus(GoodsType entity);
}


对应的Mapper.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="org.erms.hello.dao.GoodsTypeMapper">
<!-- 新增记录 -->
<insert id="insert" parameterType="org.erms.hello.bean.GoodsType" useGeneratedKeys="true" keyProperty="uuid">
<![CDATA[Insert into qkj_t_goods_type(uuid,type_name,type_group,status,lm_user,lm_time)
values(#{uuid},#{type_name},#{type_group},#{status},#{lm_user},now())]]>
<selectKey resultType="java.lang.Integer" keyProperty="uuid">
SELECT LAST_INSERT_ID()
</selectKey>
</insert>
<!-- 查询单条记录 -->
<select id="get" parameterType="int" resultType="org.erms.hello.bean.GoodsType">
<![CDATA[Select * from qkj_t_goods_type where uuid = #{uuid}]]>
</select>
<!-- 修改记录 -->
<update id="update" parameterType="org.erms.hello.bean.GoodsType">
<![CDATA[update qkj_t_goods_type set type_name = #{type_name},type_group = #{type_group} where uuid = #{uuid}]]>
</update>
<!-- 查询所有记录 -->
<select id="select" resultType="org.erms.hello.bean.GoodsType">
<![CDATA[SELECT `uuid`,`type_name`,`type_group`,`status`,`lm_user`,`lm_time` FROM `huzhu`.`qkj_t_goods_type` LIMIT 0, 1000]]>
</select>
<!-- 删除记录 -->
<delete id="delete" parameterType="int">
<![CDATA[delete from qkj_t_goods_type where uuid = #{uuid}]]>
</delete>
<!-- 删除记录 -->
<delete id="updateStatus" parameterType="int">
<![CDATA[update qkj_t_goods_type set status = #{status} where uuid = #{uuid}]]>
</delete>
</mapper>


Service,问题大概就处在这里,重点标注

package org.erms.hello.service;
import java.util.HashMap;
import java.util.List;
import org.erms.hello.bean.GoodsType;
import org.erms.hello.dao.GoodsTypeMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class GoodsTypeService {
@Autowired
private GoodsTypeMapper mapper;
public List<GoodsType> select(HashMap<String, Object> map) {
return mapper.select(map);
}
public Integer count(HashMap<String, Object> map) {
return mapper.count(map);
}
public GoodsType get(Object uuid) {
return mapper.get(uuid);
}
public Integer insert(GoodsType entity) {
return mapper.insert(entity);
}
public Integer update(GoodsType entity) {
return mapper.update(entity);
}
public Integer delete(Object uuid) {
return mapper.delete(uuid);
}
public Integer updateStatus(GoodsType entity) {
return mapper.updateStatus(entity);
}
}


最后一个是Controller

package org.erms.hello.controller;
import org.erms.hello.bean.GoodsType;
import org.erms.hello.dao.GoodsTypeMapper;
import org.erms.hello.service.GoodsTypeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class GoodsTypeController {
@Autowired
private GoodsTypeMapper mapper;
@Autowired
private GoodsTypeService service;
private GoodsType goodsType;
@RequestMapping("/goods/type")
public String add(Model model) {
model.addAttribute("name", "Hello World!");
goodsType = new GoodsType();
goodsType.setType_name("测试类型1");
goodsType.setType_group("组1 组2 组3");
goodsType.setStatus(1);
goodsType.setLm_user("AA");
//问题在这里,直接用mapper进行注入,这条可以记录能够正确insert
System.out.println("Mapper Insert Successful!" + mapper.insert(goodsType) + ":" + goodsType.getUuid());
goodsType.setType_group("普通白酒Service");
//隔了一层service,这条居然就不行了!!!
System.out.println("Service Insert Successful!" + service.insert(goodsType) + ":" + goodsType.getUuid());
return "/goods/type";
}
}



问题来了,Service注入失败了...根本调用不了方法,但是不报错........求指点
...全文
172 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Kreocn 2015-01-08
  • 打赏
  • 举报
回复
已经发现问题,是mybatis配置事务时,拦截掉了

<!-- 拦截器方式配置事务 -->
<tx:advice id="transactionAdvice" transaction-manager="transactionManager">
	<tx:attributes>
		<tx:method name="insert*" propagation="REQUIRED" />
		<tx:method name="modify*" propagation="REQUIRED" />
		<tx:method name="delete*" propagation="REQUIRED" />
		<tx:method name="find*" propagation="SUPPORTS" />
		<tx:method name="query" propagation="SUPPORTS" />
		<tx:method name="search*" propagation="SUPPORTS" />
		<tx:method name="*" propagation="SUPPORTS" />
	</tx:attributes>
</tx:advice>
<aop:config>
	<aop:advisor pointcut="execution(* org.erms..service.*.*(..))" advice-ref="transactionAdvice" />
</aop:config>
还是不够仔细,..
YangSy_001 2015-01-07
  • 打赏
  • 举报
回复
楼主DEBUG调试的时候直接跳过执行service方法 没有报任何错误吗

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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