1、新建java project,導入相應jar包
本次使用到的mybatis-3.2.7版本
mybatis需要jar包:mybatis-3.2.7.jar、lib文件下的依賴jar
mysql驅動jar包:mysql-connector-java-5.1.7.-bin.jar

2、創建數據庫
數據庫名:mybatis
數據表:user

3、配置mybaits核心配置文件SqlMapConfig.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> <!-- 和spring整合后 environments配置將廢除--> <environments default="development"> <environment id="development"> <!-- type="JDBC" 代表使用JDBC的提交和回滾來管理事務 --> <transactionManager type="JDBC" /> <!-- mybatis提供了3種數據源類型,分別是:POOLED,UNPOOLED,JNDI --> <!-- POOLED 表示支持JDBC數據源連接池 --> <!-- UNPOOLED 表示不支持數據源連接池 --> <!-- JNDI 表示支持外部數據源連接池 --> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8" /> <property name="username" value="root" /> <property name="password" value="mysqladmin" /> </dataSource> </environment> </environments> <mappers> <mapper resource="User.xml"/> </mappers> </configuration>
SqlMapConfig.xml放入項目中config源文件下

4、創建對應數據表的java實體類
User.java
package cn.itheima.pojo; import java.util.Date; public class User { private int id; private String username;// 用戶姓名 private String sex;// 性別 private Date birthday;// 生日 private String address;// 地址 public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } @Override public String toString() { return "User [id=" + id + ", username=" + username + ", sex=" + sex + ", birthday=" + birthday + ", address=" + address + "]"; } }
5、創建對應的映射文件
User.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"> <!-- namespace:命名空間,做sql隔離 --> <mapper namespace="test"> <!-- id:sql語句唯一標識 parameterType:指定傳入參數類型(pojo類中對應的類型,不是數據庫中的類型) resultType:返回結果集類型 #{}:占位符,如果傳入的類型是基本類型(string,long,double,int,boolean,float等),那么#{}中變量名稱可以任意 --> <select id="findUserById" parameterType="java.lang.Integer" resultType="cn.itheima.pojo.User"> SELECT * FROM user WHERE id=#{id} </select> <!-- 如果返回的結果為集合,resultType中也是配置為集合中泛型的類型,即resultType="cn.itheima.pojo.User" ${}:拼接符,如果傳入的類型是基本類型(string,long,double,int,boolean,float等),那么${}中變量名稱必須是value --> <select id="findUserByUserName" parameterType="java.lang.String" resultType="cn.itheima.pojo.User"> SELECT * FROM user WHERE username LIKE '%${value}%' </select> <!-- 如果傳入的是pojo類型,則#{}中變量名稱必須是pojo中對應的屬性.屬性.屬性...... 如果要返回數據庫自增主鍵,可以使用SELECT LAST_INSERT_ID() --> <insert id="insertUser" parameterType="cn.itheima.pojo.User"> <!-- 執行SELECT LAST_INSERT_ID()數據庫函數,返回自增的主鍵 keyProperty:將返回的主鍵放入傳入的參數的Id中保存(保存到user對象中的id屬性) order:當前函數相對於insert語句的執行順序,在insert前執行用BEFORE,在insert后執行用AFTER resultType:id的類型,也就是keyProperty中屬性類型 --> <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer"> SELECT LAST_INSERT_ID() </selectKey> INSERT INTO user (username,birthday,sex,address) VALUES (#{username},#{birthday},#{sex},#{address}) </insert> <delete id="deleteUserById" parameterType="java.lang.Integer"> DELETE FROM user WHERE id=#{id} </delete> <update id="updateUserById" parameterType="cn.itheima.pojo.User"> UPDATE user SET username=#{username} WHERE id=#{id} </update> </mapper>
二、測試
package mybatis0523; import java.io.InputStream; import java.util.Date; import java.util.List; 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 org.junit.Test; import cn.itheima.pojo.User; public class UserTest { @Test public void testFindUserById() throws Exception { String resource = "SqlMapConfig.xml"; // 通過流將核心配置文件讀取進來 InputStream inputStream = Resources.getResourceAsStream(resource); // 通過核心配置文件創建會話工廠 SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream); // 通過會話工廠創建會話 SqlSession session = factory.openSession(); User user = session.selectOne("test.findUserById", 1); System.out.println(user); } @Test public void testFindUserByUserName() throws Exception { String resource = "SqlMapConfig.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream); SqlSession session = factory.openSession(); List<User> list = session.selectList("test.findUserByUserName", "王"); System.out.println(list); } @Test public void testInsertUser() throws Exception { String resource = "SqlMapConfig.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream); SqlSession session = factory.openSession(); User user = new User(); user.setUsername("趙四"); user.setBirthday(new Date()); user.setSex("1"); user.setAddress("北京昌平"); System.out.println(user.getId()); session.insert("test.insertUser", user); // mybatis中事務默認是開啟的,所以在mybatis中不需要顯式開啟事務,只需要顯式提交事務 // 提交事務 session.commit(); System.out.println(user.getId()); } @Test public void testDeleteUserById() throws Exception { String resource = "SqlMapConfig.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream); SqlSession session = factory.openSession(); session.delete("test.deleteUserById", 27); session.commit(); } @Test public void testUpdateUserById() throws Exception { String resource = "SqlMapConfig.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream); SqlSession session = factory.openSession(); User user = new User(); user.setUsername("趙四"); user.setId(24); session.update("test.updateUserById", user); session.commit(); } }
簡單的mybatis環境搭建和測試已完成,整個目錄結構如下

