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

怎么做58同城网站网络营销推广工具有哪些

怎么做58同城网站,网络营销推广工具有哪些,网站制作 徐州,做网站还是微信小程序目录 1、目的:梳理一下MyBatis运行时的几个对象,我们需要搞清楚他们的作用,进而需要理解mybatis的整个工作流程和执行原理。 2、简要概括各个类 2.1 Resources 作用:编写资源加载类,使用类加载器加载 配置文件(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, Map<namespace+"."+id, MappedStatement(sql, resultType)>)

|

SqlSessionFactory

|

|---->Configuration(conn, Map<namespace+"."+id, MappedStatement(sql, resultType)>)

|

SqlSession

|

|---->conn, Map<namespace+"."+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;/**Map<"com.by.dao.UserDao.findAll", MappedStatement>     */private Map<String, MappedStatement> mappers = new HashMap<String,MappedStatement>();public Map<String, MappedStatement> getMappers() {return mappers;}public void setMappers(Map<String, 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(Class<T> 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(Class<T> 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 Map<String, MappedStatement> mappers;private Connection conn;public ProxyFactory(Map<String, 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.使用代理对象执行方法List<User> users = userDao.findAll();for(User user : users){System.out.println(user);}//6.释放资源session.close();in.close();
http://www.shuangfujiaoyu.com/news/29227.html

相关文章:

  • 哪个门户网站做推广好建站之星网站
  • 自己动手获取网站访客qq号码推广app下载
  • 温州给企业做网站网站建立的步骤
  • 美国做ppt的网站百度指数查询工具
  • 南京做公司网站天津百度推广开户
  • 小型企业网站模板下载百度搜索风云榜小说排行榜
  • 小说网站如何赚钱域名查询ip
  • 请多记几个本站域名防止失联怎么做属于自己的网站
  • 重庆网站营销seo电话网站关键词怎么添加
  • vps除了做网站还能做什么营销传播
  • 做网站百科上海关键词排名优化公司
  • 深圳福田网站优化网络营销培训学校长沙线上引流公司
  • 七牛云 wordpress成都网站seo排名优化
  • 东台专业做网站搜索引擎优化seo公司
  • 国外有什么网站是做服装的免费代理上网网站
  • 不知此网站枉做男人网络seo优化公司
  • 本地的天津网站建设seo是怎么优化
  • 微信官方网站是什么最新注册域名查询
  • 商丘网站制作软件公司主页网站设计
  • 网站外的seoseo排名点击器原理
  • 建设一个旅游网站的目的是什么下载百度到桌面
  • 建网站难吗?微信引流推广精准粉
  • wordpress快速赚钱石首seo排名
  • 如何用html做网站跨境电商怎么开店铺
  • 中山做网站服务好发布平台有哪些
  • 网站备案用别人身份证百度百科怎么创建自己
  • 莆田自助建站软件免费发布广告信息的网站
  • vue 做网站 seo清博舆情系统
  • 如何做淘宝宜家代购网站矿产网站建设价格
  • 怎么管理网站的内容吗网页设计期末作业模板