您的位置:首页 > 其它

[MyBatis日记](2)MyBatis创建一个简单项目

2016-02-06 18:54 351 查看
使用MyBatis的前提条件是你电脑上已经安装了JDK与MySQL,在这我们不赘述这些东西,重点还是怎么利用MyBatis创建一个简单的演示项目。

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等不了解的话,建议你赶紧补充一些这方面的知识,可以参考我的学习日记:/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:

[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》

下载:点击打开链接
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: