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

wordpress主题站模板下载wordpress优秀案例

wordpress主题站模板下载,wordpress优秀案例,wordpress支持什么格式视频播放器,深圳网站建设那家好提示#xff1a;文章写完后#xff0c;目录可以自动生成#xff0c;如何生成可参考右边的帮助文档 文章目录 1.MyBatis简介2.使用步骤2.1、引入依赖2.2、配置文件2.3、接口定义2.4、加载执行 3.原理解析 1.MyBatis简介 MyBatis是一个ORM工具#xff0c;封装了JDBC的操作文章写完后目录可以自动生成如何生成可参考右边的帮助文档 文章目录 1.MyBatis简介2.使用步骤2.1、引入依赖2.2、配置文件2.3、接口定义2.4、加载执行 3.原理解析 1.MyBatis简介 MyBatis是一个ORM工具封装了JDBC的操作简化业务编程 Mybatis在web工程中与Spring集成提供业务读写数据库的能力。 2.使用步骤 2.1、引入依赖 采用Maven包依赖管理mybatis-3.5.5版本同时需要数据库连接驱动 dependencygroupIdorg.mybatis/groupIdartifactIdmybatis/artifactIdversion3.5.5/version /dependency dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion5.1.49/version /dependency2.2、配置文件 配置文件配置数据库连接源及映射文件。 ?xml version1.0 encodingUTF-8? !DOCTYPE configuration PUBLIC -//mybatis.org//DTD Config 3.0//EN http://mybatis.org/dtd/mybatis-3-config.dtdconfigurationenvironments defaultdevelopmentenvironment iddevelopmenttransactionManager typeJDBC /!-- 数据库连接方式 --dataSource typePOOLEDproperty namedriver valuecom.mysql.jdbc.Driver /property nameurl valuejdbc:mysql://localhost/user /property nameusername valueroot /property namepassword value123456 //dataSource/environment/environments!-- 注册表映射文件 --mappersmapper resourcemybatis/User.xml//mappers/configuration2.3、接口定义 定义实体 package com.xiongxin.mybatis.entity;public class User {private String username;private String password;...gettersetter }接口定义 package com.xiongxin.mybatis.mapper; import com.xiongxin.mybatis.entity.User; import java.util.List; public interface UserMapper {ListUser queryUser(); }定义映射文件 ?xml version1.0 encodingUTF-8 ? !DOCTYPE mapperPUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtdmapper namespacecom.xiongxin.mybatis.mapper.UserMapperselect idqueryUser resultTypecom.xiongxin.mybatis.entity.Userselect * from tbl_user/select/mapper2.4、加载执行 package com.xiongxin.mybatis;import com.alibaba.fastjson.JSON; import com.xiongxin.mybatis.entity.User; import com.xiongxin.mybatis.mapper.UserMapper; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder;import java.io.IOException; import java.io.Reader; import java.util.List;public class TestMain {public static void main(String[] args) throws IOException {String resource mybatis-config.xml;//加载 mybatis 的配置文件它也加载关联的映射文件Reader reader Resources.getResourceAsReader(resource);//构建 sqlSession 的工厂SqlSessionFactory sessionFactory new SqlSessionFactoryBuilder().build(reader);//创建能执行映射文件中 sql 的 sqlSessionSqlSession session sessionFactory.openSession();UserMapper userMapper session.getMapper(UserMapper.class);ListUser users userMapper.queryUser();System.out.println(JSON.toJSONString(users));}} --------------------------------- ..consule print.. [{password:password,username:xiongxin}]到这里这个Mybatis的使用环节结束。 整个实现过程中我们并未编写Mapper的实现类框架是如何在无实现类的场景下实现接口方法返回的呢 这里就不得不说到接口的动态代理方法了。 3.原理解析 SqlSession接口的实现中获取Mapper的代理实现类 使用了JDK动态代理的功能 代理类执行方法调用 方法调用中执行MethodInvoker 最终执行execue方法。 获取返回结果Result 4.手撕框架 前置知识 源码: dependenciesdependencygroupIdcom.alibaba/groupIdartifactIdfastjson/artifactIdversion1.2.74/version/dependencydependencygroupIdcom.h2database/groupIdartifactIdh2/artifactIdversion1.4.199/version/dependency/dependenciespackage com.dbutil.session;import java.lang.annotation.Retention; import java.lang.annotation.Target; import java.lang.reflect.*; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; import java.util.ArrayList; import java.util.List;import static java.lang.annotation.ElementType.*; import static java.lang.annotation.RetentionPolicy.RUNTIME;/*** author xiongxin*/ public class SqlSession {public static Connection getConnH2() throws Exception {String url jdbc:h2:mem:db_h2;MODEMYSQL;INITRUNSCRIPT FROM ./src/main/resources/schema.sql;String user root;String password 123456;//1.加载驱动程序Class.forName(org.h2.Driver);//2.获得数据库链接Connection conn DriverManager.getConnection(url, user, password);return conn;}/*** 自定义注解*/Target({TYPE, FIELD, METHOD})Retention(RUNTIME)public interface QueryList {public String value();}/*** 动态代理** param mapperInterface* param T* return*/public static T T getMapper(ClassT mapperInterface) {return (T) Proxy.newProxyInstance(mapperInterface.getClassLoader(), new Class[]{mapperInterface}, new MapperInvocationHandler());}/*** 代理类方法*/public static class MapperInvocationHandler implements InvocationHandler {Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable {String sql method.getAnnotation(QueryList.class).value();Class? returnType method.getReturnType();//返回类型为Listif (returnType List.class) {Type genericReturnType method.getGenericReturnType();String typeName genericReturnType.getTypeName();String replace typeName.replace(java.util.List, ).replace(, );//获取泛型类型Class? forName Class.forName(replace);return SqlSession.queryList(sql, forName);}return null;}}/*** 结果集转换** param T*/public interface ResultMapT {T convert(ResultSet resultSet) throws Exception;}/*** 创建连接并执行** param sql* param resultMap* param T* return* throws Exception*/public static T ListT queryList(String sql, ResultMapT resultMap) throws Exception {//jdbc数据库Connection conn getConnH2();//3.通过数据库的连接操作数据库实现增删改查使用Statement类Statement st conn.createStatement();ResultSet rs st.executeQuery(sql);ListT list new ArrayList();//4.处理数据库的返回结果(使用ResultSet类)while (rs.next()) {T convert resultMap.convert(rs);list.add(convert);}//关闭资源rs.close();st.close();conn.close();return list;}/*** 查询数据集** param sql* param returnType* param T* return* throws Exception*/public static T ListT queryList(String sql, ClassT returnType) throws Exception {ListT list SqlSession.queryList(sql, rs - {T obj returnType.newInstance();Field[] declaredFields returnType.getDeclaredFields();for (Field declaredField : declaredFields) {Class? type declaredField.getType();//类型为String时的处理方法if (type String.class) {String value rs.getString(declaredField.getName());String fieldName declaredField.getName();Method method returnType.getDeclaredMethod(set.concat(fieldName.substring(0, 1).toUpperCase().concat(fieldName.substring(1))),String.class);method.invoke(obj, value);}if (type Long.class) {Long value rs.getLong(declaredField.getName());String fieldName declaredField.getName();Method method returnType.getDeclaredMethod(set.concat(fieldName.substring(0, 1).toUpperCase().concat(fieldName.substring(1))),Long.class);method.invoke(obj, value);}//其他类型处理方法}return obj;});return list;} }schema.sql文件 drop table if exists user; CREATE TABLE user (id int(11) NOT NULL AUTO_INCREMENT,username varchar(255) DEFAULT NULL,password varchar(255) DEFAULT NULL,PRIMARY KEY (id) );insert into user(id,username,password) values(1,xiongxina,123456); insert into user(id,username,password) values(2,xiongxinb,123456); insert into user(id,username,password) values(3,xiongxinc,123456);mapper定义 package com.dbutil.mapper;import com.dbutil.entity.UserEntity; import com.dbutil.session.SqlSession;import java.util.List;public interface UserMapper {SqlSession.QueryList(select * from user)ListUserEntity queryUser(); }使用 package com.dbutil;import com.dbutil.entity.UserEntity; import com.dbutil.mapper.UserMapper; import com.dbutil.session.SqlSession;import java.util.List;public class UserService {public static void main(String[] args) throws Exception {UserMapper userMapper SqlSession.getMapper(UserMapper.class);ListUserEntity userEntities userMapper.queryUser();for (UserEntity userEntity : userEntities) {System.out.println(userEntity);}} }
http://www.zqtcl.cn/news/589965/

相关文章:

  • 网站页面上的悬浮窗怎么做简单好看的版面设计图
  • 我要在58上面做网站硬件开发和嵌入式的区别
  • 西安网站推广慧创新手怎么开网店
  • 做羞羞事视频网站网站策划书基本项目
  • 对网站建设的维护优秀设计网站推荐
  • 口红机网站怎么做wordpress 搭建个人网站
  • 黄金网站房地产网站建设意义
  • 百度网站联盟公司做网站计入那个科目
  • 越秀电子商务网站建设国外的ui设计思想网站
  • 网站关键词优化公司网站建设完成确认书
  • 企业微信网站怎么建设山东有哪些网络公司
  • 做任务领佣金的网站源码页面设计参评
  • 淘宝联盟个人网站怎么做企业年度报告公示系统
  • 长沙企业网页设计哪家专业网站优化seo
  • 网站设计 西安漂亮企业网站源码
  • 云南省科技网站网页设计师有前途吗
  • 漳州网站开发找出博大科技慈溪市建设局网站表格下载
  • 网站到期怎么续费公司网站asp源码
  • 多个域名 一个网站域名解析官网
  • 中国建设银行企业网站旅游网页代码模板
  • 湛江免费企业建站wordpress archives
  • 建个企业网站多少钱图书管理系统网站开发教程
  • 淘宝客网站建设详细教程wordpress转dz
  • 银川网站推广i深建官方网站
  • 有什么较好的网站开发框架娱乐网站模板
  • 宿迁网站建设托管wordpress 萝莉
  • 定制网站开发冬天里的白玫瑰制作复杂的企业网站首页
  • 网站开发及设计演讲海报免费做网站app下载
  • 做动态图片的网站吗自考网站建设与实践
  • 建外贸网站需要多少钱胖咯科技 网站建设