日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MyBatis源码- SqlSession门面模式 selectList 源码解析

發(fā)布時間:2025/3/21 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MyBatis源码- SqlSession门面模式 selectList 源码解析 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

  • Pre
  • 工程概覽
  • pom.xml
  • mybatis-config.xml
  • UserMapper
  • 測試類
  • selectList 源碼解析
    • SQL
    • log4j.properties
    • app.properties
    • User

Pre

如果MyBatis的基礎(chǔ)用法還不熟悉,31篇入門博客拿走不謝

戳戳戳 —> https://blog.csdn.net/yangshangwei/category_7205317.html


工程概覽


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.artisan</groupId><artifactId>mybatisSource</artifactId><version>1.0-SNAPSHOT</version><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.17</version><scope>runtime</scope></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.1</version></dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency></dependencies><build><resources><resource><directory>src/main/java</directory><includes><include>**/*.xml</include></includes><filtering>true</filtering></resource><resource><directory>src/test/java</directory><includes><include>**/*.xml</include></includes><filtering>true</filtering></resource></resources></build></project>

mybatis-config.xml

<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration><properties resource="app.properties"></properties><settings><setting name="mapUnderscoreToCamelCase" value="true"/></settings><typeAliases></typeAliases><environments default="dev"><environment id="dev"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="${jdbc.driver}"/><property name="url" value="${jdbc.url}"/><property name="username" value="${jdbc.username}"/><property name="password" value="${jdbc.password}"/></dataSource></environment></environments><mappers><package name="com.artisan"/></mappers> </configuration>

UserMapper

package com.artisan;import com.artisan.bean.User; import org.apache.ibatis.annotations.Select;public interface UserMapper {@Select({"select * from users where id = #{id}"})User selectByid(Integer id); }

測試類

基類

import org.apache.ibatis.session.Configuration; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.junit.Before;/*** 基類*/ public class BaseTest {public SqlSessionFactory factory;public Configuration configuration; @Beforepublic void inin(){// 獲取構(gòu)建器SqlSessionFactoryBuilder factoryBuilder = new SqlSessionFactoryBuilder();// 解析xml ,構(gòu)建會話工廠factory = factoryBuilder.build(SqlSessionTest.class.getResourceAsStream("/mybatis-config.xml"));// 獲取 configuration 這個大管家configuration = factory.getConfiguration();} }

SqlSessionTest 測試類

package com.artisan;import com.artisan.bean.User; import org.apache.ibatis.mapping.MappedStatement; import org.apache.ibatis.session.ExecutorType; import org.apache.ibatis.session.SqlSession; import org.junit.Test;import java.util.List;public class SqlSessionTest extends BaseTest{private MappedStatement ms;@Testpublic void sqlSessionTest(){// 獲取statement SQL映射ms = configuration.getMappedStatement("com.artisan.UserMapper.selectByid");// 開啟會話 第一個參數(shù) 執(zhí)行器類型 第二個參數(shù) 是否自動提交SqlSession sqlSession = factory.openSession(ExecutorType.SIMPLE, true);// 門面模式 屏蔽了底層調(diào)用的復(fù)雜用 統(tǒng)一對接sqlSessionList<User> users = sqlSession.selectList(ms.getId(), 1);System.out.println(users.get(0));} }

測試結(jié)果:


selectList 源碼解析


SQL

/* Navicat MySQL Data TransferSource Server : localhost_root Source Server Version : 80011 Source Host : 127.0.0.1:3306 Source Database : artisanTarget Server Type : MYSQL Target Server Version : 80011 File Encoding : 65001Date: 2020-06-14 00:46:05 */SET FOREIGN_KEY_CHECKS=0;-- ---------------------------- -- Table structure for `users` -- ---------------------------- DROP TABLE IF EXISTS `users`; CREATE TABLE `users` (`id` int(11) NOT NULL,`name` varchar(255) DEFAULT NULL,`age` varchar(255) DEFAULT NULL,`sex` varchar(255) DEFAULT NULL,`email` varchar(255) DEFAULT NULL,`phoneNumber` varchar(255) DEFAULT NULL,`createTime` date DEFAULT NULL,PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ---------------------------- -- Records of users -- ---------------------------- INSERT INTO `users` VALUES ('1', 'artisan', '11', 'male', '123@qq.com', '12345', '2020-06-04');

log4j.properties

### set log levels ### log4j.rootLogger = DEBUG ,stdout### log4j.appender.stdout = org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target = System.out log4j.appender.stdout.layout = org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern = %d{ABSOLUTE} %5p %c:%L - %m%n

app.properties

jdbc.driver=com.mysql.cj.jdbc.Driver jdbc.url=jdbc:mysql://127.0.0.1:3306/artisan?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT jdbc.username=root jdbc.password=root default.environment=dev

User

package com.artisan.bean;import java.util.Date;public class User implements java.io.Serializable {private Integer id;private String name;private String age;private String sex;private String email;private String phoneNumber;private Date createTime;public User() {}public User(Integer id, String name) {this.id = id;this.name = name;}....省略 set/get .... }

總結(jié)

以上是生活随笔為你收集整理的MyBatis源码- SqlSession门面模式 selectList 源码解析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。