MyBatis的实现

什么是MyBatis

MyBatis源自Apache的iBatis开源项目, 从iBatis3.x开始正式更名为MyBatis。它是一个优秀的持久层框架。

为什么使用MyBatis

为了和数据库进行交互,通常的做法是将SQL语句写在Java代码中,SQL语句和Java代码耦合在一起不利于后期维护修改,而MyBatis能够帮助我们将SQL语句和Java代码分离,方便了后期因需求变动而对SQL语句进行修改。(联系properties文件的作用)

如何使用MyBatis

  1. 引入jar包
    在这里插入图片描述
  2. 创建一个接口,采用模块化开发的方式对应数据库中的一张表
public interface IUserInfoDao {

	//这里我们定义一个抽象方法,通过id字段来获取user_name字段
	String getUserName(String id);
}
  1. 接下来创建与配置xml文件
  • 先来配置user_info模块的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="live.sunhao.userinfo.dao.IUserInfoDao">
	<!-- 这是一个select标签 对应着select语句 这里的id对应着接口中的方法名,resultType是返回值类型 #{id}对应着方法中传入的参数值-->
 	<select id="getUserName" resultType="java.lang.String">
  		select user_name from user_info where id=#{id}
 	</select>
</mapper>
  • 再来配置整个项目的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="test"><!-- 这里default决定默认使用哪个环境,如下有两种环境 一个用来测试(test) 一个是正式开发的环境(dev) -->
  		<environment id="test">
   			<transactionManager type="JDBC"></transactionManager>
   			<dataSource type="POOLED">
    				<property name="driver" value="com.mysql.jdbc.Driver" />
    				<property name="url" value="jdbc:mysql://127.0.0.1:3306/test" />
    				<property name="username" value="root" />
    				<property name="password" value="root" />
   			</dataSource>
  		</environment>
  		
  		<environment id="dev">
   			<transactionManager type="JDBC"></transactionManager>
   			<dataSource type="POOLED">
    				<property name="driver" value="oracle.jdbc.driver.OracleDriver" />
    				<property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:keeper" />
    				<property name="username" value="root" />
    				<property name="password" value="root" />
  	 		</dataSource>
	  		</environment>
	</environments>
 
 	<!-- 这里将每个模块的xml文件 配置到整个项目的xml文件中,我这里暂时就一个模块 -->
 	<mappers>
  		<mapper resource="user_info.xml"/>
 	</mappers>
</configuration>
  1. 写一个测试类
public class Test {
	public static void main(String[] args) {
  		try {
   			InputStream inputStream = Resources.getResourceAsStream("mybatis_config.xml");
   			SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
   			//SqlSession对象代指一次数据库连接
   			SqlSession sqlSession = sqlSessionFactory.openSession();
   			IUserInfoDao userInfoDao = sqlSession.getMapper(IUserInfoDao.class);
   			System.out.println(userInfoDao.getClass().getName());
   			String userName = userInfoDao.getUserName("3ddcf637-15a8-49d9-a378-b3fa2f2f9c65");
   			System.out.println(userName);
  		} catch (IOException e) {
   			e.printStackTrace();
  		}
 	}
 }

最后看一下控制台输出:
在这里插入图片描述
我们可以看到这里是JDK动态代理,userInfoDao是代理类对象,自动实现了我们创建的接口,从而实现了通过36位id找到user_name

发布了101 篇原创文章 · 获赞 3 · 访问量 2240

猜你喜欢

转载自blog.csdn.net/S_Tian/article/details/104251587