Mybatis學習筆記(1)——第一個程式
阿新 • • 發佈:2018-11-12
暑期之前就有打算學習SSM,但是我記得當時再配置一個框架瘋狂報錯,弄得我很難受,,再加上當時有點其他事情,所以就放了下來。現在很有需求要會ssm,所以就學了一下。感覺框架這東西配置就煩的要死。錯一丁點就全錯。。下面開始說配置詳情。
介紹一下這些東西,將mybatis的jar包依賴放入lib目錄。User類是一個bean物件,test類是一個測試類(就是要用到這個服務的)。conf.xml是全域性配置,配置了資料庫相關資訊和資料庫操作檔案的對映(userMapper等資料庫操作)。userMapper.xml封裝了資料庫操作給test呼叫。
首先,資料庫建立資料庫
1 create database mybatis;
2 use mybatis;
3 CREATE TABLE users(id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(20), age INT);
4 INSERT INTO users(NAME, age) VALUES('hehe',15 );
//隨便輸入幾條資料
在src目錄下建立對應的user物件:
package com.test.mybits;
public class User {
private int id;
private String name;
private int age;
public User(){}
public int getid()
{
return id;
}
public void setid(int id)
{
this.id=id;
}
public String getname()
{
return name;
}
public void setname(String name)
{
this.name=name;
}
public int getage ()
{
return age;
}
public void setage(int age)
{
this.age=age;
}
public String toString()
{
return "user [id="+id+",name="+name+",age="+age+"]";
}
}
這樣bean物件就建好了。
下一步建立conf.xml,這個是一個全域性配置的xml檔案,裡面包含連線資料庫的相關資訊,有個要注意的是要把 < DOCTYPE confi—-/>這個寫在頭。
<?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://127.0.0.1:3306/mybits?useSSL=false"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
</configuration>
這個和普通JDBC連線差不多。
下一步。建立userMapper.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">
<mapper namespace="userMapper">
<!-- 在select標籤中編寫查詢的SQL語句, 設定select標籤的id屬性為getUser,id屬性值必須是唯一的,不能夠重複
使用parameterType屬性指明查詢時使用的引數型別,resultType屬性指明查詢返回的結果集型別
resultType="com.test.mybits.User"就表示將查詢結果封裝成一個User類的物件返回
User類就是users表所對應的實體類
-->
<!--
根據id查詢得到一個user物件
-->
<select id="getuser" parameterType="Integer" resultType="com.test.mybits.User">
select * from users where id=#{id}
</select>
</mapper>
這裡的id就是讓後面java呼叫的,注意檔案配置名稱和路徑,返回的物件型別。
這個之後就在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://127.0.0.1:3306/mybits?useSSL=false"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="userMapper.xml"/>
</mappers>
</configuration>
最後編寫test類
package com.test.test1;
import java.io.IOException;
import java.io.InputStream;
import java.io.Reader;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import com.test.mybits.User;
public class Test {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
String resource="conf.xml";
//使用類載入mybatis驅動檔案,(他也載入關聯的附帶檔案)
// InputStream is=Test.class.getClassLoader().getResourceAsStream(resource);
//構建sqlsession工廠
// SqlSessionFactory sessionFactory=new SqlSessionFactoryBuilder().build(is);
// 使用MyBatis提供的Resources類載入mybatis的配置檔案(它也載入關聯的對映檔案)
Reader reader = Resources.getResourceAsReader(resource);
//構建sqlSession的工廠
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
//建立能執行對映檔案中sql的sqlSession
//建立sqlsession檔案
SqlSession session=sessionFactory.openSession();
String statement="getuser";
User user=session.selectOne(statement,3);
System.out.println(user);
User user2=session.selectOne(statement,1);
System.out.println(user2);
//System.out.print(11);
}
}
執行輸出為:
user [id=3,name=弟弟,age=22]
user [id=1,name=張賽,age=21]
根據個人的資料庫查詢出不同結果。在main函式中,statement對應xml中配置的id。這個只是實現了簡單的查詢功能,後續的增刪該查都是類似模組,就是要注意對映的一一對應和路徑的問題。