• 14.


    1.Spring和MyBatis整合
    	1)导入spring-mybatis.jar
    	2)整合
    		a)org.mybatis.spring.SqlSessionFactoryBean
    			1)dataSource
    			2)myBatis的配置文件
    	3)事务管理器用DataSourceTransctionManager
    	4)dao层
    		1)SqlSessoinTemplate
    		2)SqlSessionDaoSupport
    	5)自动生成dao层的代理类
    		1)org.mybatis.spring.mapper.MapperScannerConfigurer
    			1)接口的全全类名
    			2)配置sqlSessionFactory名字 

    开发一个全新的项目

    1、导入jar

    Mybatisjar

    asm-4.2.jar

    cglib-3.1.jar

    commons-logging-1.2.jar

    log4j-1.2.17.jar

    log4j-api-2.2.jar

    log4j-core-2.2.jar

    mybatis-3.3.0.jar

    mysql-connector-java.jar

    slf4j-api-1.7.12.jar

    slf4j-log4j12-1.7.12.jar

    Spring+SpringMVC+ORM

    spring-beans-3.2.0.RELEASE.jar

    spring-context-3.2.0.RELEASE.jar

    spring-core-3.2.0.RELEASE.jar

    spring-expression-3.2.0.RELEASE.jar

    spring-jdbc-3.2.0.RELEASE.jar

    spring-orm-3.2.0.RELEASE.jar

    spring-test-3.2.0.RELEASE.jar

    spring-web-3.2.0.RELEASE.jar

    spring-webmvc-3.2.0.RELEASE.jar

    aop+tx

    com.springsource.org.aopalliance-1.0.0.jar

    com.springsource.org.aspectj.tools-1.6.6.RELEASE.jar

    com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar

    spring-aop-3.2.0.RELEASE.jar

    spring-aspects-3.2.0.RELEASE.jar

    spring-tx-3.2.0.RELEASE.jar

    jackson

    jackson-annotations-2.5.4.jar

    jackson-core-2.5.4.jar

    jackson-databind-2.5.4.jar

    springmybatis整合需要的jar

    mybatis-spring-1.2.0.jar

    c3p0连接池

    com.springsource.com.mchange.v2.c3p0-0.9.1.2.jar

    文件上传

    com.springsource.org.apache.commons.fileupload-1.2.0.jar

    com.springsource.org.apache.commons.io-1.4.0.jar

    2、导入相关的配置文件

    3、关键配置

    (1) web.xml:配置过滤器,监听器,核心控制器,

       

            <filter>
    		<filter-name>characterEncodingFilter</filter-name>
    		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    		<init-param>
    			<param-name>encoding</param-name>
    			<param-value>utf-8</param-value>
    		</init-param>
    	</filter>
    	<filter-mapping>
    		<filter-name>characterEncodingFilter</filter-name>
    		<url-pattern>/*</url-pattern>
    	</filter-mapping>
    
    
    	<!-- 确定Spring配置文件的位置 -->
    	<context-param>
    		<param-name>contextConfigLocation</param-name>
    		<param-value>classpath:applicationContext.xml</param-value>
    	</context-param>
    
    
    	<!-- 在Web容器启动的时候初始化Spring容器 -->
    	<listener>
    		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    	</listener>
    
    	<servlet>
    		<servlet-name>springmvc</servlet-name>
    		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    
    		<!-- 指定SpringMVC的配置文件路径 -->
    		<init-param>
    			<param-name>contextConfigLocation</param-name>
    			<param-value>classpath:springmvc-servlet.xml</param-value>
    		</init-param>
    
    		<!-- 加载servlet优先级,数值越小优先级越高 -->
    		<load-on-startup>1</load-on-startup>
    	</servlet>
    	<servlet-mapping>
    		<servlet-name>springmvc</servlet-name>
    		<url-pattern>/</url-pattern>
    	</servlet-mapping>
    

     

      

     

     

    2springmvc.xml:

    1.指定需要扫描的控制器

    2.配置视图解析器

    3.文件上传解析器

    4.json解析器

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    	xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:aop="http://www.springframework.org/schema/aop"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
    	xmlns:tx="http://www.springframework.org/schema/tx"
    	xsi:schemaLocation="
            http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/mvc
            http://www.springframework.org/schema/mvc/spring-mvc.xsd
            http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context.xsd
            http://www.springframework.org/schema/aop 
            http://www.springframework.org/schema/aop/spring-aop.xsd
             http://www.springframework.org/schema/tx
            http://www.springframework.org/schema/tx/spring-tx.xsd">
    	<!-- 开启注解驱动 -->
    	<mvc:annotation-driven />
    
    	<!-- 忽略静态资源 -->
    	<mvc:resources location="/js/*" mapping="/js/**"></mvc:resources>
    	
    	<!-- 开启包扫描 -->
    	<context:component-scan base-package="com.qf"></context:component-scan>
    
    	<!-- 配置视图解析器 -->
    	<bean id="jspViewResolver"
    		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    		<!-- 用jstl事务解析器 -->
    		<property name="viewClass"
    			value="org.springframework.web.servlet.view.JstlView" />
    		<!-- 将视图名 渲染后视图的前缀 -->
    		<property name="prefix" value="/" />
    
    		<!-- 渲染后视图的后缀 -->
    		<property name="suffix" value=".jsp" />
    	</bean>
    	
    	<!-- 文件上传配置 -->
    	<bean id="multipartResolver"
    		class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    		<!-- 设置编码格式 -->
    		<property name="defaultEncoding" value="utf-8"></property>
    		<!-- 设置文件大小 -->
    		<property name="maxUploadSize" value="20971520"></property>
    	</bean>
    	
    	<!-- 配置支持JSON格式的转换器 -->
    	<bean id="jsonConverter"
    		class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter" />
    
    	<bean
    		class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
    		<property name="messageConverters">
    		    <list>
    			<ref bean="jsonConverter" />
    		    </list>
    		</property>
    	</bean>
    </beans> 

    3applicationContext.xml:

                      开启包扫描

    配置数据源,

    整合mybatis,

    扫描Service

    Dao(采用注解方式实现依赖)

    配置事务管理器

    事务的策略

    事务范围

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    	xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:aop="http://www.springframework.org/schema/aop"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
    	xmlns:tx="http://www.springframework.org/schema/tx"
    	xsi:schemaLocation="
            http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/mvc
            http://www.springframework.org/schema/mvc/spring-mvc.xsd
            http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context.xsd
            http://www.springframework.org/schema/aop 
            http://www.springframework.org/schema/aop/spring-aop.xsd
             http://www.springframework.org/schema/tx
            http://www.springframework.org/schema/tx/spring-tx.xsd">
    
    	<!-- 注解实现必须要开启包扫描 -->
    	<context:component-scan base-package="com.qf"></context:component-scan>
    	
    	<context:property-placeholder location="classpath:jdbc.properties" />
    
    	<!-- 实例化数据源 -->
    	<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
    		<!-- ${属性文件中的key} -->
    		<property name="user" value="${jdbc.name}"></property>
    		<property name="password" value="${jdbc.password}"></property>
    		<property name="jdbcUrl" value="${jdbc.url}"></property>
    		<property name="driverClass" value="${jdbc.driver}"></property>
    	</bean>
    
    	<!-- Spring整合MyBatis -->
    	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    		<!-- 数据源 -->
    		<property name="dataSource" ref="dataSource"></property>
    		<!-- 指定MyBatis配置文件 -->
    		<property name="configLocation" value="classpath:mybatis-config.xml"></property>
    		
    	</bean>
    	
    	<!-- 定义事务管理器 -->
    	<bean id="tx"
    		class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    		<property name="dataSource" ref="dataSource"></property>
    	</bean>
    
    	<!-- 事务的策略 -->
    	<tx:advice id="txAdvice" transaction-manager="tx">
    		<tx:attributes>
    			<tx:method name="add*" isolation="DEFAULT" propagation="REQUIRED" />
    			<tx:method name="update*" isolation="DEFAULT" propagation="REQUIRED" />
    			<tx:method name="delete*" isolation="DEFAULT" propagation="REQUIRED" />
    			<tx:method name="save*" isolation="DEFAULT" propagation="REQUIRED" />
    			<tx:method name="create*" isolation="DEFAULT" propagation="REQUIRED" />
    			
    			
    			<tx:method name="find*" isolation="DEFAULT" propagation="REQUIRED"  read-only="true"/>
    			<tx:method name="get*" isolation="DEFAULT" propagation="REQUIRED" read-only="true"/>
    			<tx:method name="select*" isolation="DEFAULT" propagation="REQUIRED" read-only="true"/>
    				
    		</tx:attributes>
    	</tx:advice>
    	
        <!-- 事务范围 -->
    	<aop:config>
    		<aop:advisor advice-ref="txAdvice"
    			pointcut="execution(* com.qf.service..*.*(..))" />
    	</aop:config>
    
    </beans>

    (4)spring整合mybatis

       导入mybatis-spring-1.2.0.jar

              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>
    
    	<typeAliases>
    		<package name="com.qf.entity"/>
    	</typeAliases>
    	
    </configuration>

    0.数据库

    1.创建项目

    2.建包建配置文件

       com.qf.entity

       com.qf.dao

       com.qf.mapper

       com.qf.utils

    mybatis-config.xml  

    3.con.qf.entity包中创建实体类

    package com.qf.entity;
    
    import java.security.KeyStore.PrivateKeyEntry;
    
    public class User {
    
    	private Integer id;
    	
    	private String name;
    	
    	private String password;
    
    	
    

      

    package com.qf.entity;
    
    public class Account {
    
    	private Integer id;
    	
    	private String name;
    	
    	private Double balance;
    	
    	private String inName;
    	
    	private String outName;
    	
    	private Double money;
    
    }
    

     

    package com.qf.entity;
    
    import java.util.List;
    
    public class Page {
    	/**
    	 * 当前页
    	 */
    	private Integer currentPage = 1;
    
    	/**
    	 * 每页显示的行数
    	 */
    	private Integer pageSize = 3;
    
    	/**
    	 * 总页数
    	 */
    	private Integer totalPage;
    
    	/**
    	 * 总条数
    	 */
    	private Integer totalCount;
    
    	/**
    	 * 展示数据
    	 */
    	private List<?> list;
    
    	/**
    	 * 查询路径
    	 */
    	private String url;
    
    	
    	public void setTotalCount(Integer totalCount) {
    		this.totalCount = totalCount;
    		this.totalPage = totalCount % pageSize == 0 ? totalCount / pageSize : (totalCount/ pageSize) + 1;
    	}
    
    }
    

      

    4.con.qf.dao包中创建接口

    公共接口

    package com.qf.dao;
    
    import java.util.List;
    
    public interface IBaseDao<T> {
    
    	public int add(T t);
    	
    	public int update(T t);
    	
    	public int delete(Integer ID);
    	
    	public T getById(Integer id);
    	
    	public int getCount();
    	
    	public List<T> getList(Integer startIndex,Integer size);
    }
    

      

    package com.qf.dao;
    
    import com.qf.entity.User;
    
    public interface IUserDao extends IBaseDao<User>{
    
    }
    

      

    package com.qf.dao;
    
    import com.qf.entity.Account;
    
    public interface IAccountDao extends IBaseDao<Account> {
    
    	/**
    	 * 进账
    	 * @param name 用户名
    	 * @param moeny 金额
    	 */
    	public void in(String name,Double moeny);
    	
    	
    	/**
    	 * 出账
    	 * @param name 用户名
    	 * @param moeny 金额
    	 */
    	public void out(String name,Double moeny);
    }
    

      

    5.con.qf.dao.impl包创建dao层的实现层

    公共实现类

    package com.qf.dao.impl;
    
    import java.lang.reflect.ParameterizedType;
    import java.lang.reflect.Type;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.mybatis.spring.SqlSessionTemplate;
    import org.mybatis.spring.support.SqlSessionDaoSupport;
    import org.springframework.beans.factory.annotation.Autowired;
    
    import com.qf.dao.IBaseDao;
    
    public class BaseDaoImpl<T> extends SqlSessionDaoSupport implements IBaseDao<T> {
    
    	private Class<T> entity;
    	
    	public BaseDaoImpl() {
    		ParameterizedType parameterizedType = (ParameterizedType) this.getClass().getGenericSuperclass();
    
    		Type[] actualTypeArguments = parameterizedType.getActualTypeArguments();
    
    		entity = (Class<T>) actualTypeArguments[0];
    	}
    
    	@Override
    	public int add(T t) {
    		return getSqlSession().insert("com.qf.dao.I" + entity.getSimpleName() + "Dao.add", t);
    	}
    
    	@Override
    	public int update(T t) {
    		return getSqlSession().update("com.qf.dao.I" + entity.getSimpleName() + "Dao.update", t);
    	}
    
    	@Override
    	public int delete(Integer id) {
    		return getSqlSession().delete("com.qf.dao.I" + entity.getSimpleName() + "Dao.delete", id);
    	}
    
    	@Override
    	public T getById(Integer id) {
    		return getSqlSession().selectOne("com.qf.dao.I" + entity.getSimpleName() + "Dao.getById", id);
    	}
    
    	@Override
    	public int getCount() {
    		return getSqlSession().selectOne("com.qf.dao.I" + entity.getSimpleName() + "Dao.getCount");
    	}
    
    	@Override
    	public List<T> getList(Integer startIndex, Integer size) {
    		Map<String, Object> map = new HashMap<String, Object>();
    		map.put("startIndex", startIndex);
    		map.put("size", size);
    		return getSqlSession().selectList("com.qf.dao.I" + entity.getSimpleName() + "Dao.getList", map);
    	}
    
    }
    

      

    package com.qf.dao.impl;
    
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Repository;
    
    import com.qf.dao.IUserDao;
    import com.qf.entity.User;
    
    @Repository
    public class UserDaoImpl extends BaseDaoImpl<User> implements IUserDao {
    
    	@Autowired
    	@Override
    	public void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory) {
    		super.setSqlSessionFactory(sqlSessionFactory);
    	}
    
    }
    

      

    package com.qf.dao.impl;
    
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Repository;
    
    import com.qf.dao.IAccountDao;
    import com.qf.entity.Account;
    
    @Repository
    public class AccountDaoImpl extends BaseDaoImpl<Account> implements IAccountDao {
    
    	@Override
    	public void in(String name, Double moeny) {
    		
    	}
    	@Override
    	public void out(String name, Double moeny) {
    		
    	}	
    	@Autowired
    	@Override
    	public void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory) {
    		super.setSqlSessionFactory(sqlSessionFactory);
    	}
    
    }
    

      

    6.con.qf.biz包中创建接口

    公共接口

    7.con.qf.biz.impl包创建biz层的实现层

    公共实现类

    8.com.qf.contrlller包

    9.配置jdbc.properties配置文件

    10配置mybatis-config.xml配置文件

    11.com.qf.mapper包创建接口的映射文件

    12.在mybatis-config.xml里面读取Mapper文件

    13.com.qf.util工具类

    14.页面

     

  • 相关阅读:
    数组最值和两种排序
    整数翻转,99乘法表,百钱买百鸡
    运算符综合练习题
    五子棋实现体验其过程
    二维数组斜线扫描2(方法逻辑清晰)
    字符串链接练习题
    母串中有几个相同的子串
    递归求菲波拉契前N项的和
    [LeetCode] Mini Parser
    Linked List 小结
  • 原文地址:https://www.cnblogs.com/tournesol/p/8099430.html
Copyright © 2020-2023  润新知