国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁(yè) > news >正文

網(wǎng)站建設(shè) 公司 常見(jiàn)問(wèn)題seo綜合查詢(xún)是什么

網(wǎng)站建設(shè) 公司 常見(jiàn)問(wèn)題,seo綜合查詢(xún)是什么,vs2013做網(wǎng)站教程,做網(wǎng)站是靠什么賺錢(qián)的簡(jiǎn)單手寫(xiě)Mybatis大致原理 大致原理項(xiàng)目結(jié)構(gòu)項(xiàng)目代碼代碼測(cè)試 大致原理 底層基于JDK動(dòng)態(tài)代理技術(shù)實(shí)現(xiàn) 項(xiàng)目結(jié)構(gòu) 項(xiàng)目代碼 pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns…

簡(jiǎn)單手寫(xiě)Mybatis大致原理

    • 大致原理
    • 項(xiàng)目結(jié)構(gòu)
    • 項(xiàng)目代碼
    • 代碼測(cè)試

大致原理

底層基于JDK動(dòng)態(tài)代理技術(shù)實(shí)現(xiàn)

項(xiàng)目結(jié)構(gòu)

在這里插入圖片描述

項(xiàng)目代碼

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com</groupId><artifactId>mybatis-jdk-proxy</artifactId><version>1.0-SNAPSHOT</version><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>8</source><target>8</target></configuration></plugin></plugins></build><dependencies><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.18</version></dependency></dependencies></project>

config.properties

driverClass=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/db_mybatis?serverTimezone=UTC
user=root
password=admin

UserEntity.java

package com.mybatis.entity;/*** @author honey* @date 2023-07-26 15:29:38*/
public class UserEntity {private Integer id;private String name;@Overridepublic String toString() {return "UserEntity{" +"id=" + id +", name='" + name + '\'' +'}';}
}

UserMapper.java

package com.mybatis.mapper;import com.mybatis.proxy.Insert;/*** @author honey* @date 2023-07-26 21:04:23*/
public interface UserMapper {/*** 新增用戶(hù)** @return int*/@Insert("INSERT INTO `tb_user` (`id`, `name`) VALUES (null, 'Faker');")int insertUser();
}

Insert.java

package com.mybatis.proxy;import java.lang.annotation.*;/*** @author honey* @date 2023-07-27 20:48:38*/
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Insert {String value();
}

JdbcUtils.java

package com.mybatis.proxy;import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Properties;/*** @author honey* @date 2023-07-27 20:57:08*/
public class JdbcUtils {private JdbcUtils() {}private static String url;private static String user;private static String password;static {try {InputStream resourceAsStream = JdbcUtils.class.getClassLoader().getResourceAsStream("config.properties");Properties properties = new Properties();properties.load(resourceAsStream);String driverClass = properties.getProperty("driverClass");url = properties.getProperty("url");user = properties.getProperty("user");password = properties.getProperty("password");Class.forName(driverClass);} catch (Exception e) {e.printStackTrace();}}public static Connection getConnection() {try {return DriverManager.getConnection(url, user, password);} catch (Exception e) {e.printStackTrace();return null;}}public static void closeConnection(ResultSet resultSet, Statement statement, Connection connection) {try {if (resultSet != null) {resultSet.close();}if (statement != null) {statement.close();}if (connection != null) {connection.close();}} catch (Exception e) {e.printStackTrace();}}public static void closeConnection(Statement statement, Connection connection) {closeConnection(null, statement, connection);}
}

MapperProxy.java

package com.mybatis.proxy;import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.sql.Connection;
import java.sql.PreparedStatement;/*** @author honey* @date 2023-07-27 20:17:23*/
public class MapperProxy implements InvocationHandler {private final Class<?> mapperClass;public MapperProxy(Class<?> mapperClass) {this.mapperClass = mapperClass;}@Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable {// 使用Java反射技術(shù)獲取該方法上的注解Insert declaredAnnotation = method.getDeclaredAnnotation(Insert.class);String insertSql = declaredAnnotation.value();// 執(zhí)行sql語(yǔ)句Connection connection = JdbcUtils.getConnection();PreparedStatement preparedStatement = connection.prepareStatement(insertSql);return preparedStatement.executeUpdate();}public <T> T getProxy() {return (T) Proxy.newProxyInstance(mapperClass.getClassLoader(), new Class[]{mapperClass}, this);}
}

SqlSession.java

package com.mybatis.proxy;/*** @author honey* @date 2023-07-27 21:10:30*/
public class SqlSession {public static <T> T getMapper(Class<T> type) {return new MapperProxy(type).getProxy();}
}

MybatisTest.java

package com.mybatis.test;import com.mybatis.mapper.UserMapper;
import com.mybatis.proxy.SqlSession;/*** @author honey* @date 2023-07-26 15:26:48*/
public class MybatisTest {public static void main(String[] args) {System.getProperties().put("sun.misc.ProxyGenerator.saveGeneratedFiles", "true");UserMapper userMapper = SqlSession.getMapper(UserMapper.class);int result = userMapper.insertUser();System.out.println(result);}
}

代碼測(cè)試

運(yùn)行MybatisTest類(lèi)

SqlSession.java

在這里插入圖片描述

MapperProxy.java

在這里插入圖片描述

MybatisTest.java

在這里插入圖片描述

MapperProxy.java

在這里插入圖片描述

MybatisTest.java

在這里插入圖片描述

運(yùn)行結(jié)果

在這里插入圖片描述

http://m.aloenet.com.cn/news/40011.html

相關(guān)文章:

  • 湘潭網(wǎng)站建站公司武漢seo結(jié)算
  • 淄博的大型網(wǎng)站建設(shè)怎樣做網(wǎng)站
  • 網(wǎng)站建設(shè)費(fèi)用能否計(jì)入開(kāi)辦費(fèi)百度論壇發(fā)帖
  • 新鄉(xiāng)市建設(shè)工程信息網(wǎng)seo工作內(nèi)容有哪些
  • 深圳網(wǎng)站制作工作室百度推廣介紹
  • 工業(yè)設(shè)計(jì)相關(guān)網(wǎng)站公司官網(wǎng)搭建
  • 站長(zhǎng)網(wǎng)站的優(yōu)勢(shì)百度網(wǎng)絡(luò)營(yíng)銷(xiāo)中心
  • 西安做網(wǎng)站電話(huà)百度一下你就知道網(wǎng)頁(yè)
  • 佛山新網(wǎng)站制作平臺(tái)鄭州seo優(yōu)化公司
  • 門(mén)戶(hù)網(wǎng)站解決方案蘇州seo建站
  • 臨淄網(wǎng)站建設(shè)公司網(wǎng)站推廣搜索
  • 麗江網(wǎng)站建設(shè)怎么自己創(chuàng)建一個(gè)網(wǎng)站
  • ppt做視頻 模板下載網(wǎng)站營(yíng)銷(xiāo)方式和渠道
  • 重慶網(wǎng)站建設(shè)合肥公司網(wǎng)站怎么宣傳
  • 做界面網(wǎng)站用什么語(yǔ)言seo教程
  • 青海住房與建設(shè)廳網(wǎng)站廣東網(wǎng)約車(chē)漲價(jià)
  • 用dw做淘客網(wǎng)站的步驟南京百度推廣開(kāi)戶(hù)
  • 工控做網(wǎng)站網(wǎng)站免費(fèi)軟件
  • 做企業(yè)網(wǎng)站注意些啥百度指數(shù)數(shù)據(jù)分析平臺(tái)官網(wǎng)
  • 專(zhuān)門(mén)做圖片的網(wǎng)站有哪些今日軍事新聞
  • 網(wǎng)站建設(shè)銷(xiāo)售實(shí)習(xí)服務(wù)營(yíng)銷(xiāo)策劃方案
  • php網(wǎng)站微信支付怎么做黃頁(yè)引流推廣網(wǎng)站
  • 網(wǎng)站圖片計(jì)時(shí)器怎么做國(guó)內(nèi)時(shí)事新聞
  • 網(wǎng)站建設(shè)昆明色盲
  • 怎么查看網(wǎng)站的友情鏈接外鏈發(fā)布工具
  • 哪家做網(wǎng)站公司好搜索大全引擎地址
  • 免費(fèi)視頻網(wǎng)站制作愛(ài)上鏈外鏈購(gòu)買(mǎi)平臺(tái)
  • 網(wǎng)站建設(shè)與維護(hù)模擬一新聞?lì)^條免費(fèi)下載安裝
  • 返利網(wǎng)站程序產(chǎn)品推廣
  • 北京網(wǎng)站制作西安西安網(wǎng)紅