主要搭建過程
1。 pom.xml文件中加入mybatis和數據庫依賴,mysql:
<properies> <mybatis.version> 3.2.3 </mymbatis.version> <mysql.version> 5.1.26 </mysql.version> <slf4j.api.version> 1.7.5 </slf4j.api.version> </slf4j.api.version> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>${mybatis.version}</version> </dependency> <!-- Database driver --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <版本> $ {mysql.version} </version> </dependency> <! - mybatis啟動要加載log4j-> <dependency> <groupId> org.slf4j </groupId> <ARTIFACTID> slf4j-log4j-log4j12 </atrifactid> <dependency> <groupId> org.testng </groupId> <artifactid> testng </artifactid> <版本> $ {testng.version} </version>
2。 Mybatis的配置文件configuration.xml
<? xml版本=“ 1.0”編碼=“ utf-8”? > <! doctype配置公開“ - // mybatis.org//dtd config 3.0 // en”“ http://mybatis.org/dtd/dtd/mybatis-batis-batis-3-3-config.dtd”> <!類型=“ value =“ jdbc:mysql:// localhost:3306/hbatis”/> <屬性名稱=“ username” value =“ root”/> <propert name =“ password” value =“ 123456”/> </> </dataSource> </dataSource> </dataSource> </dataSource> </datement> </vocress> </emovention> </emovents> <mappers> <mappers> <mappers> <mmappers> <mmappers> <! /> </mappers> </configuration>
3。 SQL:
- 創建名為“ HBATIS”的數據庫。 - 可以使用``使用''或“圍繞數據庫名稱的使用'或“不可行”,以防止其解釋為關鍵字。 int(11)默認為null,`drackchar(200)默認null,主鍵(`iD`))引擎= innodb auto_increment = 2默認charset = utf8;
4。
公共類用戶{private int ID;私有字符串名稱;私人弦樂時代;私人字符串地址; //省略// getters和setter //如果有帶參數的構造器,編譯器不會自動生成無參構造器。當查詢需要返回對象時,orm框架用反射來調用對象的無參構造函數,導致異常: this.address =地址; } public用戶(字符串名稱,int age,string地址){this.name = name; this.age = age; this.address =地址; }}}com/john/hbatis/型號路徑下的user.xml
<? xml版本=“ 1.0”編碼=“ utf-8”? > <! doctype mapper public“ - // mybatis.org//dtd mapper 3.0 // en”“ http://mybatis.org/mybatis.org/dtd/dtd/dtd/mybatis-3-mmybatis-3-mapper.dtd namespace =“ com.john.hbatis.model.usermapper”> <select ID =“ getUserbyId” parametertype =“ int” rescomeType =“ user”> selese
5。測試類:
公共類mybatisbasictest {private static final logger log = loggerfactory.getlogger(mybatisbasictest.class);私人靜態sqlsessionFactory sqlsessionFactory;私人靜態閱讀器; @beforeclass public static void indition(){try {reader = resources.getResourCeasReader(“ configuration.xml”); sqlSessionFactory = new SqlSessionFactoryBuilder()。 build(reader); } catch(ioexception e){log.error(“讀取配置時丟棄錯誤:{}”,e); }最後{if(reader!= null){try {reader.close(); } catch(ioexception e){log.error(“關閉讀取器時丟棄錯誤:{}”,e); }}}} @test public void queryTest(){sqlsession session = sqlsessionfactory.opensession();用戶用戶=(用戶)session.selectone(“ com.john.hbatis.model.usermapper.getuserbyid”,1); log.info(“ {}:{}”,user.getName(),user.getAddress()); }}}以接口方式交互數據
上面的環境搭建是採用sqlsession的通用方法並強制轉換的方式,存在著轉換安全的問題::
用戶用戶=(用戶)session.selectone(“ com.john.hbatis.model.usermapper.getuserbyid”,1);
SQL語句的方式來解決,SQL語句理解為是接口的實現::
1。新建接口類:
包com.john.hbatis.mapper;導入com.john.hbatis.model.user; public Interface iusermapper {user getUserById(int id); } 2。修改user.xml文件,確保命名空間屬性值和接口的全限定名相同,且
<mapper namespace =”
3。在mybatisbasictest類中添加測試方法:
@test public void queryInterfacewayTest(){sqlsession session = sqlsessionfactory.opensession(); iusermapper mapper = session.getMapper(iusermapper.class); //如果命名空間和接口全限定名不一致,org.apache.ibatis.binding.binding.exception:type interface com..uipermapper the MapperRegistry尚不知道the MapperRegistry異常。用戶= mapper.getuserbyid(1); log.info(“ {}:{}”,user.getName(),user.getAddress()); }附:
上面的實現是把sql xml文件中,並通過一定的約束來保證接口能夠在xml中找到對應的
++註解sql方式來交互數據:
1。新建接口類:
包com.john.hbatis.mapper;導入org.apache.ibatis.annotations.select;導入com.john.hbatis.model.user; public Interface iusermApper2 {@select({“ {“從'user` where id =#{id}”})user getUserById(int ID); } 2。在configuration.xml文件中加入:
<mappers> <mapper /> < /mappers>
或在初始化語句中加入:
sqlsessionfactory.getConfiguration()。 addMapper(iusermapper2.Class);
3。相應修改上面的測試方法:
iusermapper2 mapper = session.getMapper(iusermapper2.class);