• ssm(4)整合


    1.spring的配置文件

    1)配置数据源,2)使用ioc配置orm ,3)事务的管理,4)扫描哪些包

    <?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:context="http://www.springframework.org/schema/context"
           xmlns:tx="http://www.springframework.org/schema/tx"
           xmlns:p="http://www.springframework.org/schema/p"
           xmlns:aop="http://www.springframework.org/schema/aop"
           xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.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="cn.crud">
                <!--排除的注解-->
                <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"></context:exclude-filter>
                <context:exclude-filter type="annotation"
                                        expression="org.springframework.web.bind.annotation.ControllerAdvice"></context:exclude-filter>
            </context:component-scan>
    
            <!--添加资源-->
            <context:property-placeholder  location="classpath:datasouce-config.properties"></context:property-placeholder>
    
            <!--c3p0数据源-->
            <bean id="comboPooledDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
                <property name="user" value="${jdbc.user}"></property>
                <property name="password" value="${jdbc.password}"></property>
                <property name="driverClass" value="${jdbc.driver}"></property>
                <property name="jdbcUrl" value="${jdbc.url}"></property>
                <!-- 其他的一些配置.... -->
            </bean>
    
            <!--mybatis-->
            <bean id="sessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
                <property name="dataSource" ref="comboPooledDataSource"></property>
                <property name="configLocation" value="classpath:mybatis-config.xml"></property>
                <property name="mapperLocations"  value="classpath:mapper/*.xml"></property>
            </bean>
    
            <!--mapper接口的加入到适配器中-->
            <bean id="configurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
                <property name="basePackage" value="cn.crud.dao"></property>
            </bean>
    
         <!--mapper批量处理,使用批量的sqlsession的getmapper方法,获取的mapper然后进行sql操作,整个mapper是一个批量操作的-->
            <bean  id="sessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
                <constructor-arg  name="sqlSessionFactory" ref="sessionFactoryBean"></constructor-arg>
                <constructor-arg name="executorType" value="BATCH"></constructor-arg>
            </bean>
    
             <!--事务-->
             <bean id="dataSourceTransactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
                 <property name="dataSource" ref="comboPooledDataSource"></property>
             </bean>
    
             <!--基于注解的方式-->
             <!--<tx:annotation-driven transaction-manager="dataSourceTransactionManager"></tx:annotation-driven>-->
    
             <!--基于配置的方式的事物-->
             <aop:config>
                 <aop:pointcut id="pointcut" expression="execution(* cn.crud.service.*.*(..))"></aop:pointcut>
                 <aop:advisor advice-ref="txAdvice" pointcut-ref="pointcut"></aop:advisor>
             </aop:config>
    
             <tx:advice  id="txAdvice" transaction-manager="dataSourceTransactionManager">
                    <tx:attributes>
                        <tx:method name="*"/>
                        <tx:method name="get*" read-only="true"></tx:method>
                    </tx:attributes>
             </tx:advice>
    </beans>
    

     2.springmvc

    1)扫描哪些注解,2)配置InternalResourceViewResolver,3)页面的处理

    <?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: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.xsd
    		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
    		http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
            
        <context:component-scan base-package="cn.crud.controller"  use-default-filters="false">
            <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"></context:include-filter>
            <context:include-filter type="annotation" expression="org.springframework.web.bind.annotation.ControllerAdvice"></context:include-filter>
        </context:component-scan>
    
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="prefix"  value="/" ></property>
            <property name="suffix" value=".jsp"></property>
        </bean>
    
        <mvc:default-servlet-handler></mvc:default-servlet-handler>
    <mvc:annotation-driven></mvc:annotation-driven> </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>
    
        <settings>
            <setting name="mapUnderscoreToCamelCase" value="true"/>
        </settings>
    
        <typeAliases>
            <package name="com.crud.bean"/>
        </typeAliases>
      
    </configuration>
    

     4.generator的逆向配置

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE generatorConfiguration
            PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
            "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
    
    <generatorConfiguration>
        <!--跟自定义的没关系-->
        <!--<classPathEntry location="/Program Files/IBM/SQLLIB/java/db2java.zip" />-->
        <context id="DB2Tables" targetRuntime="MyBatis3">
    
            <!--忽略注释-->
            <commentGenerator>
                <property name="suppressAllComments" value="true" />
            </commentGenerator>
    
            <!--连接数据库-->
            <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
                            connectionURL="jdbc:mysql://localhost:3306/ssm?useUnicode=true&characterEncoding=utf8
    &characterSetResults=utf8&useSSL=false&verifyServerCertificate=false&autoReconnct=true&autoReconnectForPools=true
    &allowMultiQueries=true&serverTimezone=GMT%2B8" userId="root" password="cgz12345678"> </jdbcConnection> <!--number是否转换为BigDecimal类型--> <javaTypeResolver > <property name="forceBigDecimals" value="false" /> </javaTypeResolver> <!--指定bean生成的位置--> <javaModelGenerator targetPackage="cn.crud.bean" targetProject="./MavenWebTest/src/main/java"> <property name="enableSubPackages" value="true" /> <property name="trimStrings" value="true" /> </javaModelGenerator> <!--指定mapper文件生成的位置--> <sqlMapGenerator targetPackage="mapper" targetProject="./MavenWebTest/src/main/resources"> <property name="enableSubPackages" value="true" /> </sqlMapGenerator> <!--指定mapper接口生成的位置--> <javaClientGenerator type="XMLMAPPER" targetPackage="cn.crud.dao" targetProject="./MavenWebTest/src/main/java"> <property name="enableSubPackages" value="true" /> </javaClientGenerator> <!--<table schema="DB2ADMIN" tableName="ALLTYPES" domainObjectName="Customer" > <property name="useActualColumnNames" value="true"/> <generatedKey column="ID" sqlStatement="DB2" identity="true" /> <columnOverride column="DATE_FIELD" property="startDate" /> 忽略字段 <ignoreColumn column="FRED" /> 重新取字段名 <columnOverride column="LONG_VARCHAR_FIELD" jdbcType="VARCHAR" /> </table>--> <!--生成表--> <table tableName="tab_emp" domainObjectName="Employee"></table> <table tableName="tab_dept" domainObjectName="Department"></table> </context> </generatorConfiguration>

     5.ehcache配置//配置文件放在类路径下自动加载

    <?xml version="1.0" encoding="UTF-8"?>
    <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:noNamespaceSchemaLocation="../config/ehcache.xsd">
     <!-- 磁盘保存路径 -->
     <diskStore path="D:ssehcache" />
     
     <defaultCache 
       maxElementsInMemory="10000" 
       maxElementsOnDisk="10000000"
       eternal="false" 
       overflowToDisk="true" 
       timeToIdleSeconds="120"
       timeToLiveSeconds="120" 
       diskExpiryThreadIntervalSeconds="120"
       memoryStoreEvictionPolicy="LRU">
     </defaultCache>
    </ehcache>
     
    <!-- 
    属性说明:
    l diskStore:指定数据在磁盘中的存储位置。
    l defaultCache:当借助CacheManager.add("demoCache")创建Cache时,EhCache便会采用<defalutCache/>指定的的管理策略
     
    以下属性是必须的:
    l maxElementsInMemory - 在内存中缓存的element的最大数目 
    l maxElementsOnDisk - 在磁盘上缓存的element的最大数目,若是0表示无穷大
    l eternal - 设定缓存的elements是否永远不过期。如果为true,则缓存的数据始终有效,如果为false那么还要根据timeToIdleSeconds,timeToLiveSeconds判断
    l overflowToDisk - 设定当内存缓存溢出的时候是否将过期的element缓存到磁盘上
     
    以下属性是可选的:
    l timeToIdleSeconds - 当缓存在EhCache中的数据前后两次访问的时间超过timeToIdleSeconds的属性取值时,这些数据便会删除,默认值是0,也就是可闲置时间无穷大
    l timeToLiveSeconds - 缓存element的有效生命期,默认是0.,也就是element存活时间无穷大
     diskSpoolBufferSizeMB 这个参数设置DiskStore(磁盘缓存)的缓存区大小.默认是30MB.每个Cache都应该有自己的一个缓冲区.
    l diskPersistent - 在VM重启的时候是否启用磁盘保存EhCache中的数据,默认是false。
    l diskExpiryThreadIntervalSeconds - 磁盘缓存的清理线程运行间隔,默认是120秒。每个120s,相应的线程会进行一次EhCache中数据的清理工作
    l memoryStoreEvictionPolicy - 当内存缓存达到最大,有新的element加入的时候, 移除缓存中element的策略。默认是LRU(最近最少使用),可选的有LFU(最不常使用)和FIFO(先进先出)
     -->
    

     6.测试文件

    import cn.crud.bean.Employee;
    import cn.crud.bean.EmployeeExample;
    import cn.crud.dao.EmployeeMapper;
    import com.mchange.v2.c3p0.ComboPooledDataSource;
    import org.apache.ibatis.session.SqlSession;
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.mybatis.generator.api.MyBatisGenerator;
    import org.mybatis.generator.config.Configuration;
    import org.mybatis.generator.config.xml.ConfigurationParser;
    import org.mybatis.generator.internal.DefaultShellCallback;
    import org.mybatis.spring.SqlSessionFactoryBean;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    import org.springframework.test.context.ContextConfiguration;
    import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
    
    import java.io.File;
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSetMetaData;
    import java.sql.SQLException;
    import java.util.ArrayList;
    import java.util.List;
    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration(locations = {"classpath:springcontext.xml"})
    public class SSMTest {
        @Autowired
        EmployeeMapper employeeMapper;
        @Test
        public void JdbcTest() throws Exception {
            String str = "/springcontext.xml";
            ClassPathXmlApplicationContext cpxac = new ClassPathXmlApplicationContext(str);
            Object comboPooledDataSource = cpxac.getBean(ComboPooledDataSource.class);
            Connection connection = ((ComboPooledDataSource) comboPooledDataSource).getConnection();
            System.out.println(connection);
            connection.close();
        }
    
        @Test
        public void TestMBG() throws Exception {
            String str = "MavenWebTest\src\main\resources\mbg.xml";
            List<String> warnings = new ArrayList<String>();
            boolean overwrite = true;
            File configFile = new File(str);
            ConfigurationParser cp = new ConfigurationParser(warnings);
            Configuration config = cp.parseConfiguration(configFile);
            DefaultShellCallback callback = new DefaultShellCallback(overwrite);
            MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
            myBatisGenerator.generate(null);
        }
    
        @Test
        public void TestMBGMybatis() throws Exception {
            //添加条件
            EmployeeExample employeeExample = new EmployeeExample();
            EmployeeExample.Criteria criteria = employeeExample.createCriteria();
            criteria.andEmpIdEqualTo(1);
            List<Employee> employees = employeeMapper.selectByExample(employeeExample);
            for (Employee employee : employees) {
                System.out.println(employee);
            }
        }
    }
    
  • 相关阅读:
    【网络安全设备系列】2、IDS(入侵检测系统)
    【网络安全设备系列】4、漏洞扫描设备
    【网络安全设备系列】3、IPS(入侵防御系统)
    【网络安全设备系列】1、防火墙
    [操作系统作业]os
    [web知识]网页当中使用base64表示png图片
    [struts]异常Caught Exception while registering Interceptor class org.crazyit.auction.action.interceptor.AuthorityInterceptor interceptor
    [struts]使用struts验证框架验证表单输入如何配置Action
    [操作系统作业]os实验三:进程的管道通信
    [spring]异常 Illegal UTF8 string in constant pool in class file com/mchange/lang/PotentiallySecondaryException
  • 原文地址:https://www.cnblogs.com/gg128/p/9745871.html
Copyright © 2020-2023  润新知