mybatis环境搭建

这几天按着慕课网上的教程搭建了mybatis,做个记录。

先说说mybatis是什么。
mybatis:apache的一个开源项目,持久层的一个开发组件,加快开发速度;
ps:解释下什么是持久层,百度百科的上说将数据存放于不易丢失的器件上,粗糙的理解就是数据库的存储和读取。
所以,mybatis实际上负责数据库的链接、数据的增删改查。

以下是项目的目录结构:

[img]http://dl2.iteye.com/upload/attachment/0115/2237/ade6432d-df7b-3694-b332-fc4b155c3557.png[/img]
红色的问号是丢失引用的jar包,不要在意这些细节
以下是使用JDBC进行mysql配置一个简单的例子。

import java.sql.*;

public class heihei {
public static void main(String[] args) throws Exception {
// 加载驱动
String driver = "com.mysql.jdbc.Driver";
// 数据库的网络地址,127.0.0.1是本地IP,3306是端口号,可以在mysql配置文件中修改
String url = "jdbc:mysql://127.0.0.1:3306/test";
// 加载类
Class.forName(driver);
// 数据库的账户和密码
Connection connecter = DriverManager.getConnection(url, "root", "root");
if (!connecter.isClosed())
System.out.println("success in getConnetion");
Statement statement = connecter.createStatement();
// 最简单的sql语句
ResultSet rs = statement.executeQuery("select * from heiheihei");
String No = null;
while (rs.next()) { // 打印结果
No = rs.getString("id");
System.out.println(No);
}
}
}


相比之后的mybatis代码,会发现以上的代码似乎"简洁"很多。
不过在开发过程中,这并不是我们想要的,因为:
1.实际开发关心的只是sql语句和查询结果的使用;
2.实际开发会有很多的参数,使用java传参方法并不方便。

mybatis比较好地解决了上诉两个问题,通过配置文件来实现数据库的连接和sql语句的修改。

以下是用到的一些jar包,可以到对应的网站去下载。

[img]http://dl2.iteye.com/upload/attachment/0115/2213/254c90a5-441f-37f0-81ba-29c3c1ccabce.png[/img]

其中mysql-connector-java.jar是mysql驱动,可以到mysql官网下载;
mybatis.jar是mybatis使用的jar包;
log4j.jar是记录日志用的第三方插件。

下面将一一介绍mybatis的配置文件:
1.Configuration.xml 这个文件源码包中有,不过需要一些改动,就不贴路径了,直接粘上改动后的配置

<?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="development">
<environment id="development">
<transactionManager type="JDBC">
<property name="" value=""/>
</transactionManager>
<dataSource type="UNPOOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://127.0.0.1:3306/test?useSSL=false"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="sqlxml/User.xml"/>
</mappers>

</configuration>

重点关注中间的几项配置,这其实就是连接mysql数据的各种配置。
useSSL=false是解决控制报warning的一项配置,没有的话,也没关系。

<mappers>
<mapper resource="sqlxml/User.xml"/>
</mappers>

是加载其他xml文件,该文件就是存放sql语句的文件。

以下是具体的sql语句文件,文件名是User.xml,也就是上面配置文件引用的。

<?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="User">
<select id="test" resultType="entity.Name">
select * from heiheihei
</select>
</mapper>

namespace+id组成了该sql语句的唯一标识,将由java代码调用;
resultType为返回类型,entity.Name是包名加类型,需要写全。

resultType和resultMap的区别,等弄明白单独聊,网上看了很多博客,感觉说的不太清楚。

以下是entity.Name实体类,用于存储mysql查询出来的数据,变量名称需要跟查询出来的结果对应,即列名或者重命名的名称。

package entity;

public class Name {
private int id;
private String name;
private int year;

public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getYear() {
return year;
}
public void setYear(int year) {
this.year = year;
}


}


配置、sql语句、返回实体类都有了,下面就是如何使用这些文件了。


package db;

import java.io.IOException;
import java.io.Reader;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class DBAccess {
public SqlSession getSqlSession() throws IOException{
Reader reader = Resources.getResourceAsReader("config/Configuration.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
SqlSession sqlSession = sqlSessionFactory.openSession();
return sqlSession;
}
}


以下是业务层具体的执行代码


package dao;

import java.io.IOException;
import java.util.List;

import org.apache.ibatis.session.SqlSession;

import db.DBAccess;
import entity.Name;

public class QueryDB {
public static void main(String[] args) {
//获取数据库链接
DBAccess dBAccess = new DBAccess();
SqlSession sqlSession = null;
try {
//使用mybatis获得sqlSession
sqlSession = dBAccess.getSqlSession();
//调用User.xml文件的test方法
List<Name> result = sqlSession.selectList("User.test");
//打印查询结果
for (Name name : result) {
System.out.println(name.getId());
}
} catch (IOException e) {
e.printStackTrace();
} finally {
sqlSession.close();
}
}
}


配置完成之后,会发现,sql语句已经和数据库的配置文件完全分离了,也就达到了开头第一个目标,至于如何优化传参,将在后面一篇讲解mybatis参数的文章中阐述。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值