一、Mybatis简介
Mybatis是一个基于Java的持久层框架,主要用于帮助程序员将数据存入
数据库或者从数据库中取出数据。传统的jdbc对数据库的操作有很多重复
的代码块,比如数据取出时的封装操作和数据库的建立连接等,而通过
Mybatis能够减少这些重复的代码块,提高开发的效率。
二、Mybatis使用步骤
1、导入mybatis相关jar包
用mybatis实现对数据库的操作主要需要以下jar包
2、配置mybatis核心配置文件
<?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>
<!--环境配置,连接的数据库,这里使用的是MySQL-->
<environments default="mysql">
<environment id="mysql">
<!--指定事务管理的类型,这里简单使用Java的JDBC的提交和回滚设置-->
<transactionManager type="JDBC"/>
<!--dataSource 指连接源配置,POOLED是JDBC连接对象的数据源连接池的实现-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/exercise"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<mappers>
<!--这是告诉Mybatis区哪找持久化类的映射文件,对于在src下的文件直接写文件名,
如果在某包下,则要写明路径,如:com/mybatistest/config/User.xml-->
<mapper resource="cn/ll/entity/goods.mapper.xml"/>
</mappers>
</configuration>
在项目的根目录下新建一个mybatis.cfg.xml文件,在配置文件中对连接的数据库进行相关描述,并告诉mybatis映射文件的路径所在
3、创建SqlSessionFactory以及获得SqlSession
public class MybatisUtil {
public static SqlSessionFactory getSqlSessionFactory() throws IOException {
String resource = "mybatis.cfg.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
return sqlSessionFactory;
}
public static SqlSession getSqlSession() throws IOException {
SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
return sqlSessionFactory.openSession();
}
}
创建一个MybatisUtil类,并在该类中解析核心配置文件mybatis.cfg.xml,连接到数据库。
4、创建一个实体类
public class Goods {
private int id;
private String description;
private Float current_price;
private Float original_price;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public Float getCurrent_price() {
return current_price;
}
public void setCurrent_price(Float current_price) {
this.current_price = current_price;
}
public Float getOriginal_price() {
return original_price;
}
public void setOriginal_price(Float original_price) {
this.original_price = original_price;
}
}
创建一个goods的实体类,用来封装从数据库中取出来的数据类型,具体实体类的编写还要依照数据库的数据类型进行。
5、编写sql语句的映射文件
<?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="cn.ll.entity.GoodsMapper">
<select id="selectGoods" resultType="cn.ll.entity.Goods">
select * from theme where id = #{id}
</select>
</mapper>
针对goods实体类建一个goods.mapper.xml的映射文件,其中的namespace是自己明明的mapper命名空间,resultType="cn.ll.entity.Goods"对应着goods实体类的包名、类名,select标签里为sql语句。
6、测试
public class Test {
public static void main(String[] args) throws IOException {
SqlSession sqlSession = MybatisUtil.getSqlSession();
Goods goods = sqlSession.selectOne("cn.ll.entity.GoodsMapper.selectGoods",5);
System.out.println("id="+goods.getId()+",description="+goods.getDescription());
}
}
编写测试类代码Test.java,用映射文件的selectGoods读取数据库中的一条记录,以下是运行结果: