SpringMVC,Mybatis,FreeMarker连接mycat示例(一)
来源:互联网 发布:在职软件工程硕士2018 编辑:程序博客网 时间:2024/05/29 10:38
人生最重要的一点是,永远不要迷失自己。
项目结构如图:
首先是各种配置文件,属性文件
mycat.properties内容:
#数据库连接配置#以下是mycat中间件连接jdbc.driverClassName=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:8066/SSMDB?useUnicode=true&characterEncoding=UTF-8jdbc.username=wujdbc.password=hello123#以下是mysql连接#jdbc.url=jdbc:mysql://localhost:3306/MyCAT_DB?useUnicode=true&characterEncoding=UTF-8#jdbc.username=root#jdbc.password=123456#定义初始连接数jdbc.initialPoolSize=10jdbc.maxPoolSize=200jdbc.minPoolSize=5jdbc.maxIdleTime=20jdbc.acquireIncrement=10jdbc.maxStatements=50jdbc.idleConnectionTestPeriod=60jdbc.initialSize=5#定义最大空闲 jdbc.maxIdle=20#定义最小空闲 jdbc.minIdle=5#定义最大连接数 jdbc.maxActive=200jdbc.removeAbandonedTimeout=300#定义最长等待时间 jdbc.maxWait=60000jdbc.maxOpenPreparedStatements=10
log4j.xml内容:
<?xml version='1.0' encoding='UTF-8' ?><!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"><log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender"> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d [%7r] %6p - %30.30c - %m \n"/> </layout> </appender> <appender name="FILE-DEBUG" class="org.apache.log4j.FileAppender"> <param name="Append" value="false"/> <param name="file" value="mycatDemo-debug.log"/> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d [%7r] %6p - %30.30c - %m \n"/> </layout> </appender> <appender name="FILE" class="org.apache.log4j.DailyRollingFileAppender"> <param name="DatePattern" value="'.'yyyy-MM-dd"/> <param name="Append" value="true"/> <param name="file" value="mycatDemo.log"/> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d [%7r] %6p - %30.30c - %m \n"/> </layout> <filter class="org.apache.log4j.varia.LevelRangeFilter"> <param name="LevelMin" value="DEBUG"/> </filter> </appender> <!--<appender name="FILE-ZOOKEEPER" class="org.apache.log4j.DailyRollingFileAppender"> <param name="DatePattern" value="'.'yyyy-MM-dd"/> <param name="file" value="${las-im-scheduler.log.path}/las-report-zookeeper.log"/> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d [%7r] %6p - %30.30c - %m \n"/> </layout> </appender> <category name="org.apache.zookeeper" additivity="false"> <priority value="debug"/> <appender-ref ref="FILE-ZOOKEEPER"/> </category> --> <category name="org.cometd" additivity="true"> <priority value="ERROR"/> <appender-ref ref="FILE"/> </category> <category name="org.springframework.orm.ibatis3" additivity="true"> <priority value="INFO"/> <appender-ref ref="CONSOLE"/> </category> <category name="org.apache.ibatis" additivity="true"> <priority value="ERROR"/> <appender-ref ref="CONSOLE"/> </category> <category name="java.sql" additivity="true"> <priority value="ERROR"/> <appender-ref ref="CONSOLE"/> </category> <category name="com.mycat" additivity="true"> <priority value="debug"/> <appender-ref ref="FILE"/> </category> <root> <priority value="ERROR"/> <appender-ref ref="CONSOLE"/> <appender-ref ref="FILE-DEBUG"/> </root></log4j:configuration>
sqlmap文件下的TestMapper.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="com.mycat.test.model.Test"> <resultMap type="com.mycat.test.model.Test" id="testResultMap"> <result property="id" column="id_"/> <result property="name" column="name_"/> <result property="userId" column="user_id"/> </resultMap> <select id="selectAll" resultMap="testResultMap"> select * from sam_test </select> <select id="selectSome" parameterType="java.util.Map" resultMap="testResultMap"> select * from sam_test limit #{offset},#{limit} </select> <select id="getObject" resultMap="testResultMap" parameterType="java.lang.Object"> select * from sam_test where id_ = #{id} </select> <insert id="insert" keyProperty="id_" parameterType="com.mycat.test.model.Test"> INSERT INTO sam_test( name_, user_id ) VALUES( #{name,jdbcType=VARCHAR}, #{userId,jdbcType=BIGINT} ) <selectKey resultType="java.lang.Integer" order="AFTER" keyProperty="id"> select last_insert_id() as id </selectKey> </insert> <update id="update" parameterType="com.mycat.test.model.Test"> update sam_test <set> <if test="name != null and name != ''"> name_ = #{name}, </if> <if test="userId != null"> user_id = #{userId}, </if> </set> where id_=#{id} </update> <!-- #{}中的参数名与方法中的参数的复杂数据类型的属性名一致 --> <delete id="delete" parameterType="java.lang.Integer"> delete from sam_test where id_ = #{id} </delete> <select id="findOneByMap" resultMap="testResultMap"> select * from sam_test where 1=1 AND <foreach item="param" index="key" collection="list" open="" separator="AND" close=""> ${param.name} = #{param.value} </foreach> limit 0, 1 </select> <select id="findOneByObject" parameterType="com.mycat.test.model.Test" resultMap="testResultMap"> select * from sam_test <where> <if test="name != null"> and name_=#{name} </if> <if test="userId != null"> and user_id=#{userId} </if> </where> limit 0, 1 </select> <select id="findByMap" resultMap="testResultMap"> select * from sam_test where 1=1 AND <foreach item="param" index="key" collection="list" open="" separator="AND" close=""> ${param.name} = #{param.value} </foreach> </select> <select id="findByObject" parameterType="com.mycat.test.model.Test" resultMap="testResultMap"> select * from sam_test <where> <if test="name != null"> and name_=#{name} </if> <if test="userId != null"> and user_id=#{userId} </if> </where> </select> <select id="findByIn" resultMap="testResultMap"> select * from sam_test where 1=1 AND <foreach item="param" index="key" collection="list" open="" separator="AND" close=""> ${param.name} IN (#{param.value}) </foreach> </select> <select id="findByLike" resultMap="testResultMap"> select * from sam_test where 1=1 AND <foreach item="param" index="key" collection="list" open="" separator="AND" close=""> ${param.name} LIKE #{param.value} </foreach> </select> <select id="getTotalCount" resultType="int"> select count(1) from sam_test </select> <select id="getCount" parameterType="java.util.Map" resultType="int"> select count(1) from sam_test where 1=1 <if test="whereClause != null"> ${whereClause} </if> </select> <select id="query" parameterType="java.util.Map" resultMap="testResultMap"> select ${fieldsClause} from sam_test where 1=1 <if test="whereClause != null"> ${whereClause} </if> <if test="orderClause != null"> ${orderClause} </if> limit ${limit} offset ${offset} </select></mapper>
spring-config-db.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:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd"> <!-- 配置Mybatis会话工厂 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <!-- 注入DataSource --> <!-- 数据源 --> <property name="dataSource" ref="druidDataSource" /> <!-- 需要加载的mapper.xml,该bean被创建后,会自动加载这些文件。 --> <property name="mapperLocations"> <list> <!-- 自动匹配Mapper映射文件 --> <value>classpath*:sqlmap/*Mapper.xml</value> </list> </property> </bean> <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate"> <constructor-arg ref="sqlSessionFactory" /> </bean> <!-- Druid集连接池,首先spring配置DataSource --> <bean id="druidDataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"> <property name="driverClassName" value="${jdbc.driverClassName}" /> <!-- 基本属性 url、user、password --> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> <!--initialSize: 初始化连接--> <property name="initialSize" value="${jdbc.initialSize}"/> <!--minIdle: 最小空闲连接--> <property name="minIdle" value="${jdbc.minIdle}"/> <!--maxActive: 最大连接数量--> <property name="maxActive" value="${jdbc.maxActive}"/> <!--removeAbandoned: 对泄漏的连接,是否自动回收超时连接--> <property name="removeAbandoned" value="true"/> <!--removeAbandonedTimeout: 超时时间(以秒数为单位)--> <property name="removeAbandonedTimeout" value="${jdbc.removeAbandonedTimeout}"/> <!--maxWait: 超时等待时间以毫秒为单位 6000毫秒/1000等于60秒--> <property name="maxWait" value="${jdbc.maxWait}"/> <property name="defaultAutoCommit"> <value>false</value> </property> <property name="validationQuery" value="select 1"/> <!-- 打开PSCache,并且指定每个连接上PSCache的大小 --> <!-- 如果用Oracle,则把poolPreparedStatements配置为true,mysql可以配置为false。分库分表较多的数据库,建议配置为false --> <property name="poolPreparedStatements" value="true" /> <property name="maxOpenPreparedStatements" value="${jdbc.maxOpenPreparedStatements}" /> <!-- 配置监控统计拦截的filters,去掉后监控界面sql无法统计 --> <!--<property name="filters" value="stat"/>--> <!-- 慢日志查询 缺省为3秒 修改为10秒 10000 --> <!-- <property name="connectionProperties" value="druid.stat.slowSqlMillis=5000" /> --> </bean> <!-- druid 监控 spring --> <!-- <bean id="druid-stat-interceptor" class="com.alibaba.druid.support.spring.stat.DruidStatInterceptor"/> --> <!-- 按类型拦截配置 --> <!-- <bean id="druid-type-proxyCreator" class="com.alibaba.druid.support.spring.stat.BeanTypeAutoProxyCreator"> --> <!-- 所有ABCInterface的派生类被拦截监控 --> <!-- <property name="targetBeanType" value="xxxx.ABCInterface" /> <property name="interceptorNames"> <list> <value>druid-stat-interceptor</value> </list> </property> </bean> --> <!-- 按照BeanId来拦截配置 --> <!-- <bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator"> <property name="proxyTargetClass" value="true" /> <property name="beanNames"> <list> --> <!-- 这里配置需要拦截的bean id列表 --> <!-- <value>xxx-dao</value> <value>xxx-service</value> </list> </property> <property name="interceptorNames"> <list> <value>druid-stat-interceptor</value> </list> </property> </bean> --> <!-- 方法名正则匹配拦截配置 --> <!-- <bean id="druid-stat-pointcut" class="org.springframework.aop.support.JdkRegexpMethodPointcut" scope="prototype"> --> <!-- <property name="patterns"> --> <!-- <list> --> <!-- <value>com.xinnet.*.service.*</value> --> <!-- <value>com.mycompany.service.*</value> --> <!-- <value>com.mycompany.dao.*</value> --> <!-- </list> --> <!-- </property> --> <!-- </bean> --> <!-- <aop:config> --> <!-- <aop:advisor advice-ref="druid-stat-interceptor" pointcut-ref="druid-stat-pointcut" /> --> <!-- </aop:config> --> <!-- 配置事物管理器 --> <!-- 事务管理器 对mybatis操作数据库事务控制,spring使用jdbc的事务控制类 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <!-- 数据源 dataSource在上面配置了 --> <property name="dataSource" ref="druidDataSource" /> </bean> <!-- 配置声明式事务 --> <tx:annotation-driven transaction-manager="transactionManager"/></beans>
spring-config-mvc.xml配置:
<?xml version="1.0" encoding="UTF-8"?><!--suppress ALL --><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:util="http://www.springframework.org/schema/util" xmlns:context="http://www.springframework.org/schema/context" 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-3.1.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.1.xsd"> <!-- spring 自动扫描组件 --> <!-- 自动扫描 controller 包下的所有类 --> <!-- mvc controller --> <context:component-scan base-package="com.mycat"> <context:include-filter type="regex" expression=".*.controller.*"/> <context:include-filter type="regex" expression=".*.service.*"/> <context:include-filter type="regex" expression=".*.dao.*"/> </context:component-scan> <!-- 开启注解的功能 --> <!-- 启动支持 mvc 的注解,比如 @Controller, @RequestMapping 等--> <mvc:annotation-driven/> <!--<bean id="conversionService"--> <!--class="org.springframework.format.support.FormattingConversionServiceFactoryBean">--> <!--<property name="formatterRegistrars">--> <!--<bean class="com.jd.common.springmvc.converter.DefaultFormatterRegistrar"/>--> <!--</property>--> <!--</bean>--> <!-- 解决静态资源被拦截的问题 --> <mvc:default-servlet-handler/> <!-- static resources --> <!--<mvc:resources location="/static/" mapping="/static/**" cache-period="864000"/>--> <!--<mvc:resources location="/js/" mapping="/js/**" cache-period="864000"/>--> <!-- 配置视图解析器,使得在JSP中能够使用完整的JSTL功能 --> <!-- 设置视图解析工具 --> <!-- template view --> <bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer"> <property name="templateLoaderPath" value="/WEB-INF/views/"/> <property name="freemarkerSettings"> <props> <prop key="template_update_delay">0</prop> <prop key="default_encoding">UTF-8</prop> <prop key="number_format">0.##########</prop> <prop key="datetime_format">yyyy-MM-dd HH:mm:ss</prop> <prop key="classic_compatible">true</prop> <prop key="template_exception_handler">ignore</prop> </props> </property> </bean> <bean id="freeMarkerViewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver"> <!--<property name="layoutUrl" value="layout/default.ftl"/>--> <property name="cache" value="false"/> <property name="suffix" value=".ftl"/> <property name="requestContextAttribute" value="request"/> <property name="exposeSpringMacroHelpers" value="true"/> <property name="exposeRequestAttributes" value="true"/> <property name="exposeSessionAttributes" value="true"/> <property name="contentType" value="text/html;charset=UTF-8"/> </bean> <bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver"> <property name="defaultContentType" value="text/html"/> <!-- not by accept header --> <property name="ignoreAcceptHeader" value="true"/> <!-- by extension --> <property name="mediaTypes"> <map> <entry key="html" value="text/html"/> <entry key="xml" value="application/xml"/> <entry key="json" value="application/json"/> </map> </property> <property name="viewResolvers"> <list> <ref bean="freeMarkerViewResolver"/> </list> </property> <property name="defaultViews"> <list> <!-- for application/json --> <bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView"/> </list> </property> </bean> <!-- locale related --> <!--<bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver">--> <!--<property name="cookieName" value="_clientlocale"/>--> <!--<property name="defaultLocale" value="zh_CN"/>--> <!--<property name="cookieMaxAge" value="2147483647"/>--> <!--</bean>--> <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"/> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <property name="messageConverters"> <util:list id="beanList"> <ref bean="mappingJacksonHttpMessageConverter"/> </util:list> </property> </bean> <bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>text/html;charset=UTF-8</value> </list> </property> </bean></beans>
spring-config.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:context="http://www.springframework.org/schema/context" 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.xsd"> <!-- spring容器中最多只能定义一个context:property-placeholder spring中 context:property-placeholder 导入多个独立的 .properties配置文件 Spring容器仅允许最多定义一个PropertyPlaceholderConfigurer(或<context:property-placeholder/>),其余的会被Spring忽略掉 通配符解决 --> <!-- 引入项目配置文件 --> <!-- 加载db.properties文件中的内容,db.properties文件中的key要有一定的特殊规则 --> <context:property-placeholder location="classpath*:mycat.properties" /> <import resource="spring-config-mvc.xml" /> <!--文件中主要负责配置:加载db.properties、配置数据源、配置SqlSessionFactoryBean、Mapper扫描器--> <import resource="spring-config-db.xml" /></beans>
暂时先到这里
0 0
- SpringMVC,Mybatis,FreeMarker连接mycat示例(一)
- SpringMVC,Mybatis,FreeMarker连接mycat示例(二)
- SpringMVC,Mybatis,FreeMarker连接mycat示例(三)
- SpringMVC,Mybatis,FreeMarker连接mycat示例(四)
- SpringMVC,Mybatis,FreeMarker连接mycat示例(五)
- SpringMVC,Mybatis,FreeMarker连接mycat示例(六)
- SpringMVC,Mybatis,FreeMarker连接mycat示例(七)【完】
- 【ssm框架】 spring+springMVC+mySQL+myBatis+freemarker+Maven小示例
- mycat 分库配置(mybatis连接mycat)
- springMVC+MyBatis+freemarker整合
- SpringMvc + Mybatis + Maven + Freemarker
- Maven+SpringMVC+Freemarker入门示例
- MAVEN_SPRING+SPRINGMVC+MYBATIS+FREEMARKER 整合
- SpringMVC+Maven+FreeMarker+MyBatis 使用
- ssm、springMvc,mybatis引入freemarker
- SpringMVC+myBatis简单示例
- 一、springMVC+freemarker框架搭建
- Maven搭建SpringMVC+Mybatis+freemarker项目详解
- [Dive into Python:]第一个 Python 程序程
- 分享:thinkphp RBAC 详解
- JAVA Jtable 添加右键菜单 参考代码
- 图形渲染CPU重要还是显卡重要?3D渲染、三维建模速度和显卡有关吗?三维制图电脑配置!3D设计用什么显卡
- 在android中采集音频的api是android.media.AudioRecord类
- SpringMVC,Mybatis,FreeMarker连接mycat示例(一)
- itoa、atoi
- 有符号数除以非-2的幂(MagicNumber为负)
- C++ getline()和get()
- 电路设计_红外遥控设计经验
- 利用map容器中统计文件中相同字符串的个数
- 3D图形渲染管线
- 深入理解ButterKnife源码并掌握原理(一)
- 360校招编程题:内存管理