MyBatis原生介面開發模式
阿新 • • 發佈:2021-09-29
一、mybatis的兩種開發方式
- 使用原生介面
- Mapper代理實現自定義介面
二、使用原生介面開發
-
在資料庫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;
-
在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>
-
新建實體類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註解自動生成以所有屬性作為引數的建構函式
-
在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&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>
-
建立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就是對外提供呼叫的方法名
-
測試程式碼
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(); } }