1.包结构:

aaarticlea/png;base64,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" alt="" />

 2.spring配置:基本的DAO配置以及扫描Mapper(扫描出来的Mapper为首字母小写)

 <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd"> <context:property-placeholder location="classpath:db.properties"/> <!-- 数据库连接池 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<property name="maxActive" value="10" />
<property name="maxIdle" value="5" />
</bean> <!-- Mybatis的工厂 -->
<bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<!-- 核心配置文件的位置 -->
<property name="configLocation" value="classpath:sqlMapConfig.xml"/>
</bean> <!-- Mapper动态代理开发 扫描 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!-- 基本包 -->
<property name="basePackage" value="cn.qlq.springmvc.mapper"/>
</bean> <!-- 注解事务 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean> <!-- 开启注解 -->
<tx:annotation-driven transaction-manager="transactionManager"/> </beans>

3.mybatis配置(主要就一个定义别名)

 <?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>
<!-- 设置别名 -->
<typeAliases>
<!-- 2. 指定扫描包,会把包内所有的类都设置别名,别名的名称就是类名,大小写不敏感 -->
<package name="cn.qlq.springmvc.pojo" />
</typeAliases> </configuration>

4.springMVC配置(主要就是配置扫描Service和Controller)

 <?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-4.0.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd"> <!-- 扫描@Controler @Service -->
<context:component-scan base-package="cn.qlq"/> <!-- 处理器映射器 -->
<!-- <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/> -->
<!-- 处理器适配器 -->
<!-- <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/> -->
<!-- 注解驱动 -->
<mvc:annotation-driven/> <!-- 视图解释器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean> </beans>

5.Service使用注解注入Mapper(主要就是自己添加service注释与内部注入mapper)

   5.1 接口(接口中不做任何声明)

 package cn.qlq.springmvc.service;
import java.util.List; import cn.qlq.springmvc.pojo.Items;
public interface ItemService {
public List<Items> findAllItems();
}

    5.2.Service实现类(自己添加service注释与内部注入mapper)

 package cn.qlq.springmvc.service;

 import java.util.List;

 import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import cn.qlq.springmvc.mapper.ItemsMapper;
import cn.qlq.springmvc.pojo.Items; @Service
public class ItemsServiceImpl implements ItemService { @Autowired
private ItemsMapper itemsMapper;
@Override
public List<Items> findAllItems() { List<Items> selectByExampleWithBLOBs = itemsMapper.selectByExampleWithBLOBs(null);
return selectByExampleWithBLOBs;
} }

6. 控制层(声明自己是Controller层与自动注入Service)

package cn.qlq.springmvc.controller;

import java.util.ArrayList;
import java.util.Date;
import java.util.List; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.HttpRequestHandler;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView; import cn.qlq.springmvc.pojo.Items;
import cn.qlq.springmvc.service.ItemService; /**
* 商品管理
*
* @author lx
*
*/
@Controller
public class ItemController {
@Autowired
private ItemService itemService;
//入门程序 第一 包类 + 类包 + 方法名
@RequestMapping(value = "/item/itemlist.action")
public ModelAndView itemList(){
//从Mysql中查询
List<Items> list = itemService.findAllItems(); ModelAndView mav = new ModelAndView();
//数据
mav.addObject("itemList", list);
mav.setViewName("itemList");
return mav;
} }

总结:Service层注入时只用在实现类上声明service。注入时候注入接口名字。可以用自动装配@Autowired,也可以用

@Resource(name="baseDao")
private BaseDao baseDao;
这种格式注入对象,name就是扫描后的名字。

Spring+SpringMVC+mybatis整合以及注解的使用(三)的更多相关文章

  1. Spring+springmvc+Mybatis整合案例 annotation版(myeclipse)详细版

    Spring+springmvc+Mybatis整合案例 Version:annotation版 文档结构图: 从底层开始做起: 01.配置web.xml文件 <?xml version=&qu ...

  2. Spring+springmvc+Mybatis整合案例 xml配置版(myeclipse)详细版

    Spring+springmvc+Mybatis整合案例 Version:xml版(myeclipse) 文档结构图: 从底层开始做起: 01.配置web.xml文件 <?xml version ...

  3. 框架篇:Spring+SpringMVC+Mybatis整合开发

    前言: 前面我已搭建过ssh框架(http://www.cnblogs.com/xrog/p/6359706.html),然而mybatis表示不服啊. Mybatis:"我抗议!" ...

  4. ssm之spring+springmvc+mybatis整合初探

    1.基本目录如下  2.首先是向lib中加入相应的jar包  3.然后在web.xml中加入配置,使spring和springmvc配置文件起作用. <?xml version="1. ...

  5. Spring+SpringMVC+MyBatis整合(山东数漫江湖)

    Spring+SpringMVC+MyBatis(SSM)在我们项目中是经常用到的,这篇文章主要讲解使用Intellij IDEA整合SSM,具体环境如下: 数据库:MySQL5.7 依赖管理:Mav ...

  6. Spring+SpringMVC+MyBatis整合进阶篇(四)RESTful实战(前端代码修改)

    前言 前文<RESTful API实战笔记(接口设计及Java后端实现)>中介绍了RESTful中后端开发的实现,主要是接口地址修改和返回数据的格式及规范的修改,本文则简单介绍一下,RES ...

  7. Spring+SpringMVC+MyBatis整合(easyUI、AdminLte3)

    实战篇(付费教程) 花了几天的时间,做了一个网站小 Demo,最终效果也与此网站类似.以下是这次实战项目的 Demo 演示. 登录页: 富文本编辑页: 图片上传: 退出登录: SSM 搭建精美实用的管 ...

  8. Spring+SpringMVC+MyBatis整合基础篇(二)牛刀小试

    前言 承接上文,该篇即为项目整合的介绍了. 废话不多说,先把源码和项目地址放上来,重点要写在前面. 项目展示地址,点这里http://ssm-demo.13blog.site,账号:admin 密码: ...

  9. Spring+SpringMVC+MyBatis整合基础篇(三)搭建步骤

    作者:13GitHub:https://github.com/ZHENFENG13版权声明:本文为原创文章,未经允许不得转载. 框架介绍 Spring SpringMVC MyBatis easyUI ...

随机推荐

  1. 睡前小dp-poj3254-状压dp入门

    http://poj.org/problem?id=3254 从这里学的 http://blog.csdn.net/accry/article/details/6607703 状压dp的入门题.一片N ...

  2. MT【53】对数平均做数列放缩

    [从最简单的做起]--波利亚 请看下面三道循序渐进不断加细的题. 评:随着右边的不断加细,解决问题的方法也越来越"高端".当然最佳值$ln2$我们可以用相对 容易的方法来证明: $ ...

  3. PHP 判断浏览器语言

    详情请参看代码 作用:判断当前的浏览器语言.接收传入参数.拼接字符串 <?php $lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'],0,2); if ...

  4. 自学Zabbix11.6 Zabbix SNMP自定义OID

    点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 自学Zabbix11.6 Zabbix SNMP自定义OID 为什么要自定义OID? 前面已经讲过 ...

  5. CodeForces 464E The Classic Problem | 呆克斯歘 主席树维护高精度

    题意描述 有一个\(n\)点\(m\)边的无向图,第\(i\)条边的边权是\(2^{a_i}\).求点\(s\)到点\(t\)的最短路长度(对\(10^9 + 7\)取模). 题解 思路很简单--用主 ...

  6. [luogu2590][bzoj1036][ZJOI2008]树的统计

    题目描述 一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w.我们将以下面的形式来要求你对这棵树完成 一些操作: I. CHANGE u t : 把结点u的权值改为t II. QMAX u ...

  7. luogu2634 聪聪可可 (树形dp)

    要求出两点间距离==0(mod3) 的数量,然后除以(n*n) 设f[i][j]为i的子树到i的距离==j(mod3)的数量,然后做树形dp即可 因为要最简,所以要求一下gcd,然后除下去 #incl ...

  8. Redis中的简单动态字符串

    Redis没有直接使用C语言传统的字符串表示(以空字符结尾的字符数组,以下简称C字符串),而是自己构建了一种名为简单动态字符串(simple dynamic string,SDS)的抽象类型,并将SD ...

  9. Java -- JDBC 学习--数据库连接池

    JDBC数据库连接池的必要性 在使用开发基于数据库的web程序时,传统的模式基本是按以下步骤: 在主程序(如servlet.beans)中建立数据库连接. 进行sql操作 断开数据库连接. 这种模式开 ...

  10. Android: 待机时如何让程序继续运行 extends Service

    接触Android没几天,不太了解. 本来写好的一个应用在无意中发现,待机的时候,应用中的一个线程停止了运行. 这个线程是每隔一分钟上传一个数据到服务器上. 我当时测试的时候,没想过待机(接开关键)下 ...