- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章mybatis框架入门学习教程由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
mybatis是一个支持普通sql查询,存储过程和高级映射的优秀持久层框架。mybatis消除了几乎所有的jdbc代码和参数的手工设置以及对结果集的检索封装。mybatis可以使用简单的xml或注解用于配置和原始映射,将接口和java的pojo(plain old java objects,普通的java对象)映射成数据库中的记录.
1.创建工程,导入jar包 。
创建一个java工程或者web工程都可以,然后导入mybatis的jar包和依赖包还有数据库的jar包,本人使用oracle10g数据库 。
mybatis-3.2.2.jar 核心驱动 。
asm-3.3.1.jar cglib-2.2.2.jar commons-logging-1.1.1.jar javassist-3.17.1-ga.jar log4j-1.2.17.jar slf4j-api-1.7.5.jar slf4j-log4j12-1.7.5.jar classes12.jar oracle10g的jar包 。
2.创建连接数据库的核心配置文件sqlmapconfig.xml 。
在src目录底下,创建sqlmapconfig.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
29
30
31
32
33
34
35
|
<?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
=
"test"
>
<!--测试环境-->
<environment id=
"test"
>
<!--配置事务 : jdbc事务/managed交给容器的事务-->
<transactionmanager type=
"jdbc"
></transactionmanager>
<!--数据源 : pooled池化/unpooled非池化/jndi密码加密,安全性高-->
<datasource type=
"pooled"
>
<property name=
"driver"
value=
"oracle.jdbc.oracledriver"
/>
<property name=
"url"
value=
"jdbc:oracle:thin:@localhost:1521:orcl"
/>
<property name=
"username"
value=
"scott"
/>
<property name=
"password"
value=
"luogg"
/>
</datasource>
</environment>
<!--服务器环境-->
<environment id=
"deploy"
>
<transactionmanager type=
"jdbc"
></transactionmanager>
<datasource type=
"pooled"
>
<property name=
"driver"
value=
"oracle.jdbc.oracledriver"
/>
<property name=
"url"
value=
"jdbc:oracle:thin:@localhost:1521:orcl"
/>
<property name=
"username"
value=
"scott"
/>
<property name=
"password"
value=
"luogg"
/>
</datasource>
</environment>
</environments>
<mappers>
<mapper resource=
"com/luogg/mapper/personmapper.xml"
/>
</mappers>
</configuration>
|
3.在src底下创建test文件夹,在test文件夹下创建testmybatis.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
|
package
test;
import
com.luogg.domain.person;
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
java.io.ioexception;
import
java.io.inputstream;
import
java.util.list;
/**
* created by luogg on 2017/2/17.
*/
public
class
testmybatis {
@test
public
void
init()
throws
ioexception {
/**
* 测试数据库的连接
* 1.定义一个string类型的变量resource,指向刚才配置的连接数据库的xml文件
* 2.创建一个输入流,来读取我们的数据库配置文件
* 3.输入流创建工厂.
* 4.有了工厂之后open工厂
*/
string resource =
"sqlmapconfig.xml"
;
inputstream is = resources.getresourceasstream(resource);
sqlsessionfactory factory =
new
sqlsessionfactorybuilder().build(is);
sqlsession session = factory.opensession();
}
|
此时,我们可以进行单元测试了,看看session有没有被创建,绿色表示创建成功,那么我们接下来创建数据库表,并且写sql语句 。
4.创建数据库,并写入数据 。
1
2
3
4
5
6
7
8
|
create table person(
id number(
2
),
name varchar2(
20
),
sex number(
2
),
age number(
3
)
)
-- 写入数据,点击下方锁子按钮,然后点击+
select * from person
for
update
|
5.在src底下创建com.luogg.domain包,在包下创建person.java的实体bean 。
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
|
package
com.luogg.domain;
/**
* created by luogg on 2017/2/17.
*/
public
class
person {
private
string name;
private
int
sex;
private
int
age;
private
int
id;
@override
public
string tostring() {
return
"person{"
+
"name='"
+ name + '\
''
+
", sex="
+ sex +
", age="
+ age +
", id="
+ id +
'}'
;
}
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
getsex() {
return
sex;
}
public
void
setsex(
int
sex) {
this
.sex = sex;
}
public
int
getage() {
return
age;
}
public
void
setage(
int
age) {
this
.age = age;
}
}
|
6.创建与数据库对应的映射文件,在src下创建com.luogg.mapper包下创建personmapper.xml文件 。
1
2
3
4
5
6
7
8
9
10
11
12
13
|
<?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"
>
<!--配置命名空间,命名空间+ .id 是唯一的sql语句标示符-->
<mapper namespace=
"com.luogg.mapper.personmapper"
>
<!--查询所有数据,参数有id,resulttype结果集,parametertype参数-->
<!--注意 : sql语句中如果有要填写集合的,比如查询所有数据,返回一个person的结果集,那么resulttype参数直接写 路径+集合的类型
比如: 返回一个person集合,那么就填写person bean所在的路径+person-->
<select id=
"find"
resulttype=
"com.luogg.domain.person"
>
select * from person
</select>
</mapper>
|
7.在核心配置文件sqlmapconfig.xml中做一个映射,让其识别我们的写了sql语句的配置文件 。
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 configuration
public
"-//mybatis.org//dtd config 3.0//en"
"http://mybatis.org/dtd/mybatis-3-config.dtd"
>
<configuration>
<!--配置数据源,环境-->
<!--可以配置多个环境,一个测试时候用的,一个上线时候用的-->
<environments
default
=
"test"
>
<!--测试环境-->
<environment id=
"test"
>
<!--配置事务 : jdbc事务/managed交给容器的事务-->
<transactionmanager type=
"jdbc"
></transactionmanager>
<!--数据源 : pooled池化/unpooled非池化/jndi密码加密,安全性高-->
<datasource type=
"pooled"
>
<property name=
"driver"
value=
"oracle.jdbc.oracledriver"
/>
<property name=
"url"
value=
"jdbc:oracle:thin:@localhost:1521:orcl"
/>
<property name=
"username"
value=
"scott"
/>
<property name=
"password"
value=
"luogg"
/>
</datasource>
</environment>
<!--服务器环境-->
<environment id=
"deploy"
>
<transactionmanager type=
"jdbc"
></transactionmanager>
<datasource type=
"pooled"
>
<property name=
"driver"
value=
"oracle.jdbc.oracledriver"
/>
<property name=
"url"
value=
"jdbc:oracle:thin:@localhost:1521:orcl"
/>
<property name=
"username"
value=
"scott"
/>
<property name=
"password"
value=
"luogg"
/>
</datasource>
</environment>
</environments>
<!--映射文件mapper-->
<mappers>
<mapper resource=
"com/luogg/mapper/personmapper.xml"
/>
</mappers>
</configuration>
|
8.回到测试类testmybatis.java,访问配置文件中的sql语句并返回结果集 。
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
|
package
test;
import
com.luogg.domain.person;
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
java.io.ioexception;
import
java.io.inputstream;
import
java.util.list;
/**
* created by luogg on 2017/2/17.
*/
public
class
testmybatis {
@test
public
void
init()
throws
ioexception {
/**
* 测试数据库的连接
* 1.定义一个string类型的变量resource,指向刚才配置的连接数据库的xml文件
* 2.创建一个输入流,来读取我们的数据库配置文件
* 3.输入流创建工厂.
* 4.有了工厂之后open工厂
* 5.通过session访问配置文件中的sql语句
*/
string resource =
"sqlmapconfig.xml"
;
inputstream is = resources.getresourceasstream(resource);
sqlsessionfactory factory =
new
sqlsessionfactorybuilder().build(is);
sqlsession session = factory.opensession();
//如何访问personmapper.xml中的sql语句呢? 命名空间+ .id
list<person> list = session.selectlist(
"com.luogg.mapper.personmapper.find"
);
system.out.println(list.size());
for
(person p : list){
system.out.println(p);
}
}
}
|
运行结果
以上所述是小编给大家介绍的mybatis框架入门学习教程,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我网站的支持! 。
原文链接:http://www.cnblogs.com/luogg/archive/2017/02/17/6410125.html 。
最后此篇关于mybatis框架入门学习教程的文章就讲到这里了,如果你想了解更多关于mybatis框架入门学习教程的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我需要开发一个简单的网站,我通常使用 bootstrap CSS 框架,但是我想使用 Gumbyn,它允许我使用 16 列而不是 12 列。 我想知道是否: 我可以轻松地改变绿色吗? 如何使用固定布局
这个问题在这里已经有了答案: 关闭 13 年前。 与直接编写 PHP 代码相比,使用 PHP 框架有哪些优点/缺点?
我开发了一个 Spring/JPA 应用程序:服务、存储库和域层即将完成。 唯一缺少的层是网络层。我正在考虑将 Playframework 2.0 用于 Web 层,但我不确定是否可以在我的 Play
我现有的 struts Web 应用程序具有单点登录功能。然后我将使用 spring 框架创建一个不同的 Web 应用程序。然后想要使用从 struts 应用程序登录的用户来链接新的 spring 应
我首先使用Spark框架和ORMLite处理网页上表单提交的数据,在提交中文字符时看到了unicode问题。我首先想到问题可能是由于ORMLite,因为我的MySQL数据库的字符集已设置为使用utf8
我有一个使用 .Net 4.5 功能的模块,我们的应用程序也适用于 XP 用户。所以我正在考虑将这个 .net 4.5 依赖模块移动到单独的项目中。我怎样才能有一个解决方案,其中有两个项目针对不同的版
我知道这是一个非常笼统的问题,但我想我并不是真的在寻找明确的答案。作为 PHP 框架的新手,我很难理解它。 Javascript 框架,尤其是带有 UI 扩展的框架,似乎通过将 JS 代码与设计分开来
我需要收集一些关于现有 ORM 解决方案的信息。 请随意编写任何编程语言。 你能谈谈你用过的最好的 ORM 框架吗?为什么它比其他的更好? 最佳答案 我使用了 NHibernate 和 Entity
除了 Apple 的 SDK 之外,还有什么强大的 iPhone 框架可供开始开发?有没有可以加快开发时间的方法? 最佳答案 此类框架最大的是Three20 。 Facebook 和许多其他公司都使用
有人可以启发我使用 NodeJS 的 Web 框架吗?我最近开始从免费代码营学习express js,虽然一切进展顺利,但我对express到底是什么感到困惑。是全栈框架吗?纯粹是为了后端吗?我发现您
您可以推荐哪种 Ajax 框架/工具包来构建使用 struts 的 Web 应用程序的 GUI? 最佳答案 我会说你的 AJAX/javascript 库选择应该较少取决于你的后端是如何实现的,而更多
我有生成以下错误的 python 代码: objc[36554]: Class TKApplication is implemented in both /Library/Frameworks/Tk.
首先,很抱歉,如果我问的问题很明显,因为我没有编程背景,那我去吧: 我想运行一系列测试场景并在背景部分声明了几个变量(我打印它们以仔细检查它们是否已正确声明),第一个是整数,另外两个字符串为你可以看到
在我们承担的一个项目中,我们正在寻找一个视频捕获和录制库。我们的基础工作(基于 google 搜索)表明 vlc (libvlc)、ffmpeg (libavcodec) 和 gstreamer 是三
我试过没有运气的情况下寻找某种功能来杀死/中断Play中的正常工作!框架。 我想念什么吗?还是玩了!实际没有添加此功能? 最佳答案 Java stop类中没有像Thread方法那样的东西,由于种种原因
我们希望在我们的系统中保留所有重大事件的记录。例如,在数据库可能存储当前用户状态的地方,事件日志应记录对该状态的所有更改以及更改发生的时间。 事件记录工具应该尽可能接近于事件引发器的零开销,应该容纳结
那里有 ActionScript 2.0/3.0 的测试框架列表吗? 最佳答案 2010-05-18 更新 由于这篇文章有点旧,而且我刚刚收到了赞成票,因此可能值得提供一些更新的信息,这样人们就不会追
我有一个巨大的 numpy 数组列表(一维),它们是不同事件的时间序列。每个点都有一个标签,我想根据其标签对 numpy 数组进行窗口化。我的标签是 0、1 和 2。每个窗口都有一个固定的大小 M。
我是 Play 的新手!并编写了我的第一个应用程序。这个应用程序有一组它依赖的 URL,从 XML 响应中提取数据并返回有效的 URL。 此应用程序需要在不同的环境(Dev、Staging 和 Pro
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 4年前关闭。 Improve thi
我是一名优秀的程序员,十分优秀!