MyBatis框架實現簡單增刪改查
阿新 • • 發佈:2019-02-12
MyBtatis
是一個支援普通SQL查詢,儲存過程和高階對映的優秀持久層框架
MyBatis使用簡單的XML或註解用於配置和原始對映,將介面和JAVA的P0J0s(普通的Java物件),對映成資料庫中 的記錄。
這個框架操作的是Dao層,方便我們訪問資料庫,
1.載入配置 2.SQL解析 3.SQl執行
4.結果對映
導包 以及建立配置
然後是在資料庫中建表,建立自己需要的表格以及實體類,配置這個xml檔案和資料庫建立連線,將檔案放在src下
編寫實體類和dao介面,
然後就是編寫測試類 測試類有三種不同的寫法
第一種最為複雜
然後是在資料庫中建表,建立自己需要的表格以及實體類,配置這個xml檔案和資料庫建立連線,將檔案放在src下
<?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> <properties> <property name="jdbc.driverClassName" value="oracle.jdbc.driver.OracleDriver"/> <property name="jdbc.url" value="jdbc:oracle:thin:@localhost:1521:orcl"/> <property name="jdbc.username" value="mybatis"/> <property name="jdbc.password" value="Jredu12345"/> </properties> <typeAliases> <!-- 解析類的別名 --> <!-- <typeAlias alias="U" type="com.jereh.entity.User"/> --> <!-- 掃描包下的所有類檔案,這個包下的所有類都是簡寫 --> <package name="com.jredu.entity"/> </typeAliases> <environments default="development"> <environment id="development"> <transactionManager type="JDBC" /> <dataSource type="POOLED"> <property name="driver" value="${jdbc.driverClassName}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> </dataSource> </environment> </environments> <mappers> <!-- 掃描包下的所有xml檔案,該包下的所有對映都會匹配 --> <package name="com.jredu.dao"/> </mappers> </configuration>
編寫實體類和dao介面,
package com.jredu.dao;
import java.util.List;
import com.jredu.entity.Address;
public interface AddressDao {
int insert(Address address);
int delete(int id);
int update(Address address);
Address select(int id);
List<Address> selectAll();
}
配置對映檔案,放在dao層下
<?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"> <!-- namespace對應介面地址 --> <mapper namespace="com.jredu.dao.AddressDao"> <!-- 關聯對應的方法 --> <insert id="insert" parameterType="Address"> insert into address values(address_seq.nextval,#{province},#{city},#{area}) </insert> <delete id="delete" parameterType="int"> delete from address where id=#{id} </delete> <update id="update" parameterType="Address"> update address set province=#{province},city=#{city},area=#{area} where id=#{id} </update> <select id="select" parameterType="int" resultType="Address"> select * from address where id=#{id} </select> <select id="selectAll" resultType="Address"> select * from address </select> </mapper>
然後就是編寫測試類 測試類有三種不同的寫法
第一種最為複雜
方法二 是將方法先封裝好了,在拿出來使用,比較方便public static void main(String[] args) { // TODO Auto-generated method stub //配置資訊地址 String resource="mybatis-config.xml"; //定義一個輸入流 InputStream is=null; //從配置檔案當中讀取資訊 is=Test.class.getClassLoader().getResourceAsStream(resource); //建立一個sql物件工廠 SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(is); //得到所有的sql物件 SqlSession sqlSession=factory.openSession(); //通過sqlsesion得到物件(通過getMapper方法把對應的對映檔案轉成具體實現) UserDao userDao=sqlSession.getMapper(AdressDao.class); //具體實現參考方法二 }
package com.jredu.util;
import java.io.IOException;
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
/**
* sqlsesion物件工具類
* @author Administrator
*
*/
public class SqlSessionFactoryUtil {
private static SqlSessionFactory factory;
//檔名
private final static String resource="mybatis-config.xml";
private static SqlSessionFactory getFactory() {
if(factory==null) {
InputStream is=null;
try {
is=Resources.getResourceAsStream(resource);
factory=new SqlSessionFactoryBuilder().build(is);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally{
try {
is.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
return factory;
}
/**
* 得到sqlsession物件
* @return
*/
public static SqlSession openSession() {
return getFactory().openSession();
}
}
具體實現
package com.jredu.test;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import com.jredu.dao.AddressDao;
import com.jredu.entity.Address;
import com.jredu.util.SqlSessionFactoryUtil;
public class TestAdress {
public static void main(String[] args) {
SqlSession session=SqlSessionFactoryUtil.openSession();
AddressDao dao=session.getMapper(AddressDao.class);
// Address a=new Address();
// a.setProvince("山東");
// a.setCity("煙臺");
// a.setArea("zhifu");
// int code=dao.insert(a);
// if(code>0){
// session.commit();
// System.out.println("新增成功!");
// }
// int code=dao.delete(2);
// if(code>0){
// session.commit();
// System.out.println("刪除成功");
// }
// Address a=new Address();
// a.setProvince("山東");
// a.setCity("煙臺");
// a.setArea("萊山");
// a.setId(3);
// int code=dao.update(a);
// if(code>0){
// session.commit();
// System.out.println("更新成功");
// }
// Address a=new Address();
// a=dao.select(5);
// System.out.println(a);
List<Address> list =dao.selectAll();
System.out.println(list);
}
}
方法三 是用到了lig4j,編寫日誌,猶豫篇幅問題,放在下一篇 部落格。本篇部落格只是簡單丟擲一個例子。需要繼續瞭解MyBatis框架http://blog.csdn.net/zhaolimulin