主要搭建过程
1。POM.XML
<properties> <mybatis.version> 3.2.3 </mybatis.version> <mysql.version> 5.1.26 </mysql.version> <slf4j.api.version> 1.7.5 </slf4j.api.version> <testng.version> <groupid> org.mybatis </groupid> <artifactid> mybatis </artifactid> <version> $ {mybatis.version} </version> </dependency> <! - deptency> <dependency> <siprency> mysql </groupid> <artifactid> <バージョン> $ {mysql.version} </version> </dependency> <! - mybatis <Dependency> groupId> org.testng </groupId> <ArtifActid> testng </artifactid> <version> $ {testng.version} </version> </dependency> </dependencies>
2。
<?xml version = "1.0" encoding = "utf-8"?> <!doctype構成public " - // mybatis.org//dtd config 3.0 // en" "http://mybatis.org/dtd/mybatis-3-config.dtd" type = "com.john.hbatis.model.user" /> < /typealiase> <環境デフォルト= "開発"> <環境id = "development"> <transactionmanager type = "jdbc" /> <datasource Type = "プール"> <! - 数据源 - > <プロパティネーム " value = "jdbc:mysql:// localhost:3306/hbatis"/> <プロパティ名= "username" value = "root"/> <プロパティ名= "password" value = "123456"/> </dataSource> </環境> </環境> </環境> <マッパーズ> <! /> </mappers> </configuration>
3。执行创建数据库和表的sql:
- 「hbatis」という名前のデータベースを作成します。 - 「使用しない」または「データベース名を囲む」を使用して、可能であればキーワードとして解釈されないように使用しても問題ありません。存在しない場合はデータベースを作成します。 null、 `address` varchar(200)デフォルトnull、プライマリキー(` id`))エンジン= innodb auto_increment = 2デフォルトcharset = utf8;
4. com.john.hbatis.model.user类:
パブリッククラスユーザー{private int id;プライベート文字列名;プライベートストリングエイジ;プライベート文字列アドレス。 // getters andセッターは省略されています//如果有带参数的构造器、编译器不会自动生成无参构造器。当查询需要返回对象时、orm、orm、导致异常、导致异常:java.lang.nosuchmethodexception:com.john.hbatis.model.user。<init>()// this.address = address; } public user(string name、int age、stringアドレス){this.name = name; this.age = age; this.address = address; }}com/john/hbatis/model路径下的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" <select id = "getuserbyid" parametertype = "int" resultType = "user"> select * from `user` where id =#{id} </select> </mapper>
5。
パブリッククラスmybatisbasictest {private static final logger log = loggerfactory.getLogger(mybatisbasictest.class); private static sqlsessionfactory sqlsessionFactory;プライベート静的リーダーリーダー。 @beforeclass public static void initial(){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();ユーザーユーザー=(user)session.selectone( "com.john.hbatis.model.usermapper.getuserbyid"、1); log.info( "{}:{}"、user.getName()、user.getAddress()); }}以接口方式交互数据
上面的环境搭建是采用sqlsession的通用方法并强制转换的方式、存在着转换安全的问题:
ユーザーユーザー=(user)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。
<mapper namespace = "com.john.hbatis.mapper.iusermapper"> <select id = "getuserbyid"
3。
@test public void queryininterfacewaytest(){sqlsession session = sqlsessionfactory.opensession(); iusermapper mapper = session.getMapper(iusermapper.class); //如果名前空間和接口全限定名不一致、报org.apache.ibatis.binding.bindingexception:タイプインターフェイスcom..iusermapperはmapperregistryに知られていません异常。ユーザー= mapper.getuserbyid(1); log.info( "{}:{}"、user.getName()、user.getAddress()); }附:
上面的实现是把sql
还有一种方式是通过接口+注解sql方式来交互数据:
1。新建接口类:
パッケージcom.john.hbatis.mapper; org.apache.ibatis.annotations.selectをインポートします。 com.john.hbatis.model.userをインポートします。 public interface iusermapper2 {@select({"select * from` 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);