激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專(zhuān)注于服務(wù)器技術(shù)及軟件下載分享
分類(lèi)導(dǎo)航

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

香港云服务器
服務(wù)器之家 - 編程語(yǔ)言 - JAVA教程 - 簡(jiǎn)述Mybatis增刪改查實(shí)例代碼

簡(jiǎn)述Mybatis增刪改查實(shí)例代碼

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

本文給大家分享編寫(xiě)一個(gè)簡(jiǎn)單的mybatis進(jìn)行插入數(shù)據(jù)的實(shí)例代碼,非常不錯(cuò)具有參考借鑒價(jià)值,感興趣的朋友一起看看吧

編寫(xiě)一個(gè)簡(jiǎn)單的mybatis進(jìn)行插入數(shù)據(jù)的實(shí)例

1 數(shù)據(jù)庫(kù)建表 其中建表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數(shù)據(jù)庫(kù)中出現(xiàn)表已創(chuàng)建,則表示創(chuàng)建成功,如果出現(xiàn)名稱(chēng)已被使用,則可在建表之前進(jìn)行刪除操作:drop table students;或者進(jìn)行級(jí)聯(lián)刪除drop table students cascade constraints;然后再重新創(chuàng)建

2 新建一個(gè)項(xiàng)目

2.1 創(chuàng)建好相應(yīng)的package及class,其中Student是我們要進(jìn)行插入的對(duì)象,由于數(shù)據(jù)類(lèi)型和數(shù)據(jù)庫(kù)中的值進(jìn)行了對(duì)應(yīng),因此我們能夠進(jìn)行將一整個(gè)對(duì)象進(jìn)行插入,因此我們使用pojo類(lèi)進(jìn)行封裝對(duì)象

?
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() {}//注意無(wú)參的構(gòu)造器
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 項(xiàng)目中引入mybatis的核心包以及可選的依賴(lài)包

文件下載: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 用于實(shí)現(xiàn)mybatis提供的功能,ojdbc14.jar用于連接數(shù)據(jù)庫(kù),junit-4.7.jar用于實(shí)現(xiàn)功能測(cè)試,log4j-1.2.17.jar用于進(jìn)行日志記錄

如下圖所示:在項(xiàng)目目錄下建立一個(gè)新的文件夾jar,將需要導(dǎo)入的包進(jìn)行復(fù)制粘貼到j(luò)ar目錄下邊

簡(jiǎn)述Mybatis增刪改查實(shí)例代碼

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

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

簡(jiǎn)述Mybatis增刪改查實(shí)例代碼

4 項(xiàng)目中引入mybatis配置文件dtd約束文件

同樣的,在項(xiàng)目下新建dtd目錄,將約束文件復(fù)制到目錄下即可,如下圖所示:dtd文件結(jié)構(gòu),dtd文件下載:

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

簡(jiǎn)述Mybatis增刪改查實(shí)例代碼

dtd文件的作用是對(duì)配置文件xml進(jìn)行約束,這樣的話(huà)程序員就能按照規(guī)范書(shū)寫(xiě)xml文件,mybatis就能夠正確的讀取并解析,以上dtd是配置本地的,當(dāng)然我們也能夠使用官網(wǎng)的連接進(jìn)行約束

5 mybatis中的配置文件和映射文件分別引入到項(xiàng)目中

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

首先我們對(duì)本地dtd約束進(jìn)行關(guān)聯(lián),如下圖進(jìn)入到Preferences下面,在搜索框中輸入xml,選中xml catalog配置名,然后點(diǎn)擊右邊的add按鈕

簡(jiǎn)述Mybatis增刪改查實(shí)例代碼

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

簡(jiǎn)述Mybatis增刪改查實(shí)例代碼

點(diǎn)擊OK,現(xiàn)在我們能夠進(jìn)行xml配置文件的書(shū)寫(xiě),添加約束的作用就是對(duì)程序員的書(shū)寫(xiě)進(jìn)行規(guī)范,以保證mybatis能夠正常解析

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

簡(jiǎn)述Mybatis增刪改查實(shí)例代碼

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

?
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"?>
<!-- 進(jìn)行dtd約束,其中-//mybatis.org//DTD Config 3.0//EN為公共約束,
http://mybatis.org/dtd/mybatis-3-config.dtd為獲取網(wǎng)絡(luò)中提供的dtd約束 -->
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<typeAliases>
<!-- 給pojo類(lèi)起別名 -->
<typeAlias type="com.mybatis.pojo.Student" alias="Student" />
</typeAliases>
<!-- 配置數(shù)據(jù)庫(kù)環(huán)境其中development為默認(rèn)的數(shù)據(jù)庫(kù)名稱(chēng)事務(wù)管理器transactionManager類(lèi)型為JDBC類(lèi)型,數(shù)據(jù)源dataSource使用連接池的方式 -->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<!-- 配置數(shù)據(jù)庫(kù)信息這里使用oracle數(shù)據(jù)庫(kù) -->
<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文件映射路徑,在這里可以進(jìn)行sql的操作 -->
<mappers>
<mapper resource="com/mybatis/mappers/StudentMapper.xml" />
</mappers>
</configuration>

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

首先,我們實(shí)現(xiàn)接口com.mybatis.mappers;包下面新建一個(gè)接口StudentMapper.Java,用來(lái)對(duì)應(yīng)xml文件中的sql語(yǔ)句(映射),從而方便我們調(diào)用

?
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);
}

使用同樣的方法,對(duì)mapper文件進(jìn)行約束

簡(jiǎn)述Mybatis增刪改查實(shí)例代碼

然后進(jìn)行xml代碼的編寫(xiě):

?
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是我們定義接口的全限定名字 這樣就可以使用接口調(diào)用映射的SQL語(yǔ)句了 這個(gè)名字一定要和接口對(duì)應(yīng)上 -->
<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>
<!-- 列名和屬性名字不一致可以給查詢(xún)的列起一個(gè)別名 -->
<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文件中寫(xiě)的sql語(yǔ)句,最后面不要寫(xiě)分號(hào),否則會(huì)報(bào)錯(cuò)誤,ORA-00911: 無(wú)效字符

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

6 配置log4j.properties文件中的日志輸出:

位置src下面,文件名log4j.properties

內(nèi)容:

?
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 創(chuàng)建一個(gè)測(cè)試類(lèi)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");
// 生成工廠對(duì)象
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
// 使用工廠對(duì)象生成sqlsession
session = sqlSessionFactory.openSession();
// 使用sqlsession獲得映射接口的實(shí)現(xiàn)類(lèi)對(duì)象,接口的引用指向?qū)崿F(xiàn)類(lèi)的對(duì)象
StudentMapper studentMapper = session.getMapper(StudentMapper.class);
Student student = new Student(1, "suwu150", "1730@qq.com",new Date());
studentMapper.insertStudent(student);
} catch (IOException e) {
session.rollback();
e.printStackTrace();
}
}
}

8 運(yùn)行成功后會(huì)在控制臺(tái)中看到log4j日志輸出的這個(gè)程序運(yùn)行的相關(guān)信息,如下:

簡(jiǎn)述Mybatis增刪改查實(shí)例代碼

在數(shù)據(jù)庫(kù)中查詢(xún)能夠看到如下信息

簡(jiǎn)述Mybatis增刪改查實(shí)例代碼

9 對(duì)mybatis的一些基本封裝

每次讀取配置文件,產(chǎn)生一個(gè)工廠對(duì)象SqlSessionFactory,然后再生成出SqlSession對(duì)象,這個(gè)過(guò)程雖然并不復(fù)雜,但是也都是一些重復(fù)的代碼流程,所以我們可以對(duì)其進(jìn)行一個(gè)簡(jiǎn)單的封裝:

?
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); //默認(rèn)手動(dòng)提交,故我們?cè)谡{(diào)用的時(shí)候需要進(jìn)行提交
}
public static SqlSession openSession(boolean autoCommit) {
return getSqlSessionFactory().openSession(autoCommit);
}
}

之后每次使用的時(shí)候只需要調(diào)用該類(lèi)中的靜態(tài)方法openSession即可

上面的代碼可簡(jiǎn)寫(xiě)為: //注意事務(wù)是自動(dòng)提交還是手動(dòng)提交

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

10 在上面的測(cè)試中,我們僅僅完成了增加的功能,下面我們進(jìn)行實(shí)現(xiàn)刪除修改和查詢(xún)的功能:

在映射文件中進(jìn)行如下配置:

?
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是我們定義接口的全限定名字 這樣就可以使用接口調(diào)用映射的SQL語(yǔ)句了 這個(gè)名字一定要和接口對(duì)應(yīng)上 -->
<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>
<!-- 列名和屬性名字不一致可以給查詢(xún)的列起一個(gè)別名 -->
<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>

在接口類(lèi)中進(jìn)行如下配置:

?
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);
}

在測(cè)試文件中編寫(xiě)如下代碼:

?
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");
// 生成工廠對(duì)象
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
// 使用工廠對(duì)象生成sqlsession
session = sqlSessionFactory.openSession();
// 使用sqlsession獲得映射接口的實(shí)現(xiàn)類(lèi)對(duì)象,接口的引用指向?qū)崿F(xiàn)類(lèi)的對(duì)象
StudentMapper studentMapper = session.getMapper(StudentMapper.class);
Student student = new Student(2, "suwu150", "1730@qq.com",new Date());
studentMapper.insertStudent(student);
session.commit();
System.out.println("執(zhí)行完畢");
} catch (IOException e) {
session.rollback();
e.printStackTrace();
}
}
@Test
public void test_deleteStudentById()
{
SqlSession session=null;
session = MyBatisSqlSessionFactory.openSession();//使用封裝之后的類(lèi)
// 使用sqlsession獲得映射接口的實(shí)現(xiàn)類(lèi)對(duì)象,接口的引用指向?qū)崿F(xiàn)類(lèi)的對(duì)象
StudentMapper studentMapper = session.getMapper(StudentMapper.class);
studentMapper.deleteStudentById(2);
session.commit();
System.out.println("執(zhí)行完畢");
}
@Test
public void test_updateStudentById()
{
SqlSession session=null;
session = MyBatisSqlSessionFactory.openSession();//使用封裝之后的類(lèi)
// 使用sqlsession獲得映射接口的實(shí)現(xiàn)類(lèi)對(duì)象,接口的引用指向?qū)崿F(xiàn)類(lèi)的對(duì)象
StudentMapper studentMapper = session.getMapper(StudentMapper.class);
Student student = new Student();
student.setStudId(1);
student.setName("sususu");
student.setEmail("123443@136.com");
studentMapper.updateStudentById(student);
session.commit();
System.out.println("執(zhí)行完畢");
}
@Test
public void test_findStudentById()
{
SqlSession session=null;
session = MyBatisSqlSessionFactory.openSession();//使用封裝之后的類(lèi)
// 使用sqlsession獲得映射接口的實(shí)現(xiàn)類(lèi)對(duì)象,接口的引用指向?qū)崿F(xiàn)類(lèi)的對(duì)象
StudentMapper studentMapper = session.getMapper(StudentMapper.class);
Student student = studentMapper.findStudentById(1);
System.out.println(student);
System.out.println("執(zhí)行完畢");
}
@Test
public void test_findAllStudents()
{
SqlSession session=null;
session = MyBatisSqlSessionFactory.openSession();//使用封裝之后的類(lèi)
// 使用sqlsession獲得映射接口的實(shí)現(xiàn)類(lèi)對(duì)象,接口的引用指向?qū)崿F(xiàn)類(lèi)的對(duì)象
StudentMapper studentMapper = session.getMapper(StudentMapper.class);
List<Student> list = studentMapper.findAllStudents();
System.out.println(list);
System.out.println("執(zhí)行完畢");
}
}

這樣我們就完成了對(duì)Student對(duì)象的增刪改查

以上所述是小編給大家介紹的Mybatis增刪改查實(shí)例代碼,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)服務(wù)器之家網(wǎng)站的支持!

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

延伸 · 閱讀

精彩推薦
314
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25
主站蜘蛛池模板: 久久久大片| 精品久久久久久久久久久aⅴ | 亚州综合网 | 国产一级二级在线播放 | 色999国产| 精品国产一区二区三区久久久蜜 | 日韩激情| 黄污网站在线 | 日韩欧美视频一区二区三区 | 国产一级不卡毛片 | 在线91视频| 91 视频网站 | 国产女厕一区二区三区在线视 | 伊人久操视频 | 日本中文字幕电影在线观看 | 免费在线观看毛片视频 | 成人区一区二区 | 日韩视频高清 | 亚洲电影在线播放 | 成年人黄色免费网站 | av老司机久久 | 3xxx| videos韩国 | 国语自产免费精品视频在 | 免费毛片随便看 | 成人综合一区二区 | 欧美视频一区二区三区在线观看 | 少妇的肉体k8经典 | 日韩一级免费毛片 | 欧美激情猛片xxxⅹ大3 | 日韩精品 | av成人免费看 | 九九热免费视频在线观看 | 久久91久久久久麻豆精品 | 五月天影院,久久综合, | 成年毛片 | 97久久精品一区二区三区观看 | 亚洲成人免费视频在线 | 色综合激情 | 久国产| 国产精品一区自拍 |