mybatis概述
myBatis源自Apache的iBatis开源项目, 从iBatis3.x开始正式更名为MyBatis。它是一个优秀的持久层框架。
在与数据库交互中,我们通常会把sql代码硬编码到java代码中,这将不利于后期的维护。而mybatis实现了通过xml配置文件将sql代码与java文件的分离,方便后期的sql代码修改。
如何配置mybatis
1.引入jar包
可通过下载并导入mybatis包的方式,将mybatis导入至java工程,也可使用maven的properties配置导入mybatis。
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>x.x.x</version>
</dependency>
2.创建全局配置文件
在config中创建mybatis-config.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="class"><!-- default选择使用哪个数据库 -->
<!-- 配置数据库连接 -->
<environment id="mybatis">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/mybatis" />
<property name="username" value="root" />
<property name="password" value="root" />
</dataSource>
</environment>
<!-- 在environments中可配置多个environment来配置多个不同的数据库 -->
</environments>
</configuration>
3.配置映射文件
对应一个数据库操作interface,创建一个相对应的Mapper.xml。
public interface GoodsMapper {
GoodsInfo select(Integer goodsId);
}
<?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中的方法id需要与java文件中的方法名对应 -->
<mapper namespace="com.zzxtit.dao.GoodsMapper">
<select id="select" resultType="com.zzxtit.entity.Goods">
select goods_id goodsId, bar_code barCode, goods_name goodsName, unit, price, count, markup from goods where goods_id=#{goodsId}
</select>
</mapper>
此后,需要将这个mapper文件注册到mybatis全局配置中。
在configuration中加入如下代码:
<mappers><!-- 将xml文件注册到mybatis中 -->
<mapper resource="com/zzxtit/dao/GoodsMapper.xml"/>
</mappers>
如何使用mybatis
在配置好环境后,就可以快乐地使用mybatis了。
public class Main {
public static void main(String[] args) {
try {
//加载mybatis全局配置文件
InputStream inputStream = Resources.getResourceAsStream("mybatis_config.xml");
//创建session会话
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//选择是否开启事务(trur为自动提交,false需要在会话结束后手动关闭会话)
SqlSession sqlSession = sqlSessionFactory.openSession(true);
GoodsMapper goodsMapper = sqlSession.getMapper(GoodsMapper.class);
System.out.println(goodsMapper.select(1));
//sqlSession.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
result:
Goods(goodsId=2, barCode=201802, goodsName=农夫山泉, unit=罐, price=2.00, count=50.00, markup=矿泉水)