当前位置: 首页 > news >正文

做网站 一级 二级购物网站 后台

做网站 一级 二级,购物网站 后台,有什么推广软件,邢台做网站哪家便宜原始方式整合SSM 不使用spring-mybatis包 项目内容 整合ssm完成对account表新增和查询的操作 项目大体结构 创建mavenWeb项目 pom文件中引入依赖 spring核心、aspectj(aop)、spring-jdbc(jdbcTemplate)、spring-tx(事务)、 数据源#xff1a;mysql、c3p0、mybatis my…原始方式整合SSM 不使用spring-mybatis包 项目内容 整合ssm完成对account表新增和查询的操作  项目大体结构 创建mavenWeb项目  pom文件中引入依赖 spring核心、aspectj(aop)、spring-jdbc(jdbcTemplate)、spring-tx(事务)、 数据源mysql、c3p0、mybatis       mybatis-spring(spring整合mybatis) junit、spring-tst、 servlet、jsp、jstl、 lombok、 spring-webmvc(springMvc依赖) dependenciesdependencygroupIdorg.springframework/groupIdartifactIdspring-context/artifactId!--spring核心包含aop--version5.0.5.RELEASE/version/dependencydependencygroupIdorg.aspectj/groupIdartifactIdaspectjweaver/artifactId!--aop相关--version1.9.5/version/dependencydependencygroupIdorg.springframework/groupIdartifactIdspring-jdbc/artifactId!--jdbcTemplate相关--version5.0.5.RELEASE/version/dependencydependencygroupIdorg.springframework/groupIdartifactIdspring-tx/artifactId!--事务相关--version5.0.5.RELEASE/version/dependencydependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion5.1.8/version/dependencydependencygroupIdcom.mchange/groupIdartifactIdc3p0/artifactIdversion0.9.5.5/version!--要用这个版本的之前用的低版本和spring-mybatis整合时查询方法报错--/dependencydependencygroupIdorg.mybatis/groupIdartifactIdmybatis/artifactIdversion3.5.13/version/dependencydependencygroupIdorg.mybatis/groupIdartifactIdmybatis-spring/artifactIdversion2.0.5/version/dependencydependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion4.12/versionscopetest/scope/dependencydependencygroupIdorg.springframework/groupIdartifactIdspring-test/artifactId!--spring集成junit--version5.0.5.RELEASE/version/dependencydependencygroupIdjavax.servlet/groupIdartifactIdjavax.servlet-api/artifactIdversion3.0.1/versionscopeprovided/scope/dependencydependencygroupIdjavax.servlet.jsp/groupIdartifactIdjsp-api/artifactIdversion2.2/versionscopeprovided/scope/dependencydependencygroupIdjstl/groupIdartifactIdjstl/artifactIdversion1.2/version/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdversion1.18.12/version/dependencydependencygroupIdorg.springframework/groupIdartifactIdspring-webmvc/artifactId!--springMvc--version5.0.5.RELEASE/version/dependency/dependencies resource下log4j.properties文件 ### direct log messages to stdout ### log4j.appender.stdoutorg.apache.log4j.ConsoleAppender log4j.appender.stdout.TargetSystem.out log4j.appender.stdout.layoutorg.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern%d{ABSOLUTE} %5p %c{1}:%L - %m%n### direct messages to file mylog.log ### log4j.appender.fileorg.apache.log4j.FileAppender log4j.appender.file.Filec:/mylog.log log4j.appender.file.layoutorg.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern%d{ABSOLUTE} %5p %c{1}:%L - %m%n### set log levels - for more verbose logging change info to debug ###log4j.rootLoggerinfo, stdout resource下jdbc.properties文件 jdbc.drivercom.mysql.jdbc.Driver jdbc.urljdbc:mysql://localhost:3306/jdbc jdbc.usernameroot jdbc.passwordroot123 spring核心配置 resource下applicationContext.xml beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:aophttp://www.springframework.org/schema/aopxmlns:contexthttp://www.springframework.org/schema/contextxsi:schemaLocationhttp://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/context http://www.springframework.org/schema/context/spring-context.xsd context:component-scan base-packagecom.kdy/!--开启组件扫描-- /beans 数据库数据表 com.kdy.domain Data NoArgsConstructor AllArgsConstructor public class Account {private int id;private String name;private double money; } com.kdy.mapper中AccountMapper接口 public interface AccountMapper {//保存账户数据Insert(insert into account values(#{id},#{name},#{money}))public void save(Account account);//查询账户数据Select(select * from account)public ListAccount findAll();} resource下com.kdy.mapper中AccountMapper.xml ?xml version1.0 encodingUTF-8 ? !DOCTYPE mapperPUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttps://mybatis.org/dtd/mybatis-3-mapper.dtd mapper namespacecom.kdy.mapper.AccountMapper!--即使使用mybatis的注解开发也需要加上命名空间的mapper标签-- /mapper resource下mybatis-config.xml ?xml version1.0 encodingUTF-8 ? !DOCTYPE configurationPUBLIC -//mybatis.org//DTD Config 3.0//ENhttps://mybatis.org/dtd/mybatis-3-config.dtd configuration!--通过properties标签机制外部的properties文件--properties resourcejdbc.properties/properties!--起别名为权限定名的类起一个比较短的别名--typeAliasespackage namecom.kdy.domain/!--扫描的为它的类名且不区分大小写--!-- typeAlias typecom.kdy.domain.User aliasuser/typeAlias--!--mybatis已经将String-string、Long-long、Integer-int、Double-double、Boolean-boolean转换设置好了别名--/typeAliases!--数据源环境--environments defaultdevelopmentenvironment iddevelopment!--环境development、test可以配置多个数据库连接的环境信息将来通过default属性切换--transactionManager typeJDBC/!--事务管理器,spring可接管这里直接使用的JDBC的提交和回滚。依赖从数据源得到链接来管理事务作用域--dataSource typePOOLED!--数据源类型type有三种UNPOOLED:这个数据源的实现只是每次被请求时打开和关闭连接。POOLED:这种数据源的实现利用“池” 的概念将JDBC连接对象组织起来。JNDI:这个数据源的实现是为了能在如EJB或应用服务器这类容器中使用容器可以集中或在外部配置数据源,然后放置一个JNDI上下文的引用。--property namedriver value${jdbc.driver}/property nameurl value${jdbc.url}/!--如果mysqlurl中有符号需要进行转义为amp;如useSSLfalseamp;useServerPrepStmtstrue127.0.0.1:3306本机默认端口可省略不写直接为///--property nameusername value${jdbc.username}/property namepassword value${jdbc.password}//dataSource/environment/environments!--mappers加载映射加载方式如下使用相对于类路径的资源引用,例如:mapper resourceorg/mybatis/builder/AuthorMapper.xml/使用完全限定资源定位符(URL) 例如: mapper url file:///var/mappers/ AuthorMapper.xml/使用映射器接口实现类的完全限定类名例如: mapper class org.mybatis.builder.AuthorMapper/将包内的映射器接口实现全部注册为映射器例如: package nameorg.mybatis.builder/--mapperspackage namecom.kdy.mapper/!-- mapper resourceUserMapper.xml/--/mappers /configuration web.xml ?xml version1.0 encodingUTF-8? web-app xmlnshttp://xmlns.jcp.org/xml/ns/javaeexmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsdversion4.0!--全局初始化参数--context-param!--servletContext.getInitParameter(contextConfigLocation)、jsp中通过el表达式--param-namecontextConfigLocation/param-nameparam-valueclasspath:applicationContext.xml/param-value/context-param!--配置Spring的监听器spring集成web里的1.web.xml中配置全局初始化参数contextConfigLocation和org.springframework.web.context.ContextLoaderListener的listener当web项目启动加载初始化参数contextConfigLocation并根据classpath:applicationContext.xml进行new出ApplicationContext对象app将app对象通过setAttribute(app,app)放入当前web应用最大的域servletContext域中域中并需要时getAttribute取出该app对象。2.还有一种方式为定义监听类和WebListener注解方式详见spring的博客中集成web部分。--listenerlistener-classorg.springframework.web.context.ContextLoaderListener/listener-class/listener!--springMvc字符编码过滤器解决post请求中文乱码问题--filterfilter-nameCharacterEncodingFilter/filter-namefilter-classorg.springframework.web.filter.CharacterEncodingFilter/filter-classinit-paramparam-nameencoding/param-nameparam-valueUTF-8/param-value/init-param/filterfilter-mappingfilter-nameCharacterEncodingFilter/filter-nameurl-pattern/*/url-pattern/filter-mapping!--配置SpringMVC的前端控制器配置一个servlet类选择第三方org.springframework的DispatcherServlet配置该类且路径为拦截所有来作为springMvc的前端控制器servlet --servletservlet-nameDispatcherServlet/servlet-nameservlet-classorg.springframework.web.servlet.DispatcherServlet/servlet-classinit-param!--该servlet的初始化参数--!--spring-mvc.xml是怎么加载的呢spring-mvc.xml是怎么加载的呢类似web.xml中的context-paramapplication域的全局初始化参数。这里下面配置初始化参数spring-mvc.xml名称即为web.xml中该DispatcherServlet的servlet的init初始化参数来提供以便org的DispatcherServlet根据这个servlet的init初始化参数去加载springMVC的配置文件继而IOC出controller(特有行为)实例提供给前端控制器DispatcherServlet(共有行为)使用。--param-namecontextConfigLocation/param-nameparam-valueclasspath:spring-mvc.xml/param-value/init-paramload-on-startup2/load-on-startup!--loadOnStartup负整数或不加默认第一次访问该servlet执行时创建servlet对象并初始化loadOnStartup为0或正整数时web服务器启动时创建servlet对象数字越小优先级越高--/servletservlet-mappingservlet-nameDispatcherServlet/servlet-nameurl-pattern//url-pattern!-- 配置该servlet的路径为拦截所有/虽会覆盖tomcat静态资源访问路径但现在没有静态资源html之类只有jsp动态页面。--/servlet-mapping /web-app com.kdy.exception写着玩的练习一下spring异常处理 Data AllArgsConstructor NoArgsConstructor public class AccountException extends Exception {String message; } com.kdy.resolver写着玩的练习一下spring异常处理 public class MyExceptionResolver implements HandlerExceptionResolver {Overridepublic ModelAndView resolveException(javax.servlet.http.HttpServletRequest httpServletRequest, javax.servlet.http.HttpServletResponse httpServletResponse, Object o, Exception e) {ModelAndView modelAndView new ModelAndView();if (e instanceof ClassCastException){modelAndView.addObject(info,类转换异常);}else if(e instanceof ArithmeticException){modelAndView.addObject(info,除零算数异常);}else if(e instanceof FileNotFoundException){modelAndView.addObject(info,文件找不到异常);}else if(e instanceof NullPointerException){modelAndView.addObject(info,空指针异常);}else if(e instanceof AccountException){AccountException ae(AccountException) e;modelAndView.addObject(info,AccountService的报的异常ae.getMessage());}modelAndView.setViewName(error);return modelAndView;} } webapp下jsp中error.jsp % page contentTypetext/html;charsetUTF-8 languagejava % html headtitleerror/title /head body h1异常页面~/h1 h2${info}/h2 /body /htmlresource下spring-mvc.xml ?xml version1.0 encodingUTF-8? beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:mvchttp://www.springframework.org/schema/mvcxmlns:contexthttp://www.springframework.org/schema/contextxsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd!--Controller的组件扫描--context:component-scan base-packagecom.kdy/context:component-scan!--配置内部资源视图解析器--bean idviewResolver classorg.springframework.web.servlet.view.InternalResourceViewResolverproperty nameprefix value/jsp//property!--前缀--property namesuffix value.jsp/property!--后缀--/bean!--注解驱动顶替配置的配置的处理器映射器和适配器集成了jackson可Controller资源方法返回字为对象User时自动转为json--mvc:annotation-driven /!--js和css和html等被web.xml中配置的前端控制配置拦截了这里配置springMvc静态资源放行--mvc:default-servlet-handler/!--若使用这种方式必须配置注解驱动否则controller无法访问--!--自定义异常处理器--bean classcom.kdy.resolver.MyExceptionResolver/ /beans com.kdy.service.impl Service public class AccountServiceImpl implements AccountService {Overridepublic void save(Account account) throws AccountException {try {//1.加载mybatis核心配置获取SqlSessionFactoryString resource mybatis-config.xml;InputStream inputStream Resources.getResourceAsStream(resource);SqlSessionFactory sqlSessionFactory new SqlSessionFactoryBuilder().build(inputStream);//2.获取SqlSession对象用它来执行sqlSqlSession sqlSession sqlSessionFactory.openSession();AccountMapper mapper sqlSession.getMapper(AccountMapper.class);mapper.save(account);sqlSession.commit();sqlSession.close();} catch (Exception e) {StringWriter sw new StringWriter();e.printStackTrace(new PrintWriter(sw, true));String str sw.toString();throw new AccountException(str);}}Overridepublic ListAccount findAll() throws AccountException {try {//1.加载mybatis核心配置获取SqlSessionFactoryString resource mybatis-config.xml;InputStream inputStream Resources.getResourceAsStream(resource);SqlSessionFactory sqlSessionFactory new SqlSessionFactoryBuilder().build(inputStream);//2.获取SqlSession对象用它来执行sqlSqlSession sqlSession sqlSessionFactory.openSession();AccountMapper mapper sqlSession.getMapper(AccountMapper.class);ListAccount accountList mapper.findAll();sqlSession.close();return accountList;} catch (Exception e) {StringWriter sw new StringWriter();e.printStackTrace(new PrintWriter(sw, true));String str sw.toString();throw new AccountException(str);}} } com.kdy.controller Controller RequestMapping(/account) public class AccountController {Autowiredprivate AccountService accountService;//保存RequestMapping(value /save,produces text/html;charsetUTF-8)ResponseBodypublic String save(Account account) throws AccountException {accountService.save(account);return 保存成功;}//查询RequestMapping(/findAll)public ModelAndView findAll() throws AccountException {ListAccount accountList accountService.findAll();ModelAndView modelAndView new ModelAndView();modelAndView.addObject(accountList,accountList);modelAndView.setViewName(index);return modelAndView;} } webapp下jsp下save.jsp % page contentTypetext/html;charsetUTF-8 languagejava % html headtitlesave/title /head body h1添加账户信息表单/h1 form nameaccountForm action${pageContext.request.contextPath}/account/save账户名称input typetext namenamebr/账户金额input typetext namemoneybr/input typesubmit value保存br/ /form /body /html webapp下jsp下index.jsp % page contentTypetext/html;charsetUTF-8 languagejava % % taglib prefixc urihttp://java.sun.com/jsp/jstl/core %!--引入jstl标签库URI-- html headtitleindex/title /head body h1展示用户数据列表/h1 table border1pxtrth账户id/thth账户名称/thth账户金额/th/trc:forEach items${accountList} varaccounttrtd${account.id}/tdtd${account.name}/tdtd${account.money}/td/tr/c:forEach /table /body /html运行tomcat访问http://localhost:8080/SsmModule/jsp/save.jsp 和http://localhost:8080/SsmModule/account/findAll 原始方式整合sping和mybatis的弊端 如service层中的是实现类中的方法     public void save(Account account) throws AccountException {             InputStream in Resources.getResourceAsStream(mybatis-config.xml);        SqlSessionFactory sqlSessionFactory new SqlSessionFactoryBuilder().build(in); ... } 每当执行一次controller就会在service层创建一个sqlSessionFactory工厂 虽然可采取servletContextListener监听器将sqlSessionFactory存放servletContext域中 可参考spring博客中最下方集成web环境中的内容 1、web.xml中增加一个全局初始化参数mybatisConfigLocation !--全局初始化参数--context-param!--servletContext.getInitParameter(contextConfigLocation)、jsp中通过el表达式--param-namecontextConfigLocation/param-nameparam-valueclasspath:applicationContext.xml/param-value/context-paramcontext-param!--servletContext.getInitParameter(contextConfigLocation)、jsp中通过el表达式--param-namemybatisConfigLocation/param-nameparam-valuemybatis-config.xml/param-value/context-param 2、com.kdy.listener中 WebListener public class MybatisLoadListener implements ServletContextListener {SneakyThrowsOverridepublic void contextInitialized(ServletContextEvent servletContextEvent) {ServletContext servletContext servletContextEvent.getServletContext();//获取web.xml中配置的application的全局初始化参数String mybatisConfigLocation servletContext.getInitParameter(mybatisConfigLocation);//其值为applicationContext.xmlInputStream inputStream Resources.getResourceAsStream(mybatisConfigLocation);SqlSessionFactory sqlSessionFactory new SqlSessionFactoryBuilder().build(inputStream);servletContext.setAttribute(sqlSessionFactory,sqlSessionFactory);}Overridepublic void contextDestroyed(ServletContextEvent servletContextEvent) {} } 3、com.kdy.util下创建一个工具类 public class MybatisContextUtils {public static SqlSessionFactory getSqlSessionFactory(ServletContext servletContext){return (SqlSessionFactory)servletContext.getAttribute(sqlSessionFactory);} } controller中修改接口传递一个参数request且修改service层入参传递一个servletContext Controller RequestMapping(/account) public class AccountController {Autowiredprivate AccountService accountService;//保存RequestMapping(value /save,produces text/html;charsetUTF-8)ResponseBodypublic String save(HttpServletRequest request,Account account) throws AccountException {WebApplicationContext ac1 WebApplicationContextUtils.getWebApplicationContext(request.getSession().getServletContext());ServletContext servletContext ac1.getServletContext();accountService.save(account,servletContext);return 保存成功;}//查询RequestMapping(/findAll)public ModelAndView findAll(HttpServletRequest request) throws AccountException {WebApplicationContext ac1 WebApplicationContextUtils.getWebApplicationContext(request.getSession().getServletContext());ServletContext servletContext ac1.getServletContext();ListAccount accountList accountService.findAll(servletContext);ModelAndView modelAndView new ModelAndView();modelAndView.addObject(accountList,accountList);modelAndView.setViewName(index);return modelAndView;} } Service public class AccountServiceImpl implements AccountService {Overridepublic void save(Account account, ServletContext servletContext) throws AccountException {try {SqlSessionFactory sqlSessionFactory MybatisContextUtils.getSqlSessionFactory(servletContext);//2.获取SqlSession对象用它来执行sqlSqlSession sqlSession sqlSessionFactory.openSession();AccountMapper mapper sqlSession.getMapper(AccountMapper.class);mapper.save(account);sqlSession.commit();sqlSession.close();} catch (Exception e) {StringWriter sw new StringWriter();e.printStackTrace(new PrintWriter(sw, true));String str sw.toString();throw new AccountException(str);}}Overridepublic ListAccount findAll(ServletContext servletContext) throws AccountException {try {SqlSessionFactory sqlSessionFactory MybatisContextUtils.getSqlSessionFactory(servletContext);//2.获取SqlSession对象用它来执行sqlSqlSession sqlSession sqlSessionFactory.openSession();AccountMapper mapper sqlSession.getMapper(AccountMapper.class);ListAccount accountList mapper.findAll();sqlSession.close();return accountList;} catch (Exception e) {StringWriter sw new StringWriter();e.printStackTrace(new PrintWriter(sw, true));String str sw.toString();throw new AccountException(str);}} } 运行tomcat访问http://localhost:8080/SsmModule/jsp/save.jsp 和http://localhost:8080/SsmModule/account/findAll 但是这种方式麻烦不说 service层每次还要加上一个servletContext的入参使得controller和service界限模糊不清 所以绝不推荐使用 Spring整合mybatis的方式整合SSM 思路 将session工厂交给spring容器管理从容器中获得执行操作的Mapper实例即可 将事务的控制(sqlSession.commit和sqlSession.close等)交给spring容器进行声明式事务控制 操作 接着原始方式整合SSM的案例写 如果写了上面监听器抽的步骤先回退到原始方式整合SSM案例 pom文件中引入spring-mybatis的包上面已经引入了包中有spring提供的工厂的实现类 1、resource下的mybatis-config.xml文件删除掉数据源和引入jdbc.properties的内容 2、applicationContext.xml中加上数据源和引入jdbc.properties的内容 接下来让service中的sqlSession交由spring产生 3、applicationContext.xml中配置sqlSessionFactory的bean 接下来mybatis核心配置中mapper映射的加载也可以交由spring托管 4、resource下的mybatis-config.xml文件删除加载映射mapperspackage... 5、applicationContext.xml中配置MapperScannerConfigurer扫描mapper所在的包并为mapper创建实现类 mybatis-config.xml变为 ?xml version1.0 encodingUTF-8 ? !DOCTYPE configurationPUBLIC -//mybatis.org//DTD Config 3.0//ENhttps://mybatis.org/dtd/mybatis-3-config.dtd configuration!--起别名为权限定名的类起一个比较短的别名--typeAliasespackage namecom.kdy.domain/!--扫描的为它的类名且不区分大小写--!-- typeAlias typecom.kdy.domain.User aliasuser/typeAlias--!--mybatis已经将String-string、Long-long、Integer-int、Double-double、Boolean-boolean转换设置好了别名--/typeAliases /configuration applicationContext.xml变为 beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:aophttp://www.springframework.org/schema/aopxmlns:contexthttp://www.springframework.org/schema/contextxsi:schemaLocationhttp://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/context http://www.springframework.org/schema/context/spring-context.xsd context:component-scan base-packagecom.kdy/!--开启组件扫描--context:property-placeholder locationclasspath:jdbc.properties/!--引入配置文件使用el获取--bean iddataSource classcom.mchange.v2.c3p0.ComboPooledDataSourceproperty namedriverClass value${jdbc.driver}/propertyproperty namejdbcUrl value${jdbc.url}/propertyproperty nameuser value${jdbc.username}/propertyproperty namepassword value${jdbc.password}/property/bean!--配置sqlSessionFactory--bean idsqlSessionFactory classorg.mybatis.spring.SqlSessionFactoryBeanproperty namedataSource refdataSource/property!--加载mybatis核心文件--property nameconfigLocation valueclasspath:mybatis-config.xml/property/bean!--mybatis核心配置中mapper映射的加载也可以交由spring托管这样spring扫描包并将mapper放入spring容器中。--!--扫描mapper所在的包并为mapper创建实现类--bean classorg.mybatis.spring.mapper.MapperScannerConfigurerproperty namebasePackage valuecom.kdy.mapper/property/bean /beans 使用 只需在用到mapper的地方注入mapper包下的某个mapper接口即可 删除 spring-mvc.xml自定义异常处理器删MyException删myExceptionResolver AccountServiceImpl Service public class AccountServiceImpl implements AccountService {Autowiredprivate AccountMapper accountMapper;Overridepublic void save(Account account){try {accountMapper.save(account);} catch (Exception e) {e.printStackTrace();}}Overridepublic ListAccount findAll(){try {ListAccount accountList accountMapper.findAll();return accountList;} catch (Exception e) {e.printStackTrace();}return null;} } 接下来为其加上spring的事务管理 applicationContext.xml中加上配置平台事务管理器、事务的增强和织入 ?xml version1.0 encodingUTF-8? beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:contexthttp://www.springframework.org/schema/contextxmlns:txhttp://www.springframework.org/schema/txxmlns:aophttp://www.springframework.org/schema/aopxsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd context:component-scan base-packagecom.kdy/!--开启组件扫描--context:property-placeholder locationclasspath:jdbc.properties/!--引入配置文件使用el获取--bean iddataSource classcom.mchange.v2.c3p0.ComboPooledDataSourceproperty namedriverClass value${jdbc.driver}/propertyproperty namejdbcUrl value${jdbc.url}/propertyproperty nameuser value${jdbc.username}/propertyproperty namepassword value${jdbc.password}/property/bean!--配置sqlSessionFactory--bean idsqlSessionFactory classorg.mybatis.spring.SqlSessionFactoryBeanproperty namedataSource refdataSource/property!--加载mybatis核心文件--property nameconfigLocation valueclasspath:mybatis-config.xml/property/bean!--mybatis核心配置中mapper映射的加载也可以交由spring托管这样spring扫描包并将mapper放入spring容器中。--!--扫描mapper所在的包并为mapper创建实现类--bean classorg.mybatis.spring.mapper.MapperScannerConfigurerproperty namebasePackage valuecom.kdy.mapper/property/bean!--配置平台事务管理器--bean idtransactionManager classorg.springframework.jdbc.datasource.DataSourceTransactionManagerproperty namedataSource refdataSource/!--引入数据源需要它的connection对象事务控制提交和回滚--/bean!--通知 事务的增强--tx:advice idtxAdvice transaction-managertransactionManagertx:attributes!--isolation隔离级别、propagation传播行为、timeout超时时间、readonly是否只读--!--对目标类中的某些名称的方法进行事务处理的增强--tx:method name*/!--tx:method name* isolationDEFAULT propagationREQUIRED timeout-1 read-onlyfalse/tx:method nametransfer isolationREPEATABLE_READ propagationREQUIRED read-onlyfalse/tx:method namesave isolationREPEATABLE_READ propagationREQUIRED read-onlyfalse/tx:method namefindAll isolationREPEATABLE_READ propagationREQUIRED read-onlytrue/tx:method nameupdate* isolationREPEATABLE_READ propagationREQUIRED read-onlyfalse/--!--以update开头的通配符的写法--/tx:attributes/tx:advice!--配置事务的aop织入也可抽取切点点表达式出来后引用--aop:configaop:advisor advice-reftxAdvice pointcutexecution(* com.kdy.service.impl.*.*(..))/aop:advisor/aop:config /beans 运行部署访问即可。
http://www.pierceye.com/news/489921/

相关文章:

  • 全总基层组织建设网站百度录入网站
  • 网站建设的实验步骤wordpress linux 建站教程
  • 哪个网站专门做邮轮旅游的加拿大28平台微信
  • 网站设置的用途wordpress 5.1 运行环境
  • 中小企业服务中心网站建设网站域名中文后缀
  • 龙武工会网站怎么做5173游戏交易网站源码
  • 网站建设设计时代创信好海南城乡和住房建设厅网站
  • 大连最好的做网站的公司崇义做网站
  • 圣弘建设股份有限公司网站上海图文设计有限公司
  • gta5资产网站正在建设零基础自学设计
  • 深圳专业制作网站公司吗网站信息化建设报送
  • 苏州网站建设运营推广网站一年多少钱?
  • WordPress国外主机湖北短视频seo营销
  • 南通网站建设电话设计一个网站要多少钱
  • 好的模板网站建设网站规划 时间
  • 昆明seocn整站优化网站建设如何报价
  • 网页设计模板免费网站WordPress生成网站地图
  • 做网站 侵权做外贸怎么看外国网站
  • 网站建设知识点的总结普通网站建设是什么
  • 杭州网站建设费用多少合肥高新城建设计院网站
  • 炫酷特效网站asa8.4 做网站映射
  • 郑州租赁房网站建设九江快乐城
  • 手机网站建站教育模板微信网站 教程
  • 网站的结构犀牛云做网站多少钱
  • 网站服务器用什么配置公司网站建设的视频教程
  • idea做网站网络营销与网站推广的区别
  • 建一家网站多少钱微信小程序在哪里查找
  • 东阳网站推广英文网站源码下载
  • 介绍湛江网站高端网站建设网站定制
  • 网站的特征包括哪些方面wordpress缓存插件 w3