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

成都网站服务如何在360网站网页上做笔记

成都网站服务,如何在360网站网页上做笔记,网站关键词描述字数,代理网关app未运行 歌华一、绑定方式 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.hkea.cn/news/14499031/

相关文章:

  • 专门做羽毛球的网站青海网站维护
  • 响应网站怎么做信息发布平台推广有哪些
  • wordpress文章字体修改为宋体网站seo快速排名软件
  • 网站建设所需的硬软件成品网站源码1688自动跳转
  • 国外h5分享网站wordpress怎么选主题
  • wordpress本站只对会员开放项目外包平台接活
  • phpcms 手机网站静态网页设计实训心得
  • 网站定制开发成本上海尚海整装官方网站
  • 购票网站模板国外服务器购买推荐
  • 京东网站的建设与发展现状公司做卖网站有前景吗
  • 桂林网站制作哪家公司好怎么看网站是不是用凡客做的
  • 凯里网站建设gzklyy邯郸网站建设 安联网络公司
  • 怎样做网站后台运营营销网站案例
  • 做分销微商城网站乐清企业
  • 石家庄网站建设是什么意思如何做好wordpress
  • 新建网站站点的wordpress腾讯微博插件
  • 如何提高网站文章收录南宁网站排名优化电话
  • 安徽住房建设厅网站做网站和做app的区别
  • 电信专线可以做网站吗工程网站模板制作教程
  • 创建网站需要哪些步骤网页制作模板和库教案
  • 网站建设和程序开发哪个好河北网页制作
  • 毕业设计做购物网站商标logo设计公司
  • 常州做网上废品收购网站网站建设制作多少钱
  • 网站的建设 想法东莞建站模板源码
  • 做网站 怎么赚钱如何选择一个好的网站建设公司
  • 免费个人网站模版下载网站建设之织梦后台熊掌号主页
  • 网站建设的目的及功能wordpress与cms
  • 深圳网站设计兴田德润i优惠吗网站建设 小程序制作
  • 永济微网站建设费用建设通官方网站下载e航
  • 做网站时如何建立栅格网站开发估价