- 項目結構
基礎入門可參考:mybatis學習筆記(一)-- 簡單入門(附測試Demo詳細過程)
- 開始體驗
1、新建項目,新建類MybatisUtil.java,路徑:src/util/MybatisUtil.java
package util; import java.io.InputStream; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; public class MybatisUtil { /** * 獲取SqlSessionFactory * @return SqlSessionFactory */ public static SqlSessionFactory getSqlSessionFactory() { String resource = "conf.xml"; InputStream is = MybatisUtil.class.getClassLoader().getResourceAsStream(resource); SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is); return factory; } /** * 獲取SqlSession * @return SqlSession */ public static SqlSession getSqlSession() { return getSqlSessionFactory().openSession(); } /** * 獲取SqlSession * @param isAutoCommit * true 表示創建的SqlSession對象在執行完SQL之后會自動提交事務 * false 表示創建的SqlSession對象在執行完SQL之后不會自動提交事務,這時就需要我們手動調用sqlSession.commit()提交事務 * @return SqlSession */ public static SqlSession getSqlSession(boolean isAutoCommit) { return getSqlSessionFactory().openSession(isAutoCommit); } }
2、編寫用戶實體類User.java,路徑:src/main/User.java
package main; public class User { private int id; private String name; private int age; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
3、編寫mapper,以“新增用戶”為示范案例
(1)基於xml實現,定義操作用戶表的sql映射文件UserMapper.xml,路徑:src/mapper/UserMapper.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="mapper.UserMapper"> <!-- 新增用戶 --> <insert id="addUser" parameterType="main.User"> insert into tb_user(name,age) values(#{name},#{age}) </insert> </mapper>
(2)基於注解實現,定義sql映射的接口,使用注解指明方法要執行的SQL,新建UserMapperI.java,路徑:src/mapper/UserMapperI.java
package mapper; import java.util.List; import main.User; import org.apache.ibatis.annotations.Delete; import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Update; public interface UserMapperI { //使用@Insert注解指明add方法要執行的SQL @Insert("insert into tb_user(name, age) values(#{name}, #{age})") public int add(User user); }
4、添加配置文件,新建conf.xml文件,路徑:src/conf.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"> <transactionManager type="JDBC" /> <!-- 配置數據庫連接信息 --> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/test" /> <property name="username" value="root" /> <property name="password" value="123456" /> </dataSource> </environment> </environments> <mappers> <!-- 注冊userMapper.xml文件(基於xml實現)--> <mapper resource="mapper/userMapper.xml"/> <!-- 注冊UserMapper映射接口(基於注解實現)--> <mapper class="mapper.UserMapperI"/> </mappers> </configuration>
5、編寫測試函數
(1)測試基於xml實現
public static void testAddByXmlMapper(){ //SqlSession sqlSession = MyBatisUtil.getSqlSession(false); SqlSession sqlSession = MybatisUtil.getSqlSession(true); String statement = "mapper.UserMapper.addUser";//映射sql的標識字符串 User user = new User(); user.setName("lucy"); user.setAge(22); //執行插入操作 int retResult = sqlSession.insert(statement,user); //手動提交事務 //sqlSession.commit(); //使用SqlSession執行完SQL之后需要關閉SqlSession sqlSession.close(); System.out.println(retResult); }
* 注解:
SqlSession sqlSession = MybatisUtil.getSqlSession(true);
true 表示創建的SqlSession對象在執行完SQL之后會自動提交事務
false 表示創建的SqlSession對象在執行完SQL之后不會自動提交事務,這時就需要我們手動調用sqlSession.commit()提交事務
(2)測試基於注解實現
public void testAddByAnnotationMapper() { SqlSession sqlSession = MybatisUtil.getSqlSession(true); // 得到UserMapperI接口的實現類對象,UserMapperI接口的實現類對象由sqlSession.getMapper(UserMapperI.class)動態構建出來 UserMapperI mapper = sqlSession.getMapper(UserMapperI.class); User user = new User(); user.setName("tom"); user.setAge(20); int add = mapper.add(user); // 使用SqlSession執行完SQL之后需要關閉SqlSession sqlSession.close(); System.out.println(add); }
到此結束~ (@_@)以上...