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

在深圳学网站设计欧派全屋定制多少钱一平米

在深圳学网站设计,欧派全屋定制多少钱一平米,更合网站建设制作,中国建筑官网站一、绑定方式 1. XML文件方式 在Mybatis中#xff0c;我们需要创建一个与实体类对应的Mapper接口#xff0c;然后在该接口上添加方法#xff0c;这些方法对应着SQL语句。然后#xff0c;我们需要创建一个XML文件#xff0c;这个文件中包含了SQL语句和映射关系。 例如我们需要创建一个与实体类对应的Mapper接口然后在该接口上添加方法这些方法对应着SQL语句。然后我们需要创建一个XML文件这个文件中包含了SQL语句和映射关系。 例如我们有一个User实体类和一个UserMapper接口 public interface UserMapper {User getUserById(int id); }然后我们可以创建一个名为UserMapper.xml的文件内容如下 mapper namespacecom.example.dao.UserMapperselect idgetUserById resultTypecom.example.entity.UserSELECT * FROM user WHERE id #{id}/select /mapper在这个XML文件中namespace属性指定了Mapper接口的全限定名id属性指定了SQL语句的唯一标识符resultType属性指定了查询结果的类型。 2. 注解方式 Mybatis也支持通过注解的方式来进行映射。首先需要在Mapper接口上添加Mapper注解然后在方法上添加Select、Insert、Update、Delete等注解来指定SQL语句。 例如我们可以将上面的UserMapper接口改为注解方式 import org.apache.ibatis.annotations.*;Mapper public interface UserMapper {Select(SELECT * FROM user WHERE id #{id})User getUserById(int id); }在这个例子中Mapper注解表示这是一个Mapper接口Select注解表示这是一个查询语句#{id}是参数占位符。 3. 需要注意 启动类上添加MapperScan注解指定扫描路径 SpringBootApplication MapperScan(com.example.mapper) // 指定扫描路径 public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);} }不用MapperScan注解也可以在mybatis-config.xml中配置mapper映射文件的位置和命名空间 configurationmappersmapper resourcecom/example/mapper/UserMapper.xml/ // 指定Mapper映射文件的位置和名称/mappers /configuration二、实现原理 1. 原理 Mybatis的Mapper接口和xml绑定的原理主要依赖于JDK动态代理技术。 而Mybatis中MapperProxy代理类是mybatis实现Mapper接口和xml绑定的核心类之一。它实现了InvocationHandler接口用于拦截Mapper接口方法的调用并将方法名和参数传递给SqlSession对象执行相应的SQL语句。 2. MapperProxy代理类的实现过程 首先通过JDK动态代理技术生成一个MapperProxy代理类实例。这个代理类实现了Mapper接口并重写了接口中的方法。在重写的方法中MapperProxy会拦截方法调用并将方法名和参数传递给SqlSession对象执行相应的SQL语句。SqlSession对象会根据Mapper接口的namespace值找到对应的mapper.xml文件并根据id值找到对应的SQL语句。然后根据返回值类型和参数类型等信息生成相应的Java代码。这些Java代码会包含对SqlSession的操作例如查询、更新等操作。最终SqlSession对象会将这些Java代码编译成字节码并加载到JVM中运行。当SQL语句执行完毕后SqlSession对象会将结果返回给MapperProxy代理类。然后MapperProxy代理类会将结果映射为Java对象并返回给调用者。 3. MapperProxy代理类源码 下面是MapperProxy代理class的核心方法实现mybatis3.5.9 public class MapperProxyT implements InvocationHandler, Serializable {Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable {try {if (Object.class.equals(method.getDeclaringClass())) {return method.invoke(this, args);} else {return cachedInvoker(method).invoke(proxy, method, args, sqlSession);}} catch (Throwable t) {throw ExceptionUtil.unwrapThrowable(t);}}private MapperMethodInvoker cachedInvoker(Method method) throws Throwable {try {return MapUtil.computeIfAbsent(methodCache, method, m - {if (m.isDefault()) {try {if (privateLookupInMethod null) {return new DefaultMethodInvoker(getMethodHandleJava8(method));} else {return new DefaultMethodInvoker(getMethodHandleJava9(method));}} catch (IllegalAccessException | InstantiationException | InvocationTargetException| NoSuchMethodException e) {throw new RuntimeException(e);}} else {return new PlainMethodInvoker(new MapperMethod(mapperInterface, method, sqlSession.getConfiguration()));}});} catch (RuntimeException re) {Throwable cause re.getCause();throw cause null ? re : cause;}}private MethodHandle getMethodHandleJava9(Method method)throws NoSuchMethodException, IllegalAccessException, InvocationTargetException {final Class? declaringClass method.getDeclaringClass();return ((Lookup) privateLookupInMethod.invoke(null, declaringClass, MethodHandles.lookup())).findSpecial(declaringClass, method.getName(), MethodType.methodType(method.getReturnType(), method.getParameterTypes()),declaringClass);}private MethodHandle getMethodHandleJava8(Method method)throws IllegalAccessException, InstantiationException, InvocationTargetException {final Class? declaringClass method.getDeclaringClass();return lookupConstructor.newInstance(declaringClass, ALLOWED_MODES).unreflectSpecial(method, declaringClass);} }
http://www.ho-use.cn/article/10818259.html

相关文章:

  • 创新的微商城网站建设用wordpress做淘宝客
  • 设计型网站建设网站运营是什么意思
  • 网站建设洽谈方案阿里巴巴国际站外贸流程
  • 南京网站制作开发wordpress 产品管理
  • 青岛公司网站建设公司排名招标网官网登录
  • 加强企业网站建设小榄网站建设
  • 培训营销型网站建设怎样在微信上开店卖东西
  • dede手机医院网站模板个人免费网站注册com
  • 文档分享类网站建设wordpress主题添加字体设置
  • 企业如何选择网站搜索引擎推广预算
  • 青岛网站制作开发页面设计说明怎么写
  • 学校网站英文中国建设工程招聘信息网站
  • 云顶科技做网站的网站开发使用什么技术
  • 酒店网站建设方案结束语今天最新新闻10条
  • 丹东网站制作wordpress插件去除google
  • 自建网站怎么做推广给你一个新的网站怎么做
  • 国家住房和城乡建设部网站免费营销网站制作
  • 做公司网站要多少钱深圳做律师网站公司
  • 那些是flash做的网站中信建设有限责任公司投资部执行总监张鹏
  • 智能网站推广软件兰州官网seo诊断
  • 住房和城乡建设部网站职称查询网站建设和管理颁奖
  • 在线免费网站模板提高工作效率整改措施
  • dw怎么做网站相册投资公司注册资金要求
  • 东莞高端品牌网站建设网站的回到顶部怎么做
  • cad如何做图纸模板下载网站系统网站设计
  • html移动网站开发网站开发专业术语大全
  • wordpress建设的网站涪陵网站制作
  • 放单网站百度发广告怎么发
  • 人社门户网站建设方案网站建设做的好的公司
  • 照明做外贸的有那些网站php 视频播放网站开发