程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 簡述Mybatis增刪改查實例代碼

簡述Mybatis增刪改查實例代碼

編輯:關於JAVA

簡述Mybatis增刪改查實例代碼。本站提示廣大學習愛好者:(簡述Mybatis增刪改查實例代碼)文章只能為提供參考,不一定能成為您想要的結果。以下是簡述Mybatis增刪改查實例代碼正文


編寫一個簡略的mybatis停止拔出數據的實例

1 數據庫建表 個中建表dob=Date of Birth 的意思

create table students 
(stud_id number primary key, 
name varchar2(20), 
email varchar2(20), 
dob date 
);

Oracle數據庫中湧現表已創立,則表現創立勝利,假如湧現稱號已被應用,則可在建表之進步行刪除操作:drop table students;或許停止級聯刪除drop table students cascade constraints;然後再從新創立

2 新建一個項目

2.1 創立好響應的package及class,個中Student是我們要停止拔出的對象,因為數據類型和數據庫中的值停止了對應,是以我們可以或許停止將一全部對象停止拔出,是以我們應用pojo類停止封裝對象

package com.mybatis.pojo; 
import java.util.Date; 
public class Student { 
private Integer studId; 
private String name; 
private String email; 
private Date dob; 
public Student() {}//留意無參的結構器 
public Student(Integer studId, String name, String email, Date dob) { 
this.studId = studId; 
this.name = name; 
this.email = email; 
this.dob = dob; 
} 
public Integer getStudId() { 
return studId; 
} 
public void setStudId(Integer studId) { 
this.studId = studId; 
} 
public String getName() { 
return name; 
} 
public void setName(String name) { 
this.name = name; 
} 
public String getEmail() { 
return email; 
} 
public void setEmail(String email) { 
this.email = email; 
} 
public Date getDob() { 
return dob; 
} 
public void setDob(Date dob) { 
this.dob = dob; 
} 
@Override 
public String toString() { 
return "Student [studId=" + studId + ", name=" + name + ", email=" 
+ email + ", dob=" + dob + "]"; 
} 
}

3 項目中引入mybatis的焦點包和可選的依附包

文件下載:mybatis包下載

最新版下載:https://github.com/mybatis/mybatis-3/releases

必需的包 mybatis-3.3.0.jar ojdbc14.jar

可選的包 junit-4.7.jar log4j-1.2.17.jar

個中mybatis-3.3.0.jar 用於完成mybatis供給的功效,ojdbc14.jar用於銜接數據庫,junit-4.7.jar用於完成功效測試,log4j-1.2.17.jar用於停止日記記載

以下圖所示:在項目目次下樹立一個新的文件夾jar,將須要導入的包停止復制粘貼到jar目次下邊

留意:在當地寄存這些jar包時不要應用中文

然後再右鍵選中jar目次下的四個文件,點擊添加“buildPath->add Path”,就可以夠看到以下界面:表現添加途徑勝利

4 項目中引入mybatis設置裝備擺設文件dtd束縛文件

異樣的,在項面前目今新建dtd目次,將束縛文件復制到目次下便可,以下圖所示:dtd文件構造,dtd文件下載:

http://download.csdn.net/download/suwu150/9660699

dtd文件的感化是對設置裝備擺設文件xml停止束縛,如許的話法式員就可以依照標准書寫xml文件,mybatis就可以夠准確的讀取並解析,以上dtd是設置裝備擺設當地的,固然我們也可以或許應用官網的銜接停止束縛

5 mybatis中的設置裝備擺設文件和映照文件分離引入到項目中

1) src上面的mybatis-config.xml:

起首我們對當地dtd束縛停止聯系關系,以下圖進入到Preferences上面,在搜刮框中輸出xml,選中xml catalog設置裝備擺設名,然後點擊左邊的add按鈕

湧現以下圖所示界面,個中Location地位和key地位為空,下圖是設置裝備擺設過的,key內容為-//mybatis.org//DTD Config 3.0//EN,Location內容為本身的,可以經由過程Workspace停止選擇,也就是我們後面復制到項目中的dtd文件(第4步操作中的):

點擊OK,如今我們可以或許停止xml設置裝備擺設文件的書寫,添加束縛的感化就是對法式員的書寫停止標准,以包管mybatis可以或許正常解析

以下圖所示:選中src右鍵創立新文件mybatis-config.xml

留意:xml文件開首必需置頂,後面不克不及有空格

<?xml version="1.0" encoding="UTF-8"?> 
<!-- 停止dtd束縛,個中-//mybatis.org//DTD Config 3.0//EN為公共束縛, 
http://mybatis.org/dtd/mybatis-3-config.dtd為獲得收集中供給的dtd束縛 --> 
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 
"http://mybatis.org/dtd/mybatis-3-config.dtd"> 
<configuration> 
<typeAliases> 
<!-- 給pojo類起別號 --> 
<typeAlias type="com.mybatis.pojo.Student" alias="Student" /> 
</typeAliases> 
<!-- 設置裝備擺設數據庫情況個中development為默許的數據庫稱號事務治理器transactionManager類型為JDBC類型,數據源dataSource應用銜接池的方法 --> 
<environments default="development"> 
<environment id="development"> 
<transactionManager type="JDBC"></transactionManager> 
<dataSource type="POOLED"> 
<!-- 設置裝備擺設數據庫信息這裡應用oracle數據庫 --> 
<property name="driver" value="oracle.jdbc.driver.OracleDriver" /> 
<property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:orcl" /> 
<property name="username" value="briup" /> 
<property name="password" value="briup" /> 
</dataSource> 
</environment> 
</environments> 
<!-- 設置裝備擺設xml文件映照途徑,在這裡可以停止sql的操作 --> 
<mappers> 
<mapper resource="com/mybatis/mappers/StudentMapper.xml" /> 
</mappers> 
</configuration>

2)com.mybatis.mappers包上面的StudentMapper.xml:

起首,我們完成接口com.mybatis.mappers;包上面新建一個接口StudentMapper.Java,用來對應xml文件中的sql語句(映照),從而便利我們挪用

package com.mybatis.mappers; 
import java.util.List; 
import com.mybatis.pojo.Student; 
public interface StudentMapper { 
List<Student> findAllStudents(); 
Student findStudentById(Integer id); 
void insertStudent(Student student); 
}

應用異樣的辦法,對mapper文件停止束縛

然落後行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"> 
<!-- com.mybatis.mappers.StudentMapper是我們界說接口的全限制名字 如許便可以應用接口挪用映照的SQL語句了 這個名字必定要和接口對應上 --> 
<mapper namespace="com.mybatis.mappers.StudentMapper"> 
<resultMap type="Student" id="StudentResult"> 
<id property="studId" column="stud_id" /> 
<result property="name" column="name" /> 
<result property="email" column="email" /> 
<result property="dob" column="dob" /> 
</resultMap> 
<select id="findAllStudents" resultMap="StudentResult"> 
SELECT * FROM STUDENTS 
</select> 
<!-- 列名和屬性名字紛歧致可以給查詢的列起一個體名 --> 
<select id="findStudentById" parameterType="int" resultType="Student"> 
SELECT STUD_ID AS STUDID,NAME,EMAIL,DOB 
FROM STUDENTS 
WHERE 
STUD_ID=#{id} 
</select> 
<insert id="insertStudent" parameterType="Student"> 
INSERT INTO 
STUDENTS(STUD_ID,NAME,EMAIL,DOB) 
VALUES(#{studId},#{name},#{email},#{dob}) 
</insert> 
</mapper>

*******************************************************
留意:xml文件中寫的sql語句,最初面不要寫分號,不然會報毛病,ORA-00911: 有效字符

*******************************************************

6 設置裝備擺設log4j.properties文件中的日記輸入:

地位src上面,文件名log4j.properties

內容:

log4j.rootLogger=DEBUG, stdout 
log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%d [%-5p] %c - %m%n 
#show sql 
log4j.logger.java.sql.ResultSet=INFO 
log4j.logger.org.apache=INFO 
log4j.logger.java.sql.Connection=DEBUG 
log4j.logger.java.sql.Statement=DEBUG 
log4j.logger.java.sql.PreparedStatement=DEBUG

7 創立一個測試類StudentMapperTest.java

package com.mybatis.test; 
import java.io.IOException; 
import java.io.InputStream; 
import java.util.Date; 
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 org.junit.Test; 
import com.mybatis.mappers.StudentMapper; 
import com.mybatis.pojo.Student; 
public class StudentMapperTest { 
@Test 
public void test_insertStudent() 
{ 
SqlSession session=null; 
try { 
// 獲得設置裝備擺設文件 
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml"); 
// 生成工場對象 
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); 
// 應用工場對象生成sqlsession 
session = sqlSessionFactory.openSession(); 
// 應用sqlsession取得映照接口的完成類對象,接口的援用指向完成類的對象 
StudentMapper studentMapper = session.getMapper(StudentMapper.class); 
Student student = new Student(1, "suwu150", "[email protected]",new Date()); 
studentMapper.insertStudent(student); 
} catch (IOException e) { 
session.rollback(); 
e.printStackTrace(); 
} 
} 
}

8 運轉勝利後會在掌握台中看到log4j日記輸入的這個法式運轉的相干信息,以下:

在數據庫中查詢可以或許看到以下信息

9 對mybatis的一些根本封裝

每次讀取設置裝備擺設文件,發生一個工場對象SqlSessionFactory,然後再生成出SqlSession對象,這個進程固然其實不龐雜,然則也都是一些反復的代碼流程,所以我們可以對其停止一個簡略的封裝:

package com.mybatis.utils; 
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; 
public class MyBatisSqlSessionFactory { 
private static SqlSessionFactory sqlSessionFactory; 
public static SqlSessionFactory getSqlSessionFactory(){ 
if(sqlSessionFactory == null){ 
InputStream inputStream = null; 
try { 
inputStream = Resources.getResourceAsStream("mybatis-config.xml"); 
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); 
} catch (IOException e) { 
e.printStackTrace(); 
throw new RuntimeException(e.getCause()); 
} 
} 
return sqlSessionFactory; 
} 
public static SqlSession openSession() { 
return openSession(false); //默許手動提交,故我們在挪用的時刻須要停止提交 
} 
public static SqlSession openSession(boolean autoCommit) { 
return getSqlSessionFactory().openSession(autoCommit); 
} 
} 

以後每次應用的時刻只須要挪用該類中的靜態辦法openSession便可

下面的代碼可簡寫為: //留意事務是主動提交照樣手動提交

MyBatisSqlSessionFactory.openSession().getMapper(StudentMapper.class).insertStudent(s);

10 在下面的測試中,我們僅僅完成了增長的功效,上面我們停止完成刪除修正和查詢的功效:

在映照文件中停止以下設置裝備擺設:

<?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"> 
<!-- com.mybatis.mappers.StudentMapper是我們界說接口的全限制名字 如許便可以應用接口挪用映照的SQL語句了 這個名字必定要和接口對應上 --> 
<mapper namespace="com.mybatis.mappers.StudentMapper"> 
<resultMap type="Student" id="StudentResult"> 
<id property="studId" column="stud_id" /> 
<result property="name" column="name" /> 
<result property="email" column="email" /> 
<result property="dob" column="dob" /> 
</resultMap> 
<select id="findAllStudents" resultMap="StudentResult"> 
SELECT * FROM STUDENTS 
</select> 
<!-- 列名和屬性名字紛歧致可以給查詢的列起一個體名 --> 
<select id="findStudentById" parameterType="int" resultType="Student"> 
SELECT STUD_ID AS STUDID,NAME,EMAIL,DOB 
FROM STUDENTS 
WHERE 
STUD_ID=#{id} 
</select> 
<insert id="insertStudent" parameterType="Student"> 
INSERT INTO 
STUDENTS(STUD_ID,NAME,EMAIL,DOB) 
VALUES(#{studId},#{name},#{email},#{dob}) 
</insert> 
<delete id="deleteStudentById" parameterType="int"> 
delete from students 
where STUD_ID=#{id} 
</delete> 
<update id="updateStudentById" parameterType="Student"> 
update students 
set name=#{name},email=#{email} 
where stud_id=#{studId} 
</update> 
</mapper>

在接口類中停止以下設置裝備擺設:

package com.mybatis.mappers; 
import java.util.List; 
import com.mybatis.pojo.Student; 
public interface StudentMapper { 
List<Student> findAllStudents(); 
Student findStudentById(Integer id); 
void insertStudent(Student student); 
void deleteStudentById(Integer id); 
void updateStudentById(Student student); 
}

在測試文件中編寫以下代碼:

package com.mybatis.test; 
import java.io.IOException; 
import java.io.InputStream; 
import java.util.Date; 
import java.util.List; 
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 org.junit.Test; 
import com.mybatis.mappers.StudentMapper; 
import com.mybatis.pojo.Student; 
import com.mybatis.utils.MyBatisSqlSessionFactory; 
public class StudentMapperTest { 
@Test 
public void test_insertStudent() 
{ 
SqlSession session=null; 
try { 
// 獲得設置裝備擺設文件 
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml"); 
// 生成工場對象 
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); 
// 應用工場對象生成sqlsession 
session = sqlSessionFactory.openSession(); 
// 應用sqlsession取得映照接口的完成類對象,接口的援用指向完成類的對象 
StudentMapper studentMapper = session.getMapper(StudentMapper.class); 
Student student = new Student(2, "suwu150", "[email protected]",new Date()); 
studentMapper.insertStudent(student); 
session.commit(); 
System.out.println("履行終了"); 
} catch (IOException e) { 
session.rollback(); 
e.printStackTrace(); 
} 
} 
@Test 
public void test_deleteStudentById() 
{ 
SqlSession session=null; 
session = MyBatisSqlSessionFactory.openSession();//應用封裝以後的類 
// 應用sqlsession取得映照接口的完成類對象,接口的援用指向完成類的對象 
StudentMapper studentMapper = session.getMapper(StudentMapper.class); 
studentMapper.deleteStudentById(2); 
session.commit(); 
System.out.println("履行終了"); 
} 
@Test 
public void test_updateStudentById() 
{ 
SqlSession session=null; 
session = MyBatisSqlSessionFactory.openSession();//應用封裝以後的類 
// 應用sqlsession取得映照接口的完成類對象,接口的援用指向完成類的對象 
StudentMapper studentMapper = session.getMapper(StudentMapper.class); 
Student student = new Student(); 
student.setStudId(1); 
student.setName("sususu"); 
student.setEmail("[email protected]"); 
studentMapper.updateStudentById(student); 
session.commit(); 
System.out.println("履行終了"); 
} 
@Test 
public void test_findStudentById() 
{ 
SqlSession session=null; 
session = MyBatisSqlSessionFactory.openSession();//應用封裝以後的類 
// 應用sqlsession取得映照接口的完成類對象,接口的援用指向完成類的對象 
StudentMapper studentMapper = session.getMapper(StudentMapper.class); 
Student student = studentMapper.findStudentById(1); 
System.out.println(student); 
System.out.println("履行終了"); 
} 
@Test 
public void test_findAllStudents() 
{ 
SqlSession session=null; 
session = MyBatisSqlSessionFactory.openSession();//應用封裝以後的類 
// 應用sqlsession取得映照接口的完成類對象,接口的援用指向完成類的對象 
StudentMapper studentMapper = session.getMapper(StudentMapper.class); 
List<Student> list = studentMapper.findAllStudents(); 
System.out.println(list); 
System.out.println("履行終了"); 
} 
}

如許我們就完成了對Student對象的增刪改查

以上所述是小編給年夜家引見的Mybatis增刪改查實例代碼,願望對年夜家有所贊助,假如年夜家有任何疑問請給我留言,小編會實時答復年夜家的。在此也異常感激年夜家對網站的支撐!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved