spring+springmvc+mybatis

来源:互联网 发布:化妆品淘宝店名字大全 编辑:程序博客网 时间:2024/06/05 02:28

前段时间写啦spring+springmvc+hibernate 与spring+struts2+hibernate 现在写下spring+springmvc+mybatis 都是现今的主流框架

代码块都是controller层加service层加Dao层

我先把代码讲解下,再说配置的问题  整合主要的还是看配置的编写

controller层代码:

package com.azj.controllers;
import javax.annotation.Resource;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import com.azj.entity.S_student;
import com.azj.service.UserService;

//注解controller层
@Controller
@RequestMapping("/user")
public class userController {

          //创建service层userService的beanID
@Resource
private UserService userService;
@RequestMapping("/user.do")
public String getOne(ModelMap model){
S_student s = userService.getOne(1);
System.out.println(s.toString());
model.addAttribute("name", "success");
return "index";
}


}

service层接口代码:

package com.azj.service;
import com.azj.entity.S_student;
public interface UserService {
S_student getOne(int id);

}


service层实现代码:

package com.azj.serviceimpl;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import com.azj.dao.UserDao;
import com.azj.entity.S_student;
import com.azj.service.UserService;

@Service("userService")
public class userServiceImple implements UserService{

@Resource
    private UserDao userDao;
@Override
public S_student getOne(int id) {
return userDao.getOne(id);
}

}


dao层接口代码:

package com.azj.dao;

import com.azj.entity.S_student;
public interface UserDao {
S_student getOne(int id);
}

dao层实现代码:

package com.azj.daoimpl;
import javax.annotation.Resource;
import org.springframework.stereotype.Repository;
import com.azj.dao.UserDao;
import com.azj.entity.S_student;
import com.azj.mapper.UserMapper;
@Repository("userDao")
public class userDaoImpl implements UserDao{
@Resource(name = "userMapper")
    private UserMapper userMapper;
public S_student getOne(int id) {
// TODO Auto-generated method stub
return userMapper.getOne(id);
}

}

sql语句映射接口代码

package com.azj.mapper;
import com.azj.entity.S_student;
public interface UserMapper {
S_student getOne(int id);//方法名对应user-mapper.xml里sql语句的ID 必须完全一致

}

user-mapper.xml代码

<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
        <!--路径对应映射的接口类的全类名   sql语句里声明的ID必须与接口类的方法名一致  -->
<mapper namespace="com.azj.mapper.UserMapper"> 
 <select id="getOne" resultType="student" parameterType="int">
  select * from student where cid=#{id}
  </select>
</mapper>


web.xml文件内容:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>Mybatis</display-name>
  <!--   配置spring加mybatis相关配置 --> 
  <context-param>  
        <param-name>contextConfigLocation</param-name>  
        <param-value>classpath*:spring-mybatis.xml</param-value>  
  </context-param>
  
  <!--   配置spring启动listener入口 -->  
  <listener>
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  

 <!-- 配置log4j输出日志监听器 -->
    <context-param>  
        <param-name>log4jConfigLocation</param-name>  
        <param-value>classpath:log4j.properties</param-value>  
    </context-param>  
    <!-- 60s 检测日志配置 文件变化 -->  
    <context-param>  
        <param-name>log4jRefreshInterval</param-name>  
        <param-value>60000</param-value>  
    </context-param>  
  
    <!-- 配置Log4j监听器 -->  
    <listener>  
        <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>  
    </listener>
  
   <!-- 配置springMVC启动DispatcherServlete入口 --> 
  <servlet>
    <servlet-name>springmvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath*:applicationContext-mvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>
</web-app>


springmvc的applicationContext-mvc.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:tx="http://www.springframework.org/schema/tx"  
    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.2.xsd   
    http://www.springframework.org/schema/tx   
    http://www.springframework.org/schema/tx/spring-tx-3.2.xsd  
    http://www.springframework.org/schema/context  
    http://www.springframework.org/schema/context/spring-context-3.2.xsd  
    http://www.springframework.org/schema/mvc  
    http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd">  
  
    <!-- 自动扫描的包名 -->  
     <context:component-scan base-package="com.**.controllers"/>
  
    <!-- 默认的注解映射的支持,自动注册DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter -->  
    <mvc:annotation-driven />  
  
    <!-- 视图解释类 -->  
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">  
        <property name="prefix" value="/"/>  
        <property name="suffix" value=".jsp"/>  
        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />  
    </bean>
    </beans>


spring+mybayis的spring-mybatis.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: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-4.0.xsd">  
    <!-- 自动扫描注解包 --> 
    <context:component-scan base-package="com.azj.*">
           <!-- //扫描时跳过 @Controller 注解的JAVA类(控制器) -->
            <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
    </context:component-scan>
    <!-- 引入配置文件 -->  
    <bean id="propertyConfigurer"  
        class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">  
        <property name="location" value="classpath:appConfig.properties" />  
    </bean>  
  
  <!-- 启动AOP支持 -->
  <!-- <aop:aspectj-autoproxy/> -->


  <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
        destroy-method="close">
        
        <!-- 设置JDBC驱动名称 -->
        <property name="driverClass" value="${jdbc.Adriver}" />
        <!-- 设置JDBC连接URL -->
        <property name="jdbcUrl" value="${jdbc.Aurl}" />
        <!-- 设置数据库用户名 -->
        <property name="user" value="${jdbc.Ausername}" />
        <!-- 设置数据库密码 -->
        <property name="password" value="${jdbc.Apassword}" />
        <property name="maxPoolSize" value="20"></property>  
       <!-- 设置数据库连接池的最小连接数 -->  
       <property name="minPoolSize" value="5"></property>  
       <!-- 设置数据库连接池的初始化连接数 -->  
       <property name="initialPoolSize" value="5"></property>     
       <!--最大空闲时间,300秒内未使用则连接被丢弃。若为0则永不丢弃。-->    
        <property name="maxIdleTime">    
            <value>300</value>    
        </property>    
       <!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。-->    
        <property name="acquireIncrement">    
            <value>5</value>    
        </property>    
    </bean>
     
  
    <!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件 -->  
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">  
        <property name="dataSource" ref="dataSource" />  


        <!-- 自动扫描mapping.xml文件 -->  
        <property name="mapperLocations" value="classpath:com/azj/mapper/*.xml"></property>
        <!--自动扫描实体类别名  --> 
         <property name="configLocation" value="classpath:mybatis.xml" />
    </bean>  
  
    <!-- 自动扫描所有的Mapper接口与文件 -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">  
        <property name="basePackage" value="com.azj.mapper" />  
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>  
    </bean>  
  
    <!-- (事务管理)transaction manager, use JtaTransactionManager for global tx -->  
    <bean id="transactionManager"  
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">  
        <property name="dataSource" ref="dataSource" />  
    </bean>  
  
</beans>


appConfig.properties相关连接设置:

jdbc.Adriver=com.mysql.jdbc.Driver
jdbc.Aurl=jdbc:mysql://localhost:3306/azj?useUnicode=true&characterEncoding=UTF-8
jdbc.Ausername=root
jdbc.Apassword=425193
initialSize=0  
maxActive=20  
maxIdle=20  
minIdle=1  
maxWait=60000


mybatis.xml相关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>
        <typeAlias type="com.azj.entity.S_student" alias="student" />
    </typeAliases>
</configuration>


log4j.properties的日志文件设置:

log4j.rootLogger=DEBUG,INFO


###输出打印 ###
#log4j.appender.stdout = org.apache.log4j.ConsoleAppender
#log4j.appender.stdout.Target = System.out
#log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
#log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
log4j.logger.freemarker=FATAL

###写入某日志文件 ###
log4j.appender.INFO = org.apache.log4j.DailyRollingFileAppender
log4j.appender.INFO.File =F:/eclipse_eexm/Mybatis/src/logs/ssm.log 
log4j.appender.INFO.Encoding=utf-8
log4j.appender.INFO.Append = true
log4j.appender.INFO.Threshold = INFO 
log4j.appender.INFO.layout = org.apache.log4j.PatternLayout
log4j.appender.INFO.layout.ConversionPattern =[%-5p] %d{yyyy-MM-dd HH\:mm\:ss} %C{8}@(%F\:%L)\:%m%n   
 
# Control logging for other open source packages
# Changing the log level to DEBUG when debug
log4j.logger.org.springframework=WARN
# Changing the log level to DEBUG will display SQL Hibernate generated
#log4j.logger.org.hibernate=DEBUG
#log4j.logger.org.hibernate.SQL=DEBUG
#log4j.logger.org.hibernate.cache=DEBUG
#log4j.logger.net.sf.ehcache=ERROR
log4j.logger.com.xeg.service=DEBUG 

以上便是全部配置及编码  不助之处 请自己查漏补缺!

模板下载地址:http://download.csdn.net/download/rainjm/10154042


原创粉丝点击