1. 程式人生 > 其它 >MyBatis原生介面開發模式

MyBatis原生介面開發模式

一、mybatis的兩種開發方式

  1. 使用原生介面
  2. Mapper代理實現自定義介面

二、使用原生介面開發

  1. 在資料庫Test下新建表

    SET NAMES utf8mb4;
    SET FOREIGN_KEY_CHECKS = 0;
    
    -- ----------------------------
    -- Table structure for t_account
    -- ----------------------------
    DROP TABLE IF EXISTS `t_account`;
    CREATE TABLE `t_account`  (
      `id` int(0) NOT NULL AUTO_INCREMENT,
      `username` varchar(11) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
      `password` varchar(11) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
      `age` int(0) NULL DEFAULT NULL,
      PRIMARY KEY (`id`) USING BTREE
    ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
    
    SET FOREIGN_KEY_CHECKS = 1;
    
  2. 在Idea中新建普通maven工程,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>org.simon</groupId>
        <artifactId>app</artifactId>
        <version>1.0-SNAPSHOT</version>
    
        <properties>
            <simon.version>1.0.0</simon.version>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
            <maven.compiler.source>8</maven.compiler.source>
            <maven.compiler.target>8</maven.compiler.target>
    
            <mybatis.version>3.5.7</mybatis.version>
            <mysql-jdbc.verison>8.0.26</mysql-jdbc.verison>
            <lombok.version>1.18.20</lombok.version>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>${mybatis.version}</version>
            </dependency>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>${mysql-jdbc.verison}</version>
            </dependency>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>${lombok.version}</version>
                <scope>provided</scope>
            </dependency>
        </dependencies>
        <!--通常情況下,mybatis只能讀取resources下的xml檔案,為了能讀取java下的xml檔案,做如下配置-->
        <build>
            <resources>
                <resource>
                    <directory>src/main/java</directory>
                    <includes>
                        <include>**/*.xml</include>
                    </includes>
                </resource>
            </resources>
        </build>
    
    
    </project>
    
  3. 新建實體類Account

    package com.simon.app.entity;
    import lombok.AllArgsConstructor;
    import lombok.Data;
    
    @Data
    @AllArgsConstructor
    public class Account {
        private int id;
        private String username;
        private String password;
        private int age;
    }
    
    

​ @AllArgsConstructor註解自動生成以所有屬性作為引數的建構函式

  1. 在resources目錄下建立mybatis配置檔案config.xml,該檔名任意

    <?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>
        <environments default="development">
            <environment id="development">
                <!--配置jdbc事務管理-->
                <transactionManager type="JDBC"></transactionManager>
                <dataSource type="POOLED">
                  <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                  <property name="url" value="jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=UTF-8"/>
                  <property name="username" value="root"/>
                  <property name="password" value="root"/>
                </dataSource>
            </environment>
        </environments>
        <mappers>
            <mapper resource="com/simon/app/mapper/AccountMapper.xml"></mapper>
        </mappers>
    </configuration>
    
  2. 建立mapper對映檔案AccountMapper.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="com.simon.app.mapper.AccountMapper">
        <insert id="save" parameterType="com.simon.app.entity.Account">
            insert into t_account(username,password,age) values (#{username},#{password},#{age})
        </insert>
    </mapper>
    
    • namespace的值為對映檔案的全路徑名去掉xml副檔名
    • insert中的id就是對外提供呼叫的方法名
  3. 測試程式碼

    package com.simon.app.test;
    
    import com.simon.app.entity.Account;
    import org.apache.ibatis.session.SqlSession;
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    
    import java.io.InputStream;
    
    public class Test {
        public static void main(String[] args) {
            InputStream resource = Test.class.getClassLoader().getResourceAsStream("config.xml");
            SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
            SqlSessionFactory sessionFactory = sqlSessionFactoryBuilder.build(resource);
            SqlSession sqlSession = sessionFactory.openSession();
            String statement="com.simon.app.mapper.AccountMapper.save";
    
            Account account=new Account(1,"simon","111111",20);
            sqlSession.insert(statement,account);
            sqlSession.commit();
        }
    }