首先聲明:
mybatis試用”
跟着老師做項目,用了三個多月的mybatis,但直到今天,才自己動手親自配置了一次mybatis。很丢人的,嘗試了幾天才解決問題。為了讓更多的初學者不用走彎路,就寫點經驗與大家分享。
廢話不多說咱們就開始吧。
首先給大家一張總文檔結構的圖
在開始之前 首先在資料庫中導入資料
四個字段都是string型的
第一步先建立項目
第二步也是所有的基礎就是導入jar包(讓我肝腸寸斷的一步!)一共兩個一個mybatis—3.01一個classes12。前面那個是mybatis的基礎庫。後面那個是oracle的jdbc驅動。
第三步就是建立實體類 User
package cn.dcr.mybatis.entity;
public class User {
private String id;
private String userName;
private String password;
private String age;
//省略get set
}
第四步 建立configuration檔案。這是mybatis的一個核心,它指導了系統去找哪個資料庫,和去哪生成sql語句。
<?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="oracle.jdbc.OracleDriver" />
<property name="url" value="jdbc:" />
<property name="username" value="" />
<pre name="code" class="html"> <property name="password" value="" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="cn/dcr/mybatis/entity/testmapper.xml"/>
</mappers>
</configuration>
注意 url那一項就是資料庫的位址 username和passwor就不用說了吧
後面的那個mapper 就是告訴系統 去哪裡建構sql語句。
第五步 就是建立mapper檔案 也就是生成sql語句
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"
"http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">
<mapper namespace="cn.dcr.mybatis.entity.testmapper">
<select id="selectOne" parameterType="String" resultType="cn.dcr.mybatis.entity.User">
select * from userr where id = #{id}
</select>
</mapper>
sql語句parametetype就是輸入的類型 這個例子很簡單 就是string型的 後面的resulttype就不解釋了:傳回的類型。目前的sql語句就完成了專業一個要求:輸入id号,在資料庫中查到這個元組 傳回成user行的model。 當然要新增一個查詢的話 很簡單,紅字複制,然後修改。
第六步 寫初始化sqlsessionfactory
package cn.dcr.mybatis.util;
import java.io.IOException;
import java.io.Reader;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class Util {
private static SqlSessionFactory sqlSessionFactory = null;
static {
String resource = "coNfiguration.xml";
Reader reader = null;
try {
reader = Resources.getResourceAsReader(resource);
} catch (IOException e) {
e.printStackTrace();
}
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
}
public static SqlSessionFactory getSqlSessionFactory(){
return sqlSessionFactory;
}
}
這裡我就曾出現過一個問題, 這一行
String resource = "coNfiguration.xml";
configuration的目錄就是頂層,諸位看官,你們試試移動xml檔案看有什麼反應。
第七步
package cn.dcr.mybatis.dao;
import org.apache.ibatis.session.SqlSession;
import cn.dcr.mybatis.entity.User;
import cn.dcr.mybatis.util.Util;
public class UserDao {
public User query(String id){
SqlSession session = Util.getSqlSessionFactory().openSession();
User user = null;
try{ // cn.dcr.mybatis.entity.testmapper 這是mapper檔案的namespace selectOne是 <select id="selectOne" ..>的id
user = (User)session.selectOne("cn.dcr.mybatis.entity.testmapper.selectOne", id);
}catch(Exception e){
e.printStackTrace();
}finally{
session.close();
}
return user;
}
}
第九步 就是測試了 。最後一步了
package cn.dcr.mybatis.test;
import cn.dcr.mybatis.dao.UserDao;
import cn.dcr.mybatis.entity.User;
public class UserTest {
public static void main(String[] args){
UserDao userDao = new UserDao();
User user = userDao.query("2");
System.out.println(user.getId());
System.out.println(user.getUserName());
System.out.println(user.getPassword());
System.out.println(user.getAge());
}
}
然後開始測試,右鍵 run as --> application
大家可以猜想一下,此時控制台會顯示什麼?
我電腦上顯示的結果