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

微信公众号链接的网站怎么做的宿州建设银行网站

微信公众号链接的网站怎么做的,宿州建设银行网站,婚纱网站html源码,分类信息网站做淘客目录 1、目的#xff1a;梳理一下MyBatis运行时的几个对象#xff0c;我们需要搞清楚他们的作用#xff0c;进而需要理解mybatis的整个工作流程和执行原理。 2、简要概括各个类 2.1 Resources 作用#xff1a;编写资源加载类#xff0c;使用类加载器加载 配置文件(myb…目录 1、目的梳理一下MyBatis运行时的几个对象我们需要搞清楚他们的作用进而需要理解mybatis的整个工作流程和执行原理。 2、简要概括各个类 2.1 Resources 作用编写资源加载类使用类加载器加载 配置文件(mybatis-config.xml )即读取mybatis-config.xml 2.2 SqlSessionFactoryBuilder 作用将配置资源封装成Configuration对象并且将该资源对象传到工厂对象中 2.2.1 Configuration 作用配置类 -- 把所有的配置信息 都装进去 2.2.2 MappedStatement 作用用来封装 sql语句 和 查询结果集即返回值类型 2.3 SqlSessionFactory 2.4 SqlSession 2.5 ProxyFactory 3、测试 1、目的梳理一下MyBatis运行时的几个对象我们需要搞清楚他们的作用进而需要理解mybatis的整个工作流程和执行原理。 mybatis-config.xml mapper.xml mapper.xml mapper.xml... | | Resources | |----InputStream | SqlSessionFactoryBuilder | |----Configuration(conn, Mapnamespace.id, MappedStatement(sql, resultType)) | SqlSessionFactory | |----Configuration(conn, Mapnamespace.id, MappedStatement(sql, resultType)) | SqlSession | |----conn, Mapnamespace.id, MappedStatement(sql, resultType) | ProxyFactory | |----MappedStatement(sql, resultType), conn | Executor | | | | | | 输入出映射 2、简要概括各个类 2.1 Resources 作用编写资源加载类使用类加载器加载 配置文件(mybatis-config.xml )即读取mybatis-config.xml package com.by.io;import java.io.InputStream;public class Resources {//根据文件名称加载类路径下面的配置文件public static InputStream getResourceAsStream(String filePath){return Resources.class.getClassLoader().getResourceAsStream(filePath);} } 2.2 SqlSessionFactoryBuilder 作用将配置资源封装成Configuration对象并且将该资源对象传到工厂对象中 package com.by.builder;import com.by.cfg.Configuration; import com.by.factory.DefaultSqlSessionFactory; import com.by.factory.SqlSessionFactory; import com.by.utils.XMLConfigBuilder;import java.io.InputStream;public class SqlSessionFactoryBuilder {/*** 构建SqlSessionFactory对象* param in* return*/public SqlSessionFactory build(InputStream in){Configuration configuration XMLConfigBuilder.loadConfiguration(in);return new DefaultSqlSessionFactory(configuration);} } 2.2.1 Configuration 作用配置类 -- 把所有的配置信息 都装进去 package com.by.cfg;import com.by.mapping.MappedStatement;import java.util.HashMap; import java.util.Map;public class Configuration {private String driver;private String url;private String username;private String password;/**Mapcom.by.dao.UserDao.findAll, MappedStatement */private MapString, MappedStatement mappers new HashMapString,MappedStatement();public MapString, MappedStatement getMappers() {return mappers;}public void setMappers(MapString, MappedStatement mappers) {this.mappers.putAll(mappers);//此处需要使用追加的方式}public String getDriver() {return driver;}public void setDriver(String driver) {this.driver driver;}public String getUrl() {return url;}public void setUrl(String url) {this.url url;}public String getUsername() {return username;}public void setUsername(String username) {this.username username;}public String getPassword() {return password;}public void setPassword(String password) {this.password password;} } 2.2.2 MappedStatement 作用用来封装 sql语句 和 查询结果集即返回值类型 package com.by.mapping;public class MappedStatement {private String queryString;//SQLprivate String resultType;//实体类的全限定类名public String getQueryString() {return queryString;}public void setQueryString(String queryString) {this.queryString queryString;}public String getResultType() {return resultType;}public void setResultType(String resultType) {this.resultType resultType;} } 2.3 SqlSessionFactory package com.by.factory; public interface SqlSessionFactory {//获取SQLSession对象public SqlSession openSession(); } package com.by.factory;import com.by.cfg.Configuration; import com.by.session.DefaultSqlSession; import com.by.session.SqlSession;public class DefaultSqlSessionFactory implements SqlSessionFactory {private Configuration cfg;public DefaultSqlSessionFactory(Configuration cfg) {this.cfg cfg;}/*** 获取一个SqlSession对象* return*/Overridepublic SqlSession openSession() {return new DefaultSqlSession(cfg);} } 2.4 SqlSession public interface SqlSession {//获取代理对象public T T getMapper(ClassT tClass);//释放资源void close(); } package com.by.session;import com.by.utils.DataSourceUtil; import com.by.cfg.Configuration;import java.lang.reflect.Proxy; import java.sql.Connection; import java.sql.SQLException;public class DefaultSqlSession implements SqlSession {private Configuration cfg;private Connection conn;public DefaultSqlSession(Configuration cgf){this.cfg cgf;this.conn DataSourceUtil.getConnection(cfg);}/** 创建代理对象*/Overridepublic T T getMapper(ClassT tClass) {/*** tClass.getClassLoader()类加载器* new Class[]{tClass}Class数组让代理对象和被代理对象有相同的行为* new ProxyFactory调用真实角色附加自己的操作*/return (T) Proxy.newProxyInstance(tClass.getClassLoader(),new Class[]{tClass},new ProxyFactory(cfg.getMappers(),conn));}Overridepublic void close() {try {conn.close();} catch (SQLException e) {e.printStackTrace();}} } 2.5 ProxyFactory package com.by.session;import com.by.mapping.MappedStatement; import com.by.utils.Executor;import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.sql.Connection; import java.util.Map;public class ProxyFactory implements InvocationHandler {private MapString, MappedStatement mappers;private Connection conn;public ProxyFactory(MapString, MappedStatement mappers, Connection conn){this.mappers mappers;this.conn conn;}//调用代理对象的任何方法都会在这执行public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {//1.获取方法名String methodName method.getName();//2.获取方法所在类的名称String className method.getDeclaringClass().getName();//3.组合keyString key className.methodName;//4.获取mappers中的Mapper对象MappedStatement mappedStatement mappers.get(key);//5.判断是否有mapperif(mappedStatement null){throw new IllegalArgumentException(传入的参数有误);}//6.调用工具类执行查询所有return new Executor().selectList(mappedStatement,conn);} } 3、测试 //1.读取配置文件InputStream in Resources.getResourceAsStream(SqlMapConfig.xml);//2.创建SqlSessionFactory工厂SqlSessionFactoryBuilder builder new SqlSessionFactoryBuilder();SqlSessionFactory factory builder.build(in);System.out.println(----- factory);//3.使用工厂生产SqlSession对象SqlSession session factory.openSession();//4.使用SqlSession创建Dao接口的代理对象UserDao userDao session.getMapper(UserDao.class);//5.使用代理对象执行方法ListUser users userDao.findAll();for(User user : users){System.out.println(user);}//6.释放资源session.close();in.close();
http://www.dnsts.com.cn/news/143607.html

相关文章:

  • 做优惠卷网站东莞设计公司有哪些
  • 广州网站建设策划商务网站建设个人总结
  • 万户网站深圳vi设计公司全力设计
  • dede做双语网站有云服务器怎么做网站
  • 网站开发应该怎么做2016网站谷歌权重
  • 网站建设一年多少钱wordpress站点标题副标题换行
  • 做外汇网站代理赚钱吗贵阳论坛网站建设
  • 山东省建设工程 评估中心网站长春设计网站
  • 个人工商户做网站备案东莞百姓网招聘
  • 临沂网站建设有哪些做网站 带宽 多少钱
  • 怎么用nat做网站做网站的流程是什么
  • 怎么做网站的主页面微信网站建设塞尼铁克
  • 网站上的漂浮广告中南集团中南建设网站
  • 如何加强英文网站建设制作网页的网站费用属于资本性支出吗
  • qq炫舞做浴缸的网站石家庄市和城乡建设局网站
  • 做网站时需要FTP工具吗江西赣鄂皖路桥投资有限公司网站建设
  • 福州做网站公司有哪些企业服务网站开发
  • wordpress博客整站源码湖南网址大全
  • 炫的手机网站最好建网站系统的软件
  • win7dw做asp购物网站专业网站建设服务公司哪家好
  • 青海服装网站建设公司公司网站模板内容
  • 网站域名费用做公司官网找谁
  • 织梦书法网站模板万网网站空间费
  • 商城网站建设公司哪家好销售管理软件有哪些
  • 长沙 网站优化wordpress时间插件下载地址
  • html5修改器下载做网站优化的好处
  • 徐州企业网站设计群辉wordpress语言
  • 网站设计需求文档wordpress固定链接静态化后打不开
  • 提供企业网站建设方案网站中的搜索框图标怎么做的
  • 微信网站开发之前要学会什么wordpress页眉页脚