一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - 簡述Mybatis增刪改查實例代碼

簡述Mybatis增刪改查實例代碼

2020-06-26 16:03suwu150 JAVA教程

本文給大家分享編寫一個簡單的mybatis進行插入數據的實例代碼,非常不錯具有參考借鑒價值,感興趣的朋友一起看看吧

編寫一個簡單的mybatis進行插入數據的實例

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

?
1
2
3
4
5
6
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類進行封裝對象

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
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目錄下邊

簡述Mybatis增刪改查實例代碼

注意:在本地存放這些jar包時不要使用中文

然后再右鍵選中jar目錄下的四個文件,點擊添加“buildPath->add Path”,就能夠看到如下界面:表示添加路徑成功

簡述Mybatis增刪改查實例代碼

4 項目中引入mybatis配置文件dtd約束文件

同樣的,在項目下新建dtd目錄,將約束文件復制到目錄下即可,如下圖所示:dtd文件結構,dtd文件下載:

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

簡述Mybatis增刪改查實例代碼

dtd文件的作用是對配置文件xml進行約束,這樣的話程序員就能按照規范書寫xml文件,mybatis就能夠正確的讀取并解析,以上dtd是配置本地的,當然我們也能夠使用官網的連接進行約束

5 mybatis中的配置文件和映射文件分別引入到項目中

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

首先我們對本地dtd約束進行關聯,如下圖進入到Preferences下面,在搜索框中輸入xml,選中xml catalog配置名,然后點擊右邊的add按鈕

簡述Mybatis增刪改查實例代碼

出現如下圖所示界面,其中Location位置和key位置為空,下圖是配置過的,key內容為-//mybatis.org//DTD Config 3.0//EN,Location內容為自己的,可以通過Workspace進行選擇,也就是我們前面復制到項目中的dtd文件(第4步操作中的):

簡述Mybatis增刪改查實例代碼

點擊OK,現在我們能夠進行xml配置文件的書寫,添加約束的作用就是對程序員的書寫進行規范,以保證mybatis能夠正常解析

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

簡述Mybatis增刪改查實例代碼

注意:xml文件開頭必須置頂,前面不能有空格

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?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語句(映射),從而方便我們調用

?
1
2
3
4
5
6
7
8
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文件進行約束

簡述Mybatis增刪改查實例代碼

然后進行xml代碼的編寫:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?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

內容:

?
1
2
3
4
5
6
7
8
9
10
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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
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日志輸出的這個程序運行的相關信息,如下:

簡述Mybatis增刪改查實例代碼

在數據庫中查詢能夠看到如下信息

簡述Mybatis增刪改查實例代碼

9 對mybatis的一些基本封裝

每次讀取配置文件,產生一個工廠對象SqlSessionFactory,然后再生成出SqlSession對象,這個過程雖然并不復雜,但是也都是一些重復的代碼流程,所以我們可以對其進行一個簡單的封裝:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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即可

上面的代碼可簡寫為: //注意事務是自動提交還是手動提交

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

10 在上面的測試中,我們僅僅完成了增加的功能,下面我們進行實現刪除修改和查詢的功能:

在映射文件中進行如下配置:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?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>

在接口類中進行如下配置:

?
1
2
3
4
5
6
7
8
9
10
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);
}

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
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增刪改查實例代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!

原文鏈接:http://blog.csdn.net/suwu150/article/details/52888392

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 91免费精品国自产拍在线不卡 | 国产一级一级片 | 强插美女 | 国产成人综合网亚洲欧美在线 | 国产福利一区二区在线精品 | 国产色综合久久五月色婷婷中文 | 亚洲成人一区二区 | 亚欧精品在线观看 | 欧美日韩亚洲综合久久久 | 亚洲美女爱爱 | 99在线视频精品 | 精品国产一区二区三区久久久狼 | 日韩高清在线观看 | 亚洲10p| 国产一级黄毛片 | 欧美18-19 | 亚洲成在人线视频 | а天堂中文最新版在线官网视频 | 四虎免费影院ww4164h | xxxxxx性受 | 亚洲色图首页 | 91专区| 四虎影视在线观看永久地址 | 免费观看在线永久免费xx视频 | 免费高清在线视频色yeye | 婷婷天天 | 好大夫在线个人空间 | 全日爱韩国视频在线观看 | 欧美肥胖老妇做爰变态 | 果冻传媒林予曦图片 | 我的妹妹最近有点怪在线观看 | 欧美艳星kagney1ynn| 日本色频 | 好吊日在线 | 91国语自产拍在线观看 | v视影院 | 韩国久播影院理论片不卡影院 | 99视频在线看 | 97香蕉超级碰碰碰久久兔费 | 九九精品视频在线免费观看 | 俄罗斯处女摘花 |