最近打算學習ssm框架 Mybatis 作為入門的第一個持久層框架,學習起來實在費勁。故寫此文章作為入門案例。
先打開 IDEA建立一個Maven項目,目錄結構如下:
源代碼已經上傳至GitHub https://github.com/Wo-com/mybatis_demo,需要的點擊下載
接下來說幾個要點吧:
1、用mysql創建test數據庫,添加一張user表,字段如下:
2、編輯 pom.xml 文件導入 jar包

<?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.cnetopro</groupId> <artifactId>mybatis_mysql</artifactId> <version>1.0</version> <packaging>jar</packaging> <dependencies> <!-- 使用mybatis 導入前兩個就行了--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.2</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.17</version> </dependency> <!--單元測試--> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> </dependencies> </project>
3、創建 User實體類 和 IUserDao接口
User實體類對於的是數據庫的字段,然后添加Setter和Getter方法和toString方法

package com.cnetopro.domain; import java.io.Serializable; public class User implements Serializable { private Integer id; private String name; private Integer age; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } @Override public String toString() { return "User{" + "id=" + id + ", name='" + name + '\'' + ", age=" + age + '}'; } }
IUserDao接口里面有一個查詢查詢方法

package com.cnetopro.dao; import com.cnetopro.domain.User; import java.util.List; /** * * 用戶持久層接口 * * */ public interface IUserDao { /** * 查詢所有 * */ List<User>findAll(); }
4、創建 IUserMapper.xml 里面寫sql語句

<?xml version="1.0" encoding="UTF-8" ?> <!-- mapper 約束--> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!--namespace 寫的是 dao權限類名--> <mapper namespace="com.cnetopro.dao.IUserDao"> <!--配置查詢所有--> <select id="findAll" resultType="com.cnetopro.domain.User"> select * from user </select> </mapper>
5、創建 SqlMapConfig.xml 配置數據庫驅動,映射Mapper文件

<?xml version="1.0" encoding="UTF-8" ?> <!-- configuration 約束--> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <!--mybatis的主配置文件--> <configuration> <!-- 配置環境 --> <environments default="mysql"> <!--配置mysql環境--> <environment id="mysql"> <!-- 配置事務類型 --> <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"/> <property name="username" value="root"/> <property name="password" value="zgx1734475W"/> </dataSource> </environment> </environments> <!--指定映射配置文件的位置,映射配置文件指的是每個dao配置的文件--> <mappers> <!-- 使用的是xml--> <mapper resource="com/cnetopro/dao/IUserMapper.xml"/> <!-- <mapper class="com.cnetopro.dao.IUserMapper"/> <!–使用的是注解 annotations–>--> </mappers> </configuration>
6、創建測試類 MybatisTest.java

package com.cnetopro.test; import com.cnetopro.dao.IUserDao; import com.cnetopro.domain.User; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import java.io.InputStream; import java.util.List; /** * */ public class MybatisTest { public static void main(String[] args) throws Exception { //1.讀取配置文件 InputStream inputStream = Resources.getResourceAsStream("SqlMapConfig.xml"); //2.創建SqlSessionFactory工廠 SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder(); SqlSessionFactory factory = builder.build(inputStream); //3.使用工廠創建SqlSession SqlSession session =factory.openSession(); //4.使用SqlSession創建dao接口的代理對象 IUserDao userDao =session.getMapper(IUserDao.class); //5.使用代理對象的方法 List<User> users = userDao.findAll(); for (User user:users ) { System.out.println(user); } //6.釋放資源 session.close(); inputStream.close(); } }
運行測試類效果如下: