應要求,本次內容需要用到mybatis框架,抱着一法通,則萬法通的心態,就先過去看了下官方文檔,然後使用了一下,總結如下用法:
1、首先,要下載mybatis的jar包,這個官網上直接有,我就不貼地址了。
2、我使用的是mysql數據庫,所以,還需要mysql的驅動包
3、兩個包搞定後,需要一個mybatis的配置文件,這個配置文件極其重要:
<?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/數據庫名"/>
<property name="username" value="xxxx"/>
<property name="password" value="xxxx"/>
</dataSource>
</environment>
</environments>
</configuration>
這個文件名字一般是conf.xml,嗯,習慣重於編程,那麼我們就按照習慣來,不改名字了。對了, 位置放在src下面
這個文件裏面的東西,其實一看也就明白了,是幫我們連接數據庫用的,就不多做解釋了。
4、數據庫建好表,不多累贅
5、建立與數據庫表對應的實體類,注意,請一一對照
6、這個時候,重點來了,如何使用呢?官網給了我們兩個方法:一個是xml配置文件,一個是註解,我們簡單的使用,用註解的方式不知道要好到哪裏去咯,於是我們使用註解的方法。
public interface ResuserMapper {
//使用@Select註解指明getAll方法要執行的SQL
@Select("select * from resuser")
public Resuser getAll();
}
其中,Resuser是我的實體類,數據庫名字叫做resuser
7、到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/數據庫名"/>
<property name="username" value="root"/>
<property name="password" value="xxxx"/>
</dataSource>
</environment>
</environments>
<mappers>
<!-- 註冊UserMapper映射接口-->
<mapper class="com.yc.mapping.ResuserMapper"/>
</mappers>
</configuration>
8、到此,準備工作就做完了,那麼現在,可以去寫測試類了
public static void main(String[] args) {
//mybatis的資源配置文件
String resource = "conf.xml";
//得到IO流
InputStream is = Test.class.getClassLoader().getResourceAsStream(resource);
//每個基於 MyBatis 的應用都是以一個 SqlSessionFactory 的實例爲核心的
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
//得到session
SqlSession sqlSession=factory.openSession(true); //true 自動提交
//得到ResuserMapper接口的實現類對象,ResuserMapper接口的實現類對象由sqlSession.getMapper(ResuserMapper.class)動態構建出來
ResuserMapper mapper = sqlSession.getMapper(ResuserMapper.class);
//執行查詢操作,將查詢結果自動封裝成List<User>返回
List<Resuser> lstUsers = mapper.getAll();
//使用SqlSession執行完SQL之後需要關閉SqlSession
sqlSession.close();
System.out.println(lstUsers);
}
9、emmmmm,這個時候,可能會有一堆的錯誤,當然,歐洲程序猿請自覺走開,到這裏就差不多了。
第一個錯誤:Unsupported major.minor version 52.0
原因是因爲mybatis3.5最低支持jdk1.8,因此如果你是jdk1.7的,請換成jdk1.8以上
第二個錯誤:Mybatis錯誤:Parameter 'XXX' not found. Available parameters are [1, 0, param1, param2]
這個是因爲你有參數注入,那麼,這個時候,爲了確定順序,需要你帶上@param註解
@Select("select * from resuser where username=#{username} and pwd=#{pwd}")
public Resuser login(@Param("username")String username,@Param("pwd")String pwd);
第三個錯誤:java.lang.AbstractMethodError: Method com/mysql/jdbc/PreparedStatement.isClosed()Z is abstract
原因是因爲你的mysql驅動包版本過低,請更新一下子~~
好啦,暫時到現在爲止,就出現這些錯誤,等發現了,再說
see you