[MyBatis日记](2)MyBatis创建一个简单项目
2016-02-06 18:54
351 查看
使用MyBatis的前提条件是你电脑上已经安装了JDK与MySQL,在这我们不赘述这些东西,重点还是怎么利用MyBatis创建一个简单的演示项目。
1.数据库准备工作
使用一下SQL脚本往MySQLtest数据库中创建Student表,并插入样本数据:
执行SQL语句生成的Student表如下:
2.创建Java项目
在这我们创建JavaProject项目即可:
如果你没有使用过Maven或者Gradle之类的依赖管理工具,我们需要自己手动下载这些依赖的Jar包,手动添加到classpath中。话说如果对Maven等不了解的话,建议你赶紧补充一些这方面的知识,可以参考我的学习日记:/article/3633830.html
一共需要两个Jar包,我们可以从Maven中央仓库下载Jar包:http://mvnrepository.com/输入你想要的Jar搜索即可。
(1)mybatis目前是3.3.0版本http://mvnrepository.com/artifact/org.mybatis/mybatis/3.3.0
(2)mysql-connector-java目前是5.1.38版本http://mvnrepository.com/artifact/mysql/mysql-connector-java/5.1.38
3.MyBatis配置文件
创建MyBatis主要配置文件mybatis-conf.xml,其中包括数据库连接信息,数据库账号与密码等等,添加到classpath下即可,例如src目录下。
mybatis-conf.xml:
3.创建JavaBean
根据数据库表Student,创建StudentBean,包含4个属性:ID,name,age,school。
4.创建SQL映射器配置文件
创建SQL映射器配置文件studentMapper.xml,并把它放在com.sjf.bean包下:
XML文件包含的映射的SQL语句可以通过ID加上命名空间调用。创建映射器配置文件之后需要注册到MyBatis配置文件中:
观察一下,和刚开始的配置文件有啥区别?添加了<mapper>元素。
5.SqlSessionFactory单例类
下述代码中,我们创建了一个SqlSessionFactory对象,我们将使用它来获得SqlSession对象和执行映射的SQL语句。
6.实现对数据库表的操作
7.测试
运行结果:
8.它是如何工作的?
首先,我们配置了MyBatis最主要的配置文件-mybatis-config.xml,里面包含了JDBC连接参数;配置了映射器MapperXML配置文件文件,里面包含了SQL语句的映射。我们使用
mybatis-config.xml内的信息创建了SqlSessionFactory对象。每个数据库环境应该就一个SqlSessionFactory对象实例,所以我们使用了单例模式只创建一个SqlSessionFactory实例。
在StudentService.java中,我们在每一个方法中创建了一个新的SqlSession,并在方法功能完成后关闭SqlSession。在studentMapper.xml映射器配置文件中配置自定义SQL查询语句。通过namespace和id使用SqlSession来调用返回数据。
程序地址:点击打开链接
参考:《JavaPersistencewithMyBatis3》
下载:点击打开链接
1.数据库准备工作
使用一下SQL脚本往MySQLtest数据库中创建Student表,并插入样本数据:
[code]/*
NavicatMySQLDataTransfer
SourceServer:MySQL
SourceServerVersion:50624
SourceHost:localhost:3306
SourceDatabase:test
TargetServerType:MYSQL
TargetServerVersion:50624
FileEncoding:65001
Date:2016-02-0611:22:28
*/
SETFOREIGN_KEY_CHECKS=0;
------------------------------
--Tablestructurefor`student`
------------------------------
DROPTABLEIFEXISTS`student`;
CREATETABLE`student`(
`ID`int(11)NOTNULL,
`name`varchar(20)NOTNULL,
`age`int(11)DEFAULTNULL,
`school`varchar(20)DEFAULTNULL,
PRIMARYKEY(`ID`)
)ENGINE=InnoDBDEFAULTCHARSET=utf8;
------------------------------
--Recordsofstudent
------------------------------
INSERTINTO`student`VALUES('1','yoona','24','西安电子科技大学');
执行SQL语句生成的Student表如下:
2.创建Java项目
在这我们创建JavaProject项目即可:
如果你没有使用过Maven或者Gradle之类的依赖管理工具,我们需要自己手动下载这些依赖的Jar包,手动添加到classpath中。话说如果对Maven等不了解的话,建议你赶紧补充一些这方面的知识,可以参考我的学习日记:
一共需要两个Jar包,我们可以从Maven中央仓库下载Jar包:
(1)mybatis目前是3.3.0版本
(2)mysql-connector-java目前是5.1.38版本
3.MyBatis配置文件
创建MyBatis主要配置文件mybatis-conf.xml,其中包括数据库连接信息,数据库账号与密码等等,添加到classpath下即可,例如src目录下。
mybatis-conf.xml:
[code]<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPEconfigurationPUBLIC"-//mybatis.org//DTDConfig3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environmentsdefault="development">
<environmentid="development">
<transactionManagertype="JDBC"/>
<dataSourcetype="POOLED">
<propertyname="driver"value="com.mysql.jdbc.Driver"/>
<propertyname="url"value="jdbc:mysql://localhost:3306/test"/>
<propertyname="username"value="root"/>
<propertyname="password"value="root"/>
</dataSource>
</environment>
</environments>
</configuration>
3.创建JavaBean
根据数据库表Student,创建StudentBean,包含4个属性:ID,name,age,school。
[code]packagecom.sjf.bean;
publicclassStudent{
privateintID;
privateStringname;
privateintage;
privateStringschool;
publicintgetID(){
returnID;
}
publicvoidsetID(intiD){
ID=iD;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicintgetAge(){
returnage;
}
publicvoidsetAge(intage){
this.age=age;
}
publicStringgetSchool(){
returnschool;
}
publicvoidsetSchool(Stringschool){
this.school=school;
}
@Override
publicStringtoString(){
return"name:"+name+"age:"+age+"school:"+school;
}
}
4.创建SQL映射器配置文件
创建SQL映射器配置文件studentMapper.xml,并把它放在com.sjf.bean包下:
[code]<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPEmapperPUBLIC"-//mybatis.org//DTDMapper3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mappernamespace="com.sjf.bean.studentMapper">
<selectid="getStudent"parameterType="int"resultType="com.sjf.bean.Student">
select*fromStudentwhereID=#{ID}
</select>
</mapper>
XML文件包含的映射的SQL语句可以通过ID加上命名空间调用。创建映射器配置文件之后需要注册到MyBatis配置文件中:
[code]<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPEconfigurationPUBLIC"-//mybatis.org//DTDConfig3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environmentsdefault="development">
<environmentid="development">
<transactionManagertype="JDBC"/>
<dataSourcetype="POOLED">
<propertyname="driver"value="com.mysql.jdbc.Driver"/>
<propertyname="url"value="jdbc:mysql://localhost:3306/test"/>
<propertyname="username"value="root"/>
<propertyname="password"value="root"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapperresource="com/sjf/bean/studentMapper.xml"/>
</mappers>
</configuration>
观察一下,和刚开始的配置文件有啥区别?添加了<mapper>元素。
5.SqlSessionFactory单例类
下述代码中,我们创建了一个SqlSessionFactory对象,我们将使用它来获得SqlSession对象和执行映射的SQL语句。
[code]packagecom.sjf.bean;
importjava.io.IOException;
importjava.io.Reader;
importorg.apache.ibatis.io.Resources;
importorg.apache.ibatis.session.SqlSession;
importorg.apache.ibatis.session.SqlSessionFactory;
importorg.apache.ibatis.session.SqlSessionFactoryBuilder;
/**
*SqlSessionFactory单例类
*@authorsjf0115
*
*/
publicclassMyBatisSqlSessionFactory{
privatestaticSqlSessionFactoryfactory;
/**
*获取SqlSessionFactory
*@return
*@throwsIOException
*/
publicstaticSqlSessionFactorygetSqlSessionFactory(){
if(factory==null){
Stringresource="mybatis-conf.xml";
try{
Readerreader=Resources.getResourceAsReader(resource);
factory=newSqlSessionFactoryBuilder().build(reader);
}catch(IOExceptione){
e.printStackTrace();
}
}//if
returnfactory;
}
/**
*获取SqlSession
*@return
*@throwsIOException
*/
publicstaticSqlSessiongetSqlSession(){
returngetSqlSessionFactory().openSession();
}
}
6.实现对数据库表的操作
[code]packagecom.sjf.service;
importorg.apache.ibatis.session.SqlSession;
importcom.sjf.bean.MyBatisSqlSessionFactory;
importcom.sjf.bean.Student;
/**
*Student服务类
*@authorsjf0115
*
*/
publicclassStudentService{
/**
*根据ID获取学生信息
*@return
*/
publicStudentgetStudentByID(intID){
SqlSessionsession=MyBatisSqlSessionFactory.getSqlSession();
Stringstatement="com.sjf.bean.studentMapper.getStudent";
Studentstu=session.selectOne(statement,ID);
if(session!=null){
session.close();
}//if
returnstu;
}
}
7.测试
[code]packagecom.sjf.test;
importcom.sjf.bean.Student;
importcom.sjf.service.StudentService;
publicclassTest{
publicstaticvoidmain(String[]args){
StudentServiceservice=newStudentService();
Studentstu=service.getStudentByID(1);
System.out.println(stu.toString());
}
}
运行结果:
[code]name:yoonaage:24school:西安电子科技大学
8.它是如何工作的?
首先,我们配置了MyBatis最主要的配置文件-mybatis-config.xml,里面包含了JDBC连接参数;配置了映射器MapperXML配置文件文件,里面包含了SQL语句的映射。我们使用
mybatis-config.xml内的信息创建了SqlSessionFactory对象。每个数据库环境应该就一个SqlSessionFactory对象实例,所以我们使用了单例模式只创建一个SqlSessionFactory实例。
在StudentService.java中,我们在每一个方法中创建了一个新的SqlSession,并在方法功能完成后关闭SqlSession。在studentMapper.xml映射器配置文件中配置自定义SQL查询语句。通过namespace和id使用SqlSession来调用返回数据。
程序地址:
参考:《JavaPersistencewithMyBatis3》
下载:
相关文章推荐
- Uva201 Squares
- Ubuntu安装sar出错Please check if data collecting is enabled in /etc/default/sysstat
- C# 基础加强(五) 抽象类、抽象方法
- VB6中ByRef 参数类型不正确的处理方法
- 蟠桃记
- HDU 1976 prime path
- RocEDU.阅读.写作《乌合之众》(一)
- POJ3281 Dining(最大流)
- Kinect For Windows V2开发日志一:开发环境的配置
- 导航控制器 UINavigationController
- 【分享】GEARS of DRAGOON 1+2【日文硬盘版】[带全CG存档&攻略+SSG修改+打开存档补丁]
- java学习心得——代码重铸
- hdu5086——Revenge of Segment Tree
- HDU 4859(Bestcoder #1 1003)海岸线(网络流之最小割)
- mysql jdbc的使用
- Java基础——I/O
- Paltform总线与其它总线框架的关系探究
- 第一周总结
- 3-04. 一元多项式的乘法与加法运算(20)(ZJU_PAT 结构体)
- 学习笔记------数据结构(C语言版) 队列的顺序存储/循环队列