java main方法里调用mapper

在main方法中调用mybatis的mapper,一次性执行导入数据功能package com.runxsoft.test;import com.runxsoft.iutils.common.utils.UserUtils;
import com.runxsoft.superwe.base.SqlVo;
import com.runxsoft.superwe.base.mapper.ProtogenesisMapper;
import com.runxsoft.superwe.valueCard.Constants;
import com.runxsoft.superwe.valueCard.mapper.CardInfoMapper;
import com.runxsoft.superwe.valueCard.mapper.CardTypeMapper;
import com.runxsoft.superwe.valueCard.mapper.CustomerInfoMapper;
import com.runxsoft.superwe.valueCard.model.Bonus;
import com.runxsoft.superwe.valueCard.model.CardInfo;
import com.runxsoft.superwe.valueCard.model.CardType;
import com.runxsoft.superwe.valueCard.model.CustomerInfo;
import com.runxsoft.superwe.valueCard.model.CustomerInfoExample;
import com.runxsoft.superwe.valueCard.service.CustomerInfoService;
import java.sql.Timestamp;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class ImprotMain {public static void main(String[] args) {ApplicationContext context=new ClassPathXmlApplicationContext("spring-config-imp.xml");BeanFactory factory = (BeanFactory) context;CustomerInfoMapper customerInfoMapper=factory.getBean(CustomerInfoMapper.class);ProtogenesisMapper protogenesisMapper = factory.getBean(ProtogenesisMapper.class);CardTypeMapper cardTypeMapper = factory.getBean(CardTypeMapper.class);CardInfoMapper cardInfoMapper = factory.getBean(CardInfoMapper.class);try {//下面就可以使用mapper接口了List<Map<String,Object>> results = protogenesisMapper.selectBySql(new SqlVo("select usAccounts,usNumber,usName,departname,usMoney, " +"ifnull(ROUND((select sum(crMoney) from old_chargerecord cr where cr.crAccounts = ubi.usAccounts),2),0) as consumedMoney, " +"ROUND((usMoney + ifnull((select sum(crMoney) from old_chargerecord cr where cr.crAccounts = ubi.usAccounts),0)),0) as totalMoney," +"usCardNo, usRegisterDate ,ushandtel,usIdentityCardNo,usSex " +"from old_userbasicinfo ubi " +"left join old_T_S_Department on DepartID = usDepartmentNo  " +"where ifnull(usNumber,'')<>'' " +"and ifnull(usCardNo,'0')<>'0' " +"and usMoney > 0  " +"order by ubi.usName"));String userName = "";CardInfo cardInfo = null;Long customerId = 0L;System.out.println(results.size());} catch (Exception e) {e.printStackTrace();}}}

 

配置文件代码:

<?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:aop="http://www.springframework.org/schema/aop"xmlns:tx="http://www.springframework.org/schema/tx"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"><context:property-placeholder location="classpath:config.properties"/><!-- 扫描注解Bean 采用自定义命名策略工具类 --><context:component-scan base-package="com.runxsoft" name-generator="com.runxsoft.iutils.common.spring.JAnnotationBeanNameGenerator"><context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/></context:component-scan><!-- 开启AOP监听 只对当前配置文件有效 --><aop:aspectj-autoproxy expose-proxy="true"/><!-- 第一个数据源 --><bean id="dataSource_1" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"><!-- 数据源驱动类可不写,Druid默认会自动根据URL识别DriverClass --><property name="driverClassName" value="${jdbc.driver}" /><!-- 基本属性 url、user、password --><property name="url" value="${jdbc.url}"/><property name="username" value="${jdbc.username}"/><property name="password" value="${jdbc.password}"/><!-- 配置初始化大小、最小、最大 --><property name="initialSize" value="${druid.initialSize}"/><property name="minIdle" value="${druid.minIdle}"/><property name="maxActive" value="${druid.maxActive}"/><!-- 配置获取连接等待超时的时间 --><property name="maxWait" value="${druid.maxWait}"/><!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 --><property name="timeBetweenEvictionRunsMillis" value="${druid.timeBetweenEvictionRunsMillis}" /><!-- 配置一个连接在池中最小生存的时间,单位是毫秒 --><property name="minEvictableIdleTimeMillis" value="${druid.minEvictableIdleTimeMillis}" /><property name="validationQuery" value="${druid.validationQuery}" /><property name="validationQueryTimeout" value="${druid.validationQueryTimeout}" /><property name="testWhileIdle" value="${druid.testWhileIdle}" /><property name="testOnBorrow" value="${druid.testOnBorrow}" /><property name="testOnReturn" value="${druid.testOnReturn}" /><property name="removeAbandoned" value="${druid.removeAbandoned}" /><property name="removeAbandonedTimeout" value="${druid.removeAbandonedTimeout}" /><property name="logAbandoned" value="${druid.logAbandoned}" /><!-- 打开PSCache,并且指定每个连接上PSCache的大小 oracle=true mysql=false --><property name="poolPreparedStatements" value="${druid.poolPreparedStatements}" /><property name="maxPoolPreparedStatementPerConnectionSize" value="${druid.maxPoolPreparedStatementPerConnectionSize}" /><!-- 配置监控统计拦截的filters --><property name="filters" value="${druid.filters}" /></bean><!-- 第二个数据源 --><!--<bean id="dataSource_2" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">--><!--&lt;!&ndash; 数据源驱动类可不写,Druid默认会自动根据URL识别DriverClass &ndash;&gt;--><!--<property name="driverClassName" value="${jdbc2.driver}" />--><!--&lt;!&ndash; 基本属性 url、user、password &ndash;&gt;--><!--<property name="url" value="${jdbc2.url}"/>--><!--<property name="username" value="${jdbc2.username}"/>--><!--<property name="password" value="${jdbc2.password}"/>--><!--&lt;!&ndash; 配置初始化大小、最小、最大 &ndash;&gt;--><!--<property name="initialSize" value="${druid.initialSize}"/>--><!--<property name="minIdle" value="${druid.minIdle}"/>--><!--<property name="maxActive" value="${druid.maxActive}"/>--><!--&lt;!&ndash; 配置获取连接等待超时的时间 &ndash;&gt;--><!--<property name="maxWait" value="${druid.maxWait}"/>--><!--&lt;!&ndash; 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 &ndash;&gt;--><!--<property name="timeBetweenEvictionRunsMillis" value="${druid.timeBetweenEvictionRunsMillis}" />--><!--&lt;!&ndash; 配置一个连接在池中最小生存的时间,单位是毫秒 &ndash;&gt;--><!--<property name="minEvictableIdleTimeMillis" value="${druid.minEvictableIdleTimeMillis}" />--><!--<property name="validationQuery" value="${druid.validationQuery}" />--><!--<property name="validationQueryTimeout" value="${druid.validationQueryTimeout}" />--><!--<property name="testWhileIdle" value="${druid.testWhileIdle}" />--><!--<property name="testOnBorrow" value="${druid.testOnBorrow}" />--><!--<property name="testOnReturn" value="${druid.testOnReturn}" />--><!--<property name="removeAbandoned" value="${druid.removeAbandoned}" />--><!--<property name="removeAbandonedTimeout" value="${druid.removeAbandonedTimeout}" />--><!--<property name="logAbandoned" value="${druid.logAbandoned}" />--><!--&lt;!&ndash; 打开PSCache,并且指定每个连接上PSCache的大小 oracle=true mysql=false &ndash;&gt;--><!--<property name="poolPreparedStatements" value="${druid.poolPreparedStatements}" />--><!--<property name="maxPoolPreparedStatementPerConnectionSize" value="${druid.maxPoolPreparedStatementPerConnectionSize}" />--><!--&lt;!&ndash; 配置监控统计拦截的filters &ndash;&gt;--><!--<property name="filters" value="${druid.filters}" />--><!--</bean>--><!-- 动态配置数据源 --><bean id ="dataSource" class= "com.runxsoft.iutils.common.datasource.DynamicDataSource" ><property name ="targetDataSources"><map key-type ="java.lang.String"><entry value-ref ="dataSource_1" key= "dataSource_1"></entry ><!--<entry value-ref ="dataSource_2" key= "dataSource_2"></entry >--></map ></property ><property name ="defaultTargetDataSource" ref= "dataSource_1"></property ></bean ><!-- MyBatis begin --><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource"/><property name="mapperLocations" value="classpath:/mappings/**/*.xml"/><property name="configLocation" value="classpath:/mybatis-config.xml"></property></bean><!-- 扫描basePackage下所有以@MyBatisDao注解的接口 --><bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" /><property name="basePackage" value="com.runxsoft"/><property name="annotationClass" value="com.runxsoft.iutils.common.annotation.MyBatisDao"/></bean><!-- 定义事务 --><bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource" /></bean><!-- 配置 Annotation 驱动,扫描@Transactional注解的类定义事务  --><tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/><!-- MyBatis end --><!-- 配置事务的传播特性 --><tx:advice id ="txAdvice" transaction-manager="transactionManager"><tx:attributes ><tx:method name ="find*" read-only="true" /><tx:method name ="get*" read-only="true" /><tx:method name ="query*" read-only="true" /><tx:method name ="save*" propagation="REQUIRED" /><tx:method name ="add*" propagation="REQUIRED" /><tx:method name ="update*" propagation="REQUIRED" /><tx:method name ="delete*" propagation="REQUIRED" /></tx:attributes ></tx:advice ><!-- 配置AOP --><aop:config ><!-- 切点 多包配置 execution(* cn.iutils.*.service..*.*(..)) or execution(* com.company.*.service..*.*(..)) --><aop:pointcut expression ="execution(* com.runxsoft.*.*.service..*.*(..))" id= "pointcut" /><aop:advisor advice-ref ="txAdvice" pointcut-ref="pointcut" /></aop:config ><!-- Spring工具 --><bean class="com.runxsoft.iutils.common.spring.SpringUtils"></bean><!-- 调度工厂 --><bean id="schedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"></bean><!-- 导入shiro配置 --><!--<import resource="classpath:spring-config-shiro.xml"/>--></beans>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/386578.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

已成功拿下字节、腾讯、脉脉offer,满满干货指导

开头 笼统来说&#xff0c;中年程序员容易被淘汰的原因其实不外乎三点。 1、输出能力已到顶点。这个人奋斗十来年了&#xff0c;依旧碌碌无为&#xff0c;很明显这人的天花板就这样了&#xff0c;说白了&#xff0c;天赋就这样。 2、适应能力越来越差。年纪大&#xff0c;有家…

ServletRequest HttpServletRequest 请求方法 获取请求参数 请求转发 请求包含 请求转发与重定向区别 获取请求头字段...

原文地址:ServletRequest HttpServletRequest 请求方法 获取请求参数 请求转发 请求包含 请求转发与重定向区别 获取请求头字段ServletRequest 基本概念 JavaWeb中的 "Request"对象 实际为 HttpServletRequest 或者 ServletRequest, 两者都为接口服务器接收请求…

c#扫描图片去黑边(扫描仪去黑边)

/// <summary> /// 自动去除图像扫描黑边 /// </summary> /// <param name"fileName"></param> public static void AutoCutBlackEdge(string fileName) { //打开图像 Bit…

已成功拿下字节、腾讯、脉脉offer,算法太TM重要了

一、背景介绍 从实用角度梳理一篇能够帮大家快速扫盲的CMake基础教程&#xff0c;也是对我目前负责项目的一次学习总结。既然选择从项目实用性考虑&#xff0c;下面的讲解内容可能并不一定完整&#xff0c;更多的是符合项目目前使用到的一些特性。 接下来正面回答这个问题&am…

SpringBoot2.0 Actuator 监控参数说明

主要内容更 监控参数说明 Maven坐标 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency><groupId>io.micrometer</groupId>&…

带你一步一步深入Handler源码,醍醐灌顶!

开头 最近有粉丝反应&#xff0c;不想做安卓了&#xff0c;有朋友转到前端了&#xff0c;安卓不行了&#xff0c;问我怎么办&#xff1f; 自从RN&#xff0c;Weex这种跨平台编程语言出来以后&#xff0c;安卓将死的言论总是不绝于耳。随着颇有摧枯拉朽之势Flutter的出现&…

Spring基于状态机squirrel-foundation简单使用

squirrel-foundation的一些使用方法在百度上资料还是比较少&#xff0c;我是根据以下三个大佬写的文章借鉴的&#xff0c;在这里记录一下。 1、squirrel-foundation-demo 2、Squirrel使用&#xff08;中文文档&#xff09; 3、squirrel-foundation状态机的使用细节 我在这里直接…

记得把每一次面试当做经验积累,深夜思考

开头 Android开发&#xff0c;假如开始没有任何的开发经验的话&#xff0c; 千万不要着急&#xff0c;不要想着在短时间内就把一个语言学习好&#xff0c; 因为你之前没有任何的学习经验&#xff0c; 在这个过程中需要有耐心地学习完JAVA的基础知识&#xff0c; 然后才开始踏上…

squirrel-foundation-demo

一个简单的squirrel-foundation-demo 利用状态机模拟一个订单的支付过程。 squirrel-foundation没有任何严重的依赖关系&#xff0c;因此基本上它应该是高度可嵌入的。squirrel-foundation没有整合spring框架&#xff0c;所以首先要用spring集成squirrel-foundation。spring集成…

MongoDB学习目录

MongoDB基础篇 MongoDB 之 $ 关键字 python操作MongoDB 转载于:https://www.cnblogs.com/yanzhi-1996/p/11095016.html

讲的真透彻!还有人不知道什么是AndroidX的吗?已拿offer入职

前言 春招已经接近尾声了&#xff0c;不知道各位小伙伴有没有收获自己心仪的offer呢。笔者疫情被裁后在家LeetCode狂刷了800多题&#xff0c;加之自己以为工作总结的知识、经验&#xff0c;系统化的整理了一下。在五一期间已经收获了字节的offer。废话不多说&#xff0c;下面是…

docker 启动的 jenkins 中调用宿主机docker进行build

前言 期初有这个需求感觉就跟套娃一样&#xff0c;你在docker 中调用docker&#xff0c;笑哭……这个也太逗了。 不过的确遇到了&#xff0c;因为jenkins 容器中没有docker &#xff0c;所以在编译 docker build 的时候 会出现 docker command 不存在。 好吧&#xff0c;解决他…

Codeforces 773D Perishable Roads 最短路 (看题解)

Perishable Roads 智商题&#xff0c; 不会啊。。 贴个官方题解 https://codeforces.com/blog/entry/51883 #include<bits/stdc.h> #define LL long long #define LD long double #define ull unsigned long long #define fi first #define se second #define mk make_p…

Rancher中的服务升级实验

创建一个空的应用myAPP&#xff0c;在myAPP 应用中&#xff0c;创建一个服务nginx-test&#xff0c;包含2个容器副本&#xff0c;使用nginx:1.13.0镜像。假设使用一段时期以后&#xff0c;nginx的版本升级到1.13.1了&#xff0c;如何将该服务的镜像版本升级到新的版本&#xff…

该如何高效实用Kotlin?看这一篇就够了!

前言 说起程序员人们的第一印象就是工资高、加班凶、话少钱多头发少。再加上现在科技互联网公司太吃香&#xff0c;bat、华为小米等公司程序员加班情况被广泛传播&#xff0c;程序员用生命在敲代码的印象刻在了很多人的心里。 与其它行业一样&#xff0c;凡是有高级和普通&…

apply()与call()

JavaScript中的每一个Function对象都有一个apply()方法和一个call()方法&#xff0c;它们的语法分别为&#xff1a; /*apply()方法*/ function.apply(thisObj[, argArray])/*call()方法*/ function.call(thisObj[, arg1[, arg2[, [,...argN]]]]); 它们各自的定义&#xff1a; a…

Java基于redis实现分布式锁(SpringBoot)

前言 分布式锁&#xff0c;其实原理是就是多台机器&#xff0c;去争抢一个资源&#xff0c;谁争抢成功&#xff0c;那么谁就持有了这把锁&#xff0c;然后去执行后续的业务逻辑&#xff0c;执行完毕后&#xff0c;把锁释放掉。 可以通过多种途径实现分布式锁&#xff0c;例如…

请谈下Android消息机制,复习指南

谈起Android框架体系架构&#xff0c;我先提个问&#xff1a;什么是Android框架体系架构 &#xff1f; Android系统构架是安卓系统的体系结构&#xff0c;android的系统架构和其操作系统一样&#xff0c;采用了分层的架构&#xff0c;共分为四层&#xff0c;从高到低分别是And…

SVN Cannot merge into a working copy that has local modifications

我尝试了 主支&#xff0c;分支都提交&#xff0c;但是依然无法合并。 最终&#xff0c;我在服务器上将分支删除&#xff0c;然后主支在拷贝过去。 一&#xff0c;打开服务器资源 二&#xff0c;删除分支 三&#xff0c;拷贝主支到分支 四&#xff0c;刷新分支&#xff0c;就能…

资深Android开发带你入门Framework,再不刷题就晚了!

想要成为一名优秀的Android开发&#xff0c;你需要一份完备的知识体系&#xff0c;在这里&#xff0c;让我们一起成长为自己所想的那样。 本文参考了目前大部分 Android 应用启动优化的方案&#xff0c;将大家的方案做一个汇总&#xff0c;如果你有这方面的需求&#xff0c;只…