因为连接数据库的大部分代码是一样的,所以就有一些持久化框架来完成对数据库的操作。现在使用最多的是mybatis和hibernate,最方便的是hibernate,但效率是最低的,jdbc是最麻烦的,但却是效率最高的。mybatis的效率比hibernate好得多。所以,最后,我选择使用了mybatis。
mybatis有一份中文文档,地址是:点击打开链接
在这里,可以选择语言。但这里是不支持下载包的,需要自行去下载。
我这里,介绍一下一个入门过程,也是分步的。
第一步:把jar包导入到项目
因为需要连接数据库,所以需要导两个包,一个是mybatis的包,还有一个是数据库的驱动包。我使用的mysql,导入后如下图所示:
第二步:创建相关的config.xml文件
1.在src根目录创建一个mybatis的相关配置文件,我自己创建的名字是mybatis-config.xml,这个名字可以自定义。
这个配置文件大概是这个样子,它需要配置的东西,最主要的是上面的数据源,用来与数据库的链接。我在上面加上注释吧。
<?xml version="1.0" encoding="UTF-8" ?>
<!-- 这个东西一定要加,它是xml的语法规则,加上这句话后,才会有代码提示 -->
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 这个是要使用的环境,我们会配置多个环境,一个开发环境,一个生产环境,我们测试的时候,就使用开发环境 -->
<environments default="development">
<!-- 这里是创建了一个开发环境,我们也可以再创建其它环境,但要使用它,必须在上面更改 -->
<environment id="development">
<!-- 使用的事务管理,默认的使用的是jdbc,JDBC – 这个配置就是直接使用了 JDBC 的提交和回滚设置,它依赖于从数据源得到的连接来管理事务范围
我觉得,最后,去读一下文档,有更详细地介绍 -->
<transactionManager type="JDBC" />
<!-- 数据源,也可以使用其它连接池,这个,在文档也有介绍,可以支看一下,了解一下这方面的知识 -->
<dataSource type="POOLED">
<property name="driver" value="${driver}" />
<property name="url" value="${url}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
</dataSource>
</environment>
</environments>
<!-- 映射文件, MyBatis 去哪里找映射文件,剩下的细节就应该是每个 SQL 映射文件了,后面再介绍怎么用这个 -->
<mappers>
<mapper resource="org/mybatis/example/BlogMapper.xml" />
</mappers>
</configuration>
第三步:创建实体类
现在,就可以去创建一个实体类了,譬如下面这样:
public class TestMyBatis {
private String usernameString;
public String getUsernameString() {
return usernameString;
}
public void setUsernameString(String usernameString) {
this.usernameString = usernameString;
}
}
这是最简单的一个类,只有一个string变量,然后是它的get和set方法。
第四步:创建映射文件
有了上面的实体类以后,就需要创建一个映射文件,一般是使用的类名相同的名字,但后缀是xml。
创建配置文件的规则也非常简单,这里是文档连接:
映射文件规则
这个映射文件,要添加到我们创建的config文件中,就是最下面的mapper
<?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="cc.penrose.test.TestMyBatis">
<!-- id这个参数,是给这个方法起的一个id名字,parameterType是参数,这个是insert方法,要插入数据,所以直接传一个对象进来 -->
<insert id="add" parameterType="cc.penrose.test.TestMyBatis">
<!-- 这是一条sql语句,${usernameString} 东西的意思,就是会去调用getUsernameString这个方法-->
insert mytest (adress) values (${usernameString});
</insert>
</mapper>
第五步:创建SQLSession,完成对数据库的操作
@Test
public void test() {
InputStream inputStream;
try {
//声明配置文件的地址
String resource = "mybatis-config.xml";
//根据配置文件地址来创建一个输入流
inputStream = Resources.getResourceAsStream(resource);
//根据配置文件输入流,来创建SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//打开一个session
SqlSession session = sqlSessionFactory.openSession();
//新创建一个对象
TestMyBatis testMyBatis = new TestMyBatis();
testMyBatis.setUsernameString("hello world,hahaha");
//执行sql方法,第一个参数是我们mapper文件里声明的哪个方法的全称,第二个是方法的参数
session.insert("cc.penrose.test.TestMyBatis.add", testMyBatis);
System.out.println(session.toString());
//提交事务
session.commit();
//关闭事务
session.close();
} catch (IOException e) {
e.printStackTrace();
}
}
最终结果: