- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章mybatis简介与配置_动力节点Java学院整理由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
MyBatis简介 。
MyBatis 是一个可以自定义SQL、存储过程和高级映射的持久层框架。MyBatis 摒除了大部分的JDBC代码、手工设置参数和结果集重获。MyBatis 只使用简单的XML 和注解来配置和映射基本数据类型、Map 接口和POJO 到数据库记录。相对Hibernate和Apache OJB等“一站式”ORM解决方案而言,Mybatis 是一种“半自动化”的ORM实现。 需要使用的Jar包:mybatis-3.0.2.jar(mybatis核心包)。mybatis-spring-1.0.0.jar(与Spring结合包).
下载地址: http://ibatis.apache.org/tools/ibator http://code.google.com/p/mybatis/ 。
MyBatis+Spring+MySql简单配置 。
搭建Spring环境 。
1,建立maven的web项目; 2,加入Spring框架、配置文件; 3,在pom.xml中加入所需要的jar包(spring框架的、mybatis、mybatis-spring、junit等); 4,更改web.xml和spring的配置文件; 5,添加一个jsp页面和对应的Controller; 6,测试.
建立MySql数据库 。
建立一个学生选课管理数据库.
表:学生表、班级表、教师表、课程表、学生选课表.
逻辑关系:每个学生有一个班级;每个班级对应一个班主任教师;每个教师只能当一个班的班主任; 。
使用下面的sql进行建数据库,先建立学生表,插入数据(2条以上).
更多sql请下载项目源文件,在resource/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
|
/* 建立数据库 */
CREATE
DATABASE
STUDENT_MANAGER;
USE STUDENT_MANAGER;
/***** 建立student表 *****/
CREATE
TABLE
STUDENT_TBL
(
STUDENT_ID
VARCHAR
(255)
PRIMARY
KEY
,
STUDENT_NAME
VARCHAR
(10)
NOT
NULL
,
STUDENT_SEX
VARCHAR
(10),
STUDENT_BIRTHDAY
DATE
,
CLASS_ID
VARCHAR
(255)
);
/*插入学生数据*/
INSERT
INTO
STUDENT_TBL (STUDENT_ID,
STUDENT_NAME,
STUDENT_SEX,
STUDENT_BIRTHDAY,
CLASS_ID)
VALUES
(123456,
'某某某'
,
'女'
,
'1980-08-01'
,
121546
)
|
创建连接MySql使用的配置文件mysql.properties.
1
2
|
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/student_manager?user=root&password=bjpowernode&useUnicode=true&characterEncoding=UTF-8
|
搭建MyBatis环境 。
顺序随便,现在的顺序是因为可以尽量的少的修改写好的文件.
创建实体类: StudentEntity 。
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
|
public
class
StudentEntity
implements
Serializable {
private
static
final
long
serialVersionUID = 3096154202413606831L;
private
ClassEntity classEntity;
private
Date studentBirthday;
private
String studentID;
private
String studentName;
private
String studentSex;
public
ClassEntity getClassEntity() {
return
classEntity;
}
public
Date getStudentBirthday() {
return
studentBirthday;
}
public
String getStudentID() {
return
studentID;
}
public
String getStudentName() {
return
studentName;
}
public
String getStudentSex() {
return
studentSex;
}
public
void
setClassEntity(ClassEntity classEntity) {
this
.classEntity = classEntity;
}
public
void
setStudentBirthday(Date studentBirthday) {
this
.studentBirthday = studentBirthday;
}
public
void
setStudentID(String studentID) {
this
.studentID = studentID;
}
public
void
setStudentName(String studentName) {
this
.studentName = studentName;
}
public
void
setStudentSex(String studentSex) {
this
.studentSex = studentSex;
}
}
|
创建数据访问接口 。
Student类对应的dao接口:StudentMapper.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
public
interface
StudentMapper {
public
StudentEntity getStudent(String studentID);
public
StudentEntity getStudentAndClass(String studentID);
public
List<StudentEntity> getStudentAll();
public
void
insertStudent(StudentEntity entity);
public
void
deleteStudent(StudentEntity entity);
public
void
updateStudent(StudentEntity entity);
}
|
创建SQL映射语句文件 。
Student类的sql语句文件StudentMapper.xml 。
resultMap标签:表字段与属性的映射.
Select标签:查询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
|
<?
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">
<
mapper
namespace
=
"com.manager.data.StudentMapper"
>
<
resultMap
type
=
"StudentEntity"
id
=
"studentResultMap"
>
<
id
property
=
"studentID"
column
=
"STUDENT_ID"
/>
<
result
property
=
"studentName"
column
=
"STUDENT_NAME"
/>
<
result
property
=
"studentSex"
column
=
"STUDENT_SEX"
/>
<
result
property
=
"studentBirthday"
column
=
"STUDENT_BIRTHDAY"
/>
</
resultMap
>
<!-- 查询学生,根据id -->
<
select
id
=
"getStudent"
parameterType
=
"String"
resultType
=
"StudentEntity"
resultMap
=
"studentResultMap"
>
<![CDATA[
SELECT * from STUDENT_TBL ST
WHERE ST.STUDENT_ID = #{studentID}
]]>
</
select
>
<!-- 查询学生列表 -->
<
select
id
=
"getStudentAll"
resultType
=
"commanagerdatamodelStudentEntity"
resultMap
=
"studentResultMap"
>
<![CDATA[
SELECT * from STUDENT_TBL
]]>
</
select
>
</
mapper
>
|
创建MyBatis的mapper配置文件 。
在src/main/resource中创建MyBatis配置文件:mybatis-config.xml.
typeAliases标签:给类起一个别名。com.manager.data.model.StudentEntity类,可以使用StudentEntity代替.
Mappers标签:加载MyBatis中实体类的SQL映射语句文件.
1
2
3
4
5
6
7
8
9
10
|
<?
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
>
<
typeAliases
>
<
typeAlias
alias
=
"StudentEntity"
type
=
"com.manager.data.model.StudentEntity"
/>
</
typeAliases
>
<
mappers
>
<
mapper
resource
=
"com/manager/data/maps/StudentMapper.xml"
/>
</
mappers
>
</
configuration
>
|
修改Spring 的配置文件 。
主要是添加SqlSession的制作工厂类的bean:SqlSessionFactoryBean,(在mybatis.spring包中)。需要指定配置文件位置和dataSource.
和数据访问接口对应的实现bean。通过MapperFactoryBean创建出来。需要执行接口类全称和SqlSession工厂bean的引用.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
<!-- 导入属性配置文件 -->
<
context:property-placeholder
location
=
"classpath:mysql.properties"
/>
<
bean
id
=
"dataSource"
class
=
"org.springframework.jdbc.datasource.DriverManagerDataSource"
>
<
property
name
=
"driverClassName"
value
=
"${jdbc.driverClassName}"
/>
<
property
name
=
"url"
value
=
"${jdbc.url}"
/>
</
bean
>
<
bean
id
=
"transactionManager"
class
=
"org.springframework.jdbc.datasource.DataSourceTransactionManager"
>
<
property
name
=
"dataSource"
ref
=
"dataSource"
/>
</
bean
>
<
bean
id
=
"sqlSessionFactory"
class
=
"org.mybatis.spring.SqlSessionFactoryBean"
>
<
property
name
=
"configLocation"
value
=
"classpath:mybatis-config.xml"
/>
<
property
name
=
"dataSource"
ref
=
"dataSource"
/>
</
bean
>
<!— mapper bean -->
<
bean
id
=
"studentMapper"
class
=
"org.mybatis.spring.MapperFactoryBean"
>
<
property
name
=
"mapperInterface"
value
=
"com.manager.data.StudentMapper"
/>
<
property
name
=
"sqlSessionFactory"
ref
=
"sqlSessionFactory"
/>
</
bean
>
|
也可以不定义mapper的bean,使用注解:
将StudentMapper加入注解 。
1
2
3
4
|
@Repository
@Transactional
public
interface
StudentMapper {
}
|
对应的需要在dispatcher-servlet.xml中加入扫描:
1
2
3
4
5
|
<
bean
class
=
"org.mybatis.spring.mapper.MapperScannerConfigurer"
>
<
property
name
=
"annotationClass"
value
=
"org.springframework.stereotype.Repository"
/>
<
property
name
=
"basePackage"
value
=
"comlimingmanager"
/>
<
property
name
=
"sqlSessionFactory"
ref
=
"sqlSessionFactory"
/>
</
bean
>
|
测试StudentMapper 。
使用SpringMVC测试,创建一个TestController,配置tomcat,访问index.do页面进行测试:
1
2
3
4
5
6
7
8
9
10
11
12
|
@Controller
public
class
TestController {
@Autowired
private
StudentMapper studentMapper;
@RequestMapping
(value =
"index.do"
)
public
void
indexPage() {
StudentEntity entity = studentMappergetStudent(
"10000013"
);
System.out.println(
"name:"
+ entity.getStudentName());
}
}
|
使用Junit测试:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
@RunWith
(value = SpringJUnit4ClassRunner.
class
)
@ContextConfiguration
(value =
"test-servletxml"
)
public
class
StudentMapperTest {
@Autowired
private
ClassMapper classMapper;
@Autowired
private
StudentMapper studentMapper;
@Transactional
public
void
getStudentTest(){
StudentEntity entity = studentMapper.getStudent(
"10000013"
);
System.out.println(
""
+ entity.getStudentID() + entity.getStudentName());
List<StudentEntity> studentList = studentMapper.getStudentAll();
for
( StudentEntity entityTemp : studentList){
System.out.println(entityTemp.getStudentName());
}
}
}
|
。
最后此篇关于mybatis简介与配置_动力节点Java学院整理的文章就讲到这里了,如果你想了解更多关于mybatis简介与配置_动力节点Java学院整理的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我正在编写一个具有以下签名的 Java 方法。 void Logger(Method method, Object[] args); 如果一个方法(例如 ABC() )调用此方法 Logger,它应该
我是 Java 新手。 我的问题是我的 Java 程序找不到我试图用作的图像文件一个 JButton。 (目前这段代码什么也没做,因为我只是得到了想要的外观第一的)。这是我的主课 代码: packag
好的,今天我在接受采访,我已经编写 Java 代码多年了。采访中说“Java 垃圾收集是一个棘手的问题,我有几个 friend 一直在努力弄清楚。你在这方面做得怎么样?”。她是想骗我吗?还是我的一生都
我的 friend 给了我一个谜语让我解开。它是这样的: There are 100 people. Each one of them, in his turn, does the following
如果我将使用 Java 5 代码的应用程序编译成字节码,生成的 .class 文件是否能够在 Java 1.4 下运行? 如果后者可以工作并且我正在尝试在我的 Java 1.4 应用程序中使用 Jav
有关于why Java doesn't support unsigned types的问题以及一些关于处理无符号类型的问题。我做了一些搜索,似乎 Scala 也不支持无符号数据类型。限制是Java和S
我只是想知道在一个 java 版本中生成的字节码是否可以在其他 java 版本上运行 最佳答案 通常,字节码无需修改即可在 较新 版本的 Java 上运行。它不会在旧版本上运行,除非您使用特殊参数 (
我有一个关于在命令提示符下执行 java 程序的基本问题。 在某些机器上我们需要指定 -cp 。 (类路径)同时执行java程序 (test为java文件名与.class文件存在于同一目录下) jav
我已经阅读 StackOverflow 有一段时间了,现在我才鼓起勇气提出问题。我今年 20 岁,目前在我的家乡(罗马尼亚克卢日-纳波卡)就读 IT 大学。足以介绍:D。 基本上,我有一家提供簿记应用
我有 public JSONObject parseXML(String xml) { JSONObject jsonObject = XML.toJSONObject(xml); r
我已经在 Java 中实现了带有动态类型的简单解释语言。不幸的是我遇到了以下问题。测试时如下代码: def main() { def ks = Map[[1, 2]].keySet()
一直提示输入 1 到 10 的数字 - 结果应将 st、rd、th 和 nd 添加到数字中。编写一个程序,提示用户输入 1 到 10 之间的任意整数,然后以序数形式显示该整数并附加后缀。 public
我有这个 DownloadFile.java 并按预期下载该文件: import java.io.*; import java.net.URL; public class DownloadFile {
我想在 GUI 上添加延迟。我放置了 2 个 for 循环,然后重新绘制了一个标签,但这 2 个 for 循环一个接一个地执行,并且标签被重新绘制到最后一个。 我能做什么? for(int i=0;
我正在对对象 Student 的列表项进行一些测试,但是我更喜欢在 java 类对象中创建硬编码列表,然后从那里提取数据,而不是连接到数据库并在结果集中选择记录。然而,自从我这样做以来已经很长时间了,
我知道对象创建分为三个部分: 声明 实例化 初始化 classA{} classB extends classA{} classA obj = new classB(1,1); 实例化 它必须使用
我有兴趣使用 GPRS 构建车辆跟踪系统。但是,我有一些问题要问以前做过此操作的人: GPRS 是最好的技术吗?人们意识到任何问题吗? 我计划使用 Java/Java EE - 有更好的技术吗? 如果
我可以通过递归方法反转数组,例如:数组={1,2,3,4,5} 数组结果={5,4,3,2,1}但我的结果是相同的数组,我不知道为什么,请帮助我。 public class Recursion { p
有这样的标准方式吗? 包括 Java源代码-测试代码- Ant 或 Maven联合单元持续集成(可能是巡航控制)ClearCase 版本控制工具部署到应用服务器 最后我希望有一个自动构建和集成环境。
我什至不知道这是否可能,我非常怀疑它是否可能,但如果可以,您能告诉我怎么做吗?我只是想知道如何从打印机打印一些文本。 有什么想法吗? 最佳答案 这里有更简单的事情。 import javax.swin
我是一名优秀的程序员,十分优秀!