国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【MyBatis】1、MyBatis 核心配置文件、多表查詢、實體映射文件 ......

這篇具有很好參考價值的文章主要介紹了【MyBatis】1、MyBatis 核心配置文件、多表查詢、實體映射文件 ......。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、學習內(nèi)容

  • SSM(Spring、SpringMVC、MyBatis)
  • Apache Shiro
  • SpringBoot

二、數(shù)據(jù)庫事務(wù)

  • 事務(wù):若將 N 個數(shù)據(jù)庫操作(CRUD)放到同一個事務(wù)中,則這 N 個數(shù)據(jù)庫操作最終要么全都生效,要么全都不生效

  • ?? 開啟事務(wù)【START TRANSACTION

  • ?? 回滾事務(wù):若事務(wù)中的某個數(shù)據(jù)庫操作失敗,其他所有數(shù)據(jù)庫操作都需要回滾(恢復到開啟事務(wù)之前的狀態(tài))【ROLLBACK

  • ?? 提交事務(wù):如果事務(wù)中的所有數(shù)據(jù)庫操作都成功被執(zhí)行,就提交事務(wù)(讓這些操作正式生效)【COMMIT

【MyBatis】1、MyBatis 核心配置文件、多表查詢、實體映射文件 ......

【MyBatis】1、MyBatis 核心配置文件、多表查詢、實體映射文件 ......

三、JDBC 的事務(wù)管理

?? JDBC 中用 Connection 對象來管理事務(wù)
?? connection.setAutoCommit(false):開啟事務(wù)(自己管理事務(wù))
?? connection.rollback():回滾事務(wù) (若執(zhí)行某條語句的過程中出現(xiàn)異常,之前執(zhí)行過的語句恢復到最初狀態(tài))
?? connection.commit()
提交事務(wù) (若所有語句都被正常執(zhí)行,沒有出現(xiàn)異常,會正常提交事務(wù),讓所有語句的修改都生效)

四、事務(wù)的四大特性

① 原子性(Atomicity)
?? 事務(wù)作為一個整體被執(zhí)行,包含在其中的對數(shù)據(jù)庫的操作要么全部被執(zhí)行,要么都不執(zhí)行

② 一致性(Consistency)
?? 事務(wù)應(yīng)確保數(shù)據(jù)庫的狀態(tài)從一個一致狀態(tài)轉(zhuǎn)變?yōu)榱硪粋€一致狀態(tài)。一致狀態(tài)的含義是:數(shù)據(jù)庫中的數(shù)據(jù)應(yīng)滿足完整性約束

③ 隔離性(Isolation)
?? 多個事務(wù)并發(fā)執(zhí)行時,一個事務(wù)的執(zhí)行不應(yīng)影響其他事務(wù)的執(zhí)行

④ 持久性(Durability)
?? 已被提交的事務(wù)對數(shù)據(jù)庫的修改應(yīng)該永久保存在數(shù)據(jù)庫中

五、MyBatis

  • MyBatis 是一款優(yōu)秀的持久層(Dao層)的框架

【MyBatis】1、MyBatis 核心配置文件、多表查詢、實體映射文件 ......

中文官網(wǎng):https://mybatis.org/mybatis-3/zh/index.html

六、MyBatis 核心配置文件和基本使用

(1) ?? 添加依賴(MyBatis 依賴喝 MySQL 數(shù)據(jù)庫連接驅(qū)動包)

 <dependencies>
     <!-- 引入 JDBC, Java 連接 MySQL 的驅(qū)動包 -->
     <dependency>
         <groupId>mysql</groupId>
         <artifactId>mysql-connector-java</artifactId>
         <version>5.1.49</version>
     </dependency>

     <!-- MyBatis 依賴 -->
     <dependency>
         <groupId>org.mybatis</groupId>
         <artifactId>mybatis</artifactId>
         <version>3.5.5</version>
     </dependency>
 </dependencies>

(2) ?? 創(chuàng)建 MyBatis 的核心配置文件(文件名:mybatis-config.xml

XML 配置文件中包含了對 MyBatis 系統(tǒng)的核心設(shè)置,包括獲取數(shù)據(jù)庫連接實例的數(shù)據(jù)源(DataSource)以及決定事務(wù)作用域和控制方式的事務(wù)管理器(TransactionManager)

官方核心配置文件:https://mybatis.org/mybatis-3/zh/getting-started.html

【MyBatis】1、MyBatis 核心配置文件、多表查詢、實體映射文件 ......【MyBatis】1、MyBatis 核心配置文件、多表查詢、實體映射文件 ......

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <!-- 環(huán)境 -->
    <!-- default:使用哪個環(huán)境下的數(shù)據(jù)庫配置 -->
    <environments default="development">
        <!-- 開發(fā)環(huán)境(開發(fā)調(diào)試階段)-->
        <environment id="development">
            <!-- 采用 JDBC 的事務(wù)管理方法 -->
            <transactionManager type="JDBC"/>
            <!-- POOLED:采取 MyBatis 的連接池管理數(shù)據(jù)庫連接 -->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/study_mb"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>

        <!-- 生產(chǎn)環(huán)境(發(fā)布階段)-->
        <environment id="production">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/test_mybatis"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
</configuration>

?? transactionManager 的 type 為 JDBC【采用 JDBC 方式來管理事務(wù)】
?? dataSource 的 type 為 POOLED【采用連接池的方式管理數(shù)據(jù)庫連接】

【MyBatis】1、MyBatis 核心配置文件、多表查詢、實體映射文件 ......
【MyBatis】1、MyBatis 核心配置文件、多表查詢、實體映射文件 ......


 CREATE TABLE `student` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(22) NOT NULL,
  `money` bigint(20) NOT NULL,
  `create_time` varchar(20) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4
public class Student {
    private Long id;
    private String name;
    private Long money;
    private String createTime;

    public String getCreateTime() {
        return createTime;
    }


    public void setCreateTime(String createTime) {
        this.createTime = createTime;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Long getMoney() {
        return money;
    }

    public void setMoney(Long money) {
        this.money = money;
    }

    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", money=" + money +
                ", createTime='" + createTime + '\'' +
                '}';
    }
}

七、查詢 student 表

(1) 實體映射文件 mapper

  • 實體映射文件
    ① 用于做實體類之間的映射
    ② 在 mapper 文件夾下創(chuàng)建
    【MyBatis】1、MyBatis 核心配置文件、多表查詢、實體映射文件 ......

  • 把映射文件的路徑配置到核心配置文件(mybatis-config.xml)中
    ① 在核心配置文件中可通過 <mappers></mappers> 標簽配置多個實體映射文件路徑
    ② 在 <mappers></mappers> 標簽中可配置多個 <mapper/> 標簽(每個 <mapper /> 標簽對應(yīng)一個實體映射文件)
    【MyBatis】1、MyBatis 核心配置文件、多表查詢、實體映射文件 ......

【MyBatis】1、MyBatis 核心配置文件、多表查詢、實體映射文件 ......
【MyBatis】1、MyBatis 核心配置文件、多表查詢、實體映射文件 ......

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="student">
    <!-- id="list":后面可通過 list 對應(yīng)該條 SQL 語句并執(zhí)行該條 SQL 語句 -->
    <!-- resultType: 該條 SQL 語句的結(jié)果對應(yīng)的 Java Bean -->
    <!-- 會自動將結(jié)果集映射為 List<Student> -->
    <select id="list" resultType="com.pojo.po.Student">
        SELECT * FROM student
    </select>
</mapper>

(2) 讀取核心配置文件, 拿到 SqlSession

public class TestStudent {
    @Test
    public void testSelect() throws Exception {
        // 讀取 MyBatis 的核心配置文件
        Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
        // 創(chuàng)建工廠構(gòu)建器
        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
        // 創(chuàng)建工廠
        SqlSessionFactory factory = builder.build(reader);
        // 創(chuàng)建 SqlSession
        SqlSession sqlSession = factory.openSession();

        // 通過 sqlSession 執(zhí)行 SQL 語句
        // 參數(shù)是 <mapper> 標簽中的 namespace 和 <select> 標簽的 id
        List<Student> studentList = sqlSession.selectList("student.list");

        for (Student student : studentList) {
            System.out.println("student = " + student);
        }
        
        // 關(guān)閉 session
        sqlSession.close();
    }
}

八、字段和屬性名映射

(1) mapUnderscoreToCamelCase

【MyBatis】1、MyBatis 核心配置文件、多表查詢、實體映射文件 ......

是否開啟駝峰命名自動映射,即從經(jīng)典數(shù)據(jù)庫列名 A_COLUMN 映射到經(jīng)典 Java 屬性名 aColumn

若不配置,數(shù)據(jù)庫表中以下劃線方式命名的字段查詢出的結(jié)果是 null

【MyBatis】1、MyBatis 核心配置文件、多表查詢、實體映射文件 ......

<configuration>
    <settings>
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>
</configuration>

?? 假如不設(shè)置駝峰下劃線自動映射,也可在實體映射文件中通過 <resultMap> 進行 Java Bean 和表字段的映射

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="student">
    <!-- id="list":后面可通過 list 對應(yīng)該條 SQL 語句并執(zhí)行該條 SQL 語句 -->
    <!-- resultType: 該條 SQL 語句的結(jié)果對應(yīng)的 Java Bean -->
    <!-- 會自動將結(jié)果集映射為 List<Student> -->
    <!--    <select id="list" resultType="com.pojo.po.Student">-->
    <!--        SELECT * FROM student-->
    <!--    </select>-->

    <resultMap id="resultMapStudent" type="com.pojo.po.Student">
        <!-- 屬性名和字段名完全一樣可不進行設(shè)置 -->
        <id property="id" column="id"/>
        <!--        <result property="id" column="id"/>-->
        <!--        <result property="name" column="name"/>-->
        <!--        <result property="money" column="money"/>-->
        <result property="createTime" column="create_time"/>
    </resultMap>

    <select id="list" resultMap="resultMapStudent">
        SELECT * FROM student
    </select>
</mapper>

(2) 完整的 settings 標簽配置

<settings>
  <setting name="cacheEnabled" value="true"/>
  <setting name="lazyLoadingEnabled" value="true"/>
  <setting name="aggressiveLazyLoading" value="true"/>
  <setting name="multipleResultSetsEnabled" value="true"/>
  <setting name="useColumnLabel" value="true"/>
  <setting name="useGeneratedKeys" value="false"/>
  <setting name="autoMappingBehavior" value="PARTIAL"/>
  <setting name="autoMappingUnknownColumnBehavior" value="WARNING"/>
  <setting name="defaultExecutorType" value="SIMPLE"/>
  <setting name="defaultStatementTimeout" value="25"/>
  <setting name="defaultFetchSize" value="100"/>
  <setting name="safeRowBoundsEnabled" value="false"/>
  <setting name="safeResultHandlerEnabled" value="true"/>
  <setting name="mapUnderscoreToCamelCase" value="false"/>
  <setting name="localCacheScope" value="SESSION"/>
  <setting name="jdbcTypeForNull" value="OTHER"/>
  <setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>
  <setting name="defaultScriptingLanguage" value="org.apache.ibatis.scripting.xmltags.XMLLanguageDriver"/>
  <setting name="defaultEnumTypeHandler" value="org.apache.ibatis.type.EnumTypeHandler"/>
  <setting name="callSettersOnNulls" value="false"/>
  <setting name="returnInstanceForEmptyRow" value="false"/>
  <setting name="logPrefix" value="exampleLogPreFix_"/>
  <setting name="logImpl" value="SLF4J | LOG4J | LOG4J2 | JDK_LOGGING | COMMONS_LOGGING | STDOUT_LOGGING | NO_LOGGING"/>
  <setting name="proxyFactory" value="CGLIB | JAVASSIST"/>
  <setting name="vfsImpl" value="org.mybatis.example.YourselfVfsImpl"/>
  <setting name="useActualParamName" value="true"/>
  <setting name="configurationFactory" value="org.mybatis.example.ConfigurationFactory"/>
</settings>

九、SqlSessionFactory 細節(jié)

?? SqlSessionFactory 一旦被創(chuàng)建就應(yīng)該在應(yīng)用的運行期間一直存在,沒有任何理由丟棄它或重新創(chuàng)建另一個實例。 使用 SqlSessionFactory 的最佳實踐是在應(yīng)用運行期間不要重復創(chuàng)建多次,多次重建 SqlSessionFactory 被視為一種代碼“壞習慣”。因此 SqlSessionFactory 的最佳作用域是應(yīng)用作用域。 有很多方法可以做到,最簡單的就是使用單例模式或者靜態(tài)單例模式。

【MyBatis】1、MyBatis 核心配置文件、多表查詢、實體映射文件 ......

【MyBatis】1、MyBatis 核心配置文件、多表查詢、實體映射文件 ......

/**
 * @author Larry Meadors
 */
public class SqlSessionManager implements SqlSessionFactory, SqlSession { 
    private final SqlSessionFactory sqlSessionFactory;

    // 構(gòu)造方法私有化
    private SqlSessionManager(SqlSessionFactory sqlSessionFactory) {
         
    }

    public static SqlSessionManager newInstance(Reader reader) {
        return new SqlSessionManager(new SqlSessionFactoryBuilder().build(reader, null, null));
    }

    public static SqlSessionManager newInstance(Reader reader, String environment) {
        return new SqlSessionManager(new SqlSessionFactoryBuilder().build(reader, environment, null));
    } 

    public static SqlSessionManager newInstance(SqlSessionFactory sqlSessionFactory) {
        return new SqlSessionManager(sqlSessionFactory);
    }

}

public class MyBatisUtil {
    // 保留一份即可
    private static SqlSessionFactory sqlSessionFactory;

    static {
        try (Reader reader = Resources.getResourceAsReader("mybatis-config.xml")) {
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 返回一個 SqlSession
     *
     * @param autoCommit 是否自動提交事務(wù)
     */
    public static SqlSession openSession(boolean autoCommit) {
        return sqlSessionFactory.openSession(autoCommit);
    }
}

靜態(tài)代碼塊只會在類加載時被執(zhí)行一次,與對象無關(guān)。靜態(tài)代碼塊使用 static 修飾,與對象無關(guān)

十、參數(shù)傳遞

(1) 參數(shù)占位符

${}:直接文本替換
#{}:預編譯傳值,可防止 SQL 注入

(2) 代碼測試

?? 傳遞單個參數(shù)

    /**
     * 傳遞單個參數(shù)
     */
    @Test
    public void testParam0() {
        try (SqlSession sqlSession = MyBatisUtil.openSession(true)) {
            Student studentById = sqlSession.selectOne("student.getById", 3);
            System.out.println("testParam0 studentById = " + studentById);
        }
    }
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="student"> 
    <select id="getById" resultType="com.pojo.po.Student">
        <!-- #{}: 參數(shù)占位符 -->
        SELECT * FROM student WHERE id = #{id}
    </select>
</mapper>

?? 多個參數(shù)的傳遞

public class TestStudent {

    /**
     * 傳遞多個參數(shù)
     */
    @Test
    public void testParam1() {
        try (SqlSession sqlSession = MyBatisUtil.openSession(true)) {
            Map<String, String> paramMap = new HashMap<>();
            paramMap.put("id", "3");
            paramMap.put("money", "7009900");

            List<Student> studentList = sqlSession.selectList("student.listByIdAndMoney", paramMap);
            for (Student student : studentList) {
                System.out.println("testParam1 student = " + student);
            }
        }
    }

    @Test
    public void testParam2() {
        try (SqlSession sqlSession = MyBatisUtil.openSession(true)) {
            Student studentParams = new Student();
            studentParams.setId(3L);
            studentParams.setMoney(7009900L);

            List<Student> studentList = sqlSession.selectList("student.listByIdAndMoney", studentParams);
            for (Student student : studentList) {
                System.out.println("testParam2 student = " + student);
            }
        }
    }
    
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="student">

    <select id="listByIdAndMoney" resultType="com.pojo.po.Student">
        <!-- &lt;【表示小于符號】 -->
        SELECT * FROM student WHERE id &lt; #{id} OR money >= #{money}
    </select>
    
</mapper>

【MyBatis】1、MyBatis 核心配置文件、多表查詢、實體映射文件 ......


模糊查詢

public class TestStudent {

    @Test
    public void testParam3() {
        try (SqlSession sqlSession = MyBatisUtil.openSession(true)) {

            List<Student> studentList = sqlSession.selectList("student.getByName", "%張%");
            for (Student student : studentList) {
                System.out.println("testParam3 student = " + student);
            }
        }
    }
    
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="student">
    <select id="getByName" resultType="com.pojo.po.Student">
        SELECT * FROM student WHERE name LIKE #{name}
    </select>
</mapper>

假如中文模糊查詢沒有結(jié)果,需要配置數(shù)據(jù)庫的字符編碼

【MyBatis】1、MyBatis 核心配置文件、多表查詢、實體映射文件 ......

十一、日志打印

?? (1) 在核心配置文件中配置打印日志

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>

    <settings>
        <!-- 打印日志信息 -->
        <setting name="logImpl" value="STDOUT_LOGGING"/>
    </settings>
    
</configuration>

?? (2) 第三方日志打印庫

<dependency>
  <groupId>ch.qos.logback</groupId>
  <artifactId>logback-classic</artifactId>
  <version>1.2.3</version>
  <scope>test</scope>
</dependency>

使用該第三方庫的話需要取消核心配置文件中的配置
【MyBatis】1、MyBatis 核心配置文件、多表查詢、實體映射文件 ......

十二、多表查詢

(1) 準備工作

--- 公司表
CREATE TABLE `company` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(20) NOT NULL,
  `intro` varchar(1000) DEFAULT NULL,
  `create_time` varchar(20) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4

--- 工作經(jīng)驗表
CREATE TABLE `experience` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `job` varchar(20) NOT NULL,
  `intro` varchar(1000) DEFAULT NULL,
  `company_id` int(11) NOT NULL,
  `create_time` varchar(20) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `company_id` (`company_id`),
  CONSTRAINT `experience_ibfk_1` FOREIGN KEY (`company_id`) REFERENCES `company` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4
public class Company {
    private Long id;
    private String name;
    private String intro;
    private String createTime;
 
    @Override
    public String toString() {
        return "Company{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", intro='" + intro + '\'' +
                '}';
    }
}
public class Experience {
    private Long id;
    private String job;
    private String intro;
    private Company company;
    private String createTime;

    @Override
    public String toString() {
        return "Experience{" +
                "id=" + id +
                ", job='" + job + '\'' +
                ", intro='" + intro + '\'' +
                ", company=" + company +
                ", createTime='" + createTime + '\'' +
                '}';
    }
}

(2) 多表查詢

查詢 experience 表,同時查詢出對應(yīng)的 company 信息

寫法1:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="experience">

    <resultMap id="rmExp" type="com.pojo.po.Experience">
        <!-- c_id 會和 Experience 的 company 屬性的 id 屬性進行映射 -->
        <!-- c_name 會和 Experience 的 company 屬性的 name 屬性進行映射 -->
        <result property="company.id" column="c_id"/>
        <result property="company.name" column="c_name"/>
    </resultMap>
    <select id="list" resultMap="rmExp">
        SELECT
        e.*,
        c.id c_id,
        c.NAME c_name
        FROM
        experience e
        JOIN company c ON c.id = e.company_id
    </select>

</mapper>

寫法2文章來源地址http://www.zghlxwxcb.cn/news/detail-474484.html

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="experience">

    <select id="list" resultType="com.pojo.po.Experience">
        SELECT
        e.*,
        c.id `company.id`,
        c.NAME `company.name`,
        c.intro `company.intro`
        FROM
        experience e
        JOIN company c ON c.id = e.company_id
    </select>

</mapper>

到了這里,關(guān)于【MyBatis】1、MyBatis 核心配置文件、多表查詢、實體映射文件 ......的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Mybatis——多表查詢

    Mybatis——多表查詢

    目錄 一、簡介 二、業(yè)務(wù)環(huán)境的準備 2.1、準備工作: 2.2、SQL 三、一對一和一對多 Sql語句: POJO ?OrderMapper OrderMapper.xml ?Test測試類 運行結(jié)果 MyBatis 是一個優(yōu)秀的持久層框架,它提供了強大的支持來執(zhí)行數(shù)據(jù)庫操作,包括多表查詢。多表查詢是指從多個數(shù)據(jù)庫表中檢索數(shù)據(jù)的過

    2024年02月02日
    瀏覽(18)
  • Mybatis核心配置文件介紹

    Mybatis核心配置文件介紹

    核心配置文件包含了 MyBatis 最核心的設(shè)置和屬性信息 properties標簽引入外部文件 具體使用,如下配置 ? typeAliases:為全類名起別名的父標簽。 typeAlias:為全類名起別名的子標簽。 屬性 type:指定全類名 alias:指定別名 package:為指定包下所有類起別名的子標簽。(別名就是類名

    2024年02月17日
    瀏覽(21)
  • mybatis核心配置文件解讀

    目錄 標簽具體含義? 數(shù)據(jù)源dataSource ?properties導入配置 配置文檔的頂層結(jié)構(gòu)如下(必須嚴格按照以下順序): configuration(配置) ? ? properties(屬性) ? ? settings(設(shè)置) ? ? typeAliases(類型別名) ? ? typeHandlers(類型處理器) ? ? objectFactory(對象工廠) ? ? plugins(插件

    2024年02月16日
    瀏覽(19)
  • MyBatis多表查詢和注解開發(fā)

    MyBatis多表查詢和注解開發(fā)

    一對一查詢的模型 用戶表和訂單表的關(guān)系為, 一個用戶有多個訂單,一個訂單只從屬于一個用戶 一對一查詢的需求:查詢一個訂單,與此同時查詢出該訂單所屬的用戶 一對一查詢的語句 對應(yīng)的sql語句: 查詢的結(jié)果如下: 創(chuàng)建Order和User實體 創(chuàng)建OrderMapper接口 配置OrderMappe

    2024年02月04日
    瀏覽(29)
  • MyBatis多表查詢+動態(tài)sql

    MyBatis多表查詢+動態(tài)sql

    在全局配置文件中中設(shè)置MyBatis執(zhí)行日志 假設(shè)有一個用戶表和文章表,實體類中一個關(guān)聯(lián)關(guān)系。 用戶實體類 文章實體類 如果想查詢的結(jié)果包含UserInfo的信息就需要使用,?對?映射要使? association 標簽,因為一篇文章只能對應(yīng)一個作者。 Controller控制器代碼 Service服務(wù)層代碼

    2023年04月19日
    瀏覽(28)
  • 【MyBatis框架】核心配置文件講解

    【MyBatis框架】核心配置文件講解

    14天閱讀挑戰(zhàn)賽 1. 引言 在MyBatis的核心配置中,包含了很多影響MyBatis行為的重要信息,這些信息通常在一個項目中只會在一個配置文件中編寫,并且編寫后也不會輕易改動。雖然在實際項目中需要開發(fā)人員編寫或修改的配置文件不多,但是熟悉配置文件中各個元素的功能還是

    2023年04月09日
    瀏覽(18)
  • 三、MyBatis核心配置文件詳解

    三、MyBatis核心配置文件詳解

    核心配置文件中的標簽必須按照固定的順序: properties?,settings?,typeAliases?,typeHandlers?,objectFactory?,objectWrapperFactory?,reflectorFactory?,plugins?,environments?,databaseIdProvider?,mappers? application.properties 詳情請看mybatis-config.xml配置文件 注意點1: 問題:mybatis-config.xml中的屬性標簽是有順序的,亂

    2024年02月01日
    瀏覽(22)
  • mybatis xml多表查詢,子查詢,連接查詢,動態(tài)sql

    mybatis xml多表查詢,子查詢,連接查詢,動態(tài)sql

    student_type 表 student 表 Student 類 一個學生只有一個年級 Type 類 一個年級有多個學生,所以用 list 下列代碼中: 1 resultMap 里面property對應(yīng)實體類屬性,column對應(yīng)數(shù)據(jù)庫字段名 2 主鍵用 id 標簽 其他用result 3 關(guān)聯(lián)查詢(子查詢和連接查詢) 連接查詢查一次 4 一個年級多個學生,所以

    2024年01月21日
    瀏覽(18)
  • MyBatis(多表查詢,動態(tài)SQL的使用)

    MyBatis(多表查詢,動態(tài)SQL的使用)

    目錄 多表查詢 ?查詢文章詳情 查詢一個用戶底下的所有文章 動態(tài)SQL的使用 if 標簽 trim 標簽 ?where 標簽 set 標簽 foreach 標簽 現(xiàn)在有倆張表,一張是 文章表 ,一張是 用戶表 .如下: 我們現(xiàn)在想查詢得到一張表,表里面的內(nèi)容和文章表大多一致,只是要 在文章表的基礎(chǔ)上添加用戶表中

    2024年02月10日
    瀏覽(23)
  • mybatis學習筆記之核心配置文件詳解

    environments/environments 表示的是里面能配置多個環(huán)境 environment /environment 表示其中的一個環(huán)境 而如上的核心配置文件中的那個唯一環(huán)境表示的是連接的數(shù)據(jù)庫是demo,可以后面再配置一個文件去連接另一個數(shù)據(jù)庫。(一個環(huán)境對應(yīng)一個數(shù)據(jù)庫,而一個數(shù)據(jù)庫對應(yīng)一個SqlSessionFacto

    2024年02月16日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包