這篇主要寫配置文件的優化,例如 jdbc.properties 配置文件 ,引入資料庫的文件,例如driver,url,username,password 等,然後在 SqlMapConfig.xml 裡面引入相對應的文件即可,可以簡化配置文件, 在 SqlMapConfig.xml 用 <type ...
這篇主要寫配置文件的優化,例如 jdbc.properties 配置文件 ,引入資料庫的文件,例如driver,url,username,password 等,然後在 SqlMapConfig.xml 裡面引入相對應的文件即可,可以簡化配置文件, 在 SqlMapConfig.xml 用 <typeAliases> <typeAlias type="bean.Userinfo" alias="User"/> </typeAliases> 為包起別名 。然後封裝 SqlSessionFactory 文件,因為這樣寫可以簡化在測試類中每次都載入配置文件的操作。還有就是基於註解的方式 ,在介面 中寫對應的增刪改查的方法,然後@select ,@insert @delete @update 寫對應的SQL,最後在SqlMapConfig.xml 裡面添加<mappers> <mapper class="Mapper.UserinfoMapper"/> </mappers> 基本上就可以大功告成了, 最後可能出現的問題是在bean裡面重寫toString 方法,否則在控制台會把記憶體地址輸出出來。
1 package TEST; 2 3 import org.apache.ibatis.session.SqlSession; 4 import org.junit.Test; 5 6 import bean.Userinfo; 7 8 import Mapper.UserinfoMapper; 9 import Tools.Util; 10 11 public class Demo { 12 13 14 //根據ID查詢用戶 15 @Test 16 public void findbyuserinfoID() throws Throwable{ 17 System.out.println("基於註解的方式查詢ID"); 18 // TODO Auto-generated method stub 19 SqlSession sqlSession = Util.getSqlSession(); 20 21 //得到UserMapperI介面的實現類對象,UserMapperI介面的實現類對象由sqlSession.getMapper(UserMapperI.class)動態構建出來 22 UserinfoMapper mapper = sqlSession.getMapper(UserinfoMapper.class); 23 //執行查詢操作,將查詢結果自動封裝成User返回 24 Userinfo userinfo = mapper.getById(5); 25 //使用SqlSession執行完SQL之後需要關閉SqlSession 26 sqlSession.close(); 27 System.out.println(userinfo); 28 } 29 30 @Test 31 public void addUser() throws Throwable{ 32 System.out.println("基於註解的方式查詢ID"); 33 // TODO Auto-generated method stub 34 SqlSession sqlSession = Util.getSqlSession(true); 35 36 //得到UserMapperI介面的實現類對象,UserMapperI介面的實現類對象由sqlSession.getMapper(UserMapperI.class)動態構建出來 37 UserinfoMapper mapper = sqlSession.getMapper(UserinfoMapper.class); 38 //執行查詢操作,將查詢結果自動封裝成User返回 39 Userinfo userinfo = new Userinfo(); 40 userinfo.setUname("楚雲飛"); 41 userinfo.setUpass("123"); 42 userinfo.setId(3); 43 int adduser = mapper.addUser(userinfo); 44 //使用SqlSession執行完SQL之後需要關閉SqlSession 45 sqlSession.close(); 46 System.out.println(adduser); 47 } 48 49 }
1 package bean; 2 3 public class Userinfo { 4 5 private String uname; 6 7 private String upass; 8 9 public int id; 10 11 public int getId() { 12 return id; 13 } 14 15 public void setId(int id) { 16 this.id = id; 17 } 18 19 public String getUname() { 20 return uname; 21 } 22 23 public void setUname(String uname) { 24 this.uname = uname; 25 } 26 27 public String getUpass() { 28 return upass; 29 } 30 31 public void setUpass(String upass) { 32 this.upass = upass; 33 } 34 35 @Override 36 public String toString() { 37 return "User [id=" + id + ", name=" +uname + ", upass=" + upass + "]"; 38 } 39 40 }
1 package Mapper; 2 3 import org.apache.ibatis.annotations.Insert; 4 import org.apache.ibatis.annotations.Select; 5 6 import bean.Userinfo; 7 8 public interface UserinfoMapper { 9 @Select("select * from Userinfo where id=#{id}") 10 public Userinfo getById(int id); 11 @Insert("insert into userinfo(uname,upass,id) values(#{uname},#{upass},#{id})") 12 public int addUser(Userinfo userinfo); 13 }
package Tools; import java.io.InputStream; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; public class Util { /** * 獲取SqlSessionFactory * @return SqlSessionFactory */ public static SqlSessionFactory getSqlSessionFactory() { String resource = "SqlMapConfig.xml"; InputStream is = Util.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); } }
jdbc.properties 配置文件
1 jdbc.driver=oracle.jdbc.driver.OracleDriver 2 jdbc.url=jdbc:oracle:thin:@localhost:1521:orcl 3 jdbc.username=scott 4 jdbc.password=tiger
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 3 "http://mybatis.org/dtd/mybatis-3-config.dtd"> 4 <configuration> 5 6 <properties resource="jdbc.properties"></properties> 7 <!-- 自定義別名(如果在配置文件的過程中發現別名報錯,可能是位置順序有問題) --> 8 <typeAliases> 9 <typeAlias type="bean.Userinfo" alias="User"/> 10 </typeAliases> 11 <environments default="development"> 12 <environment id="development"> 13 <transactionManager type="JDBC" /> 14 <dataSource type="POOLED"> 15 <property name="driver" value="${jdbc.driver}"/> 16 <property name="url" value="${jdbc.url}"/> 17 <property name="username" value="${jdbc.username}" /> 18 <property name="password" value="${jdbc.password}" /> 19 </dataSource> 20 </environment> 21 </environments> 22 23 <!-- 讀取Mapper包下的UserinfoMapper文件 --> 24 <mappers> 25 <mapper class="Mapper.UserinfoMapper"/> 26 </mappers> 27 </configuration>
最後,所有的文件都是經過測試的,可複製,可粘貼。接下來會寫動態sql,以及關聯查詢等,敬請期待!