通过接口直接映射Sql

本文探讨了如何通过XML和注解两种方式在接口中直接映射SQL操作,包括接口定义及其在实际应用中的实现细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

通过接口直接映射Sql(XML)

接口定义:

package cn.et.lession02.xml;

public interface UserInfoMapper {
	
	public UserInfo selectUserInfo(String id);
}
mybatis.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>
 <!-- 
 	mybatis的核心配置文件
 		1.数据库的连接信息(连接池)
  -->
  <properties resource="jdbc.properties"></properties>
  <environments default="development">
    <environment id="development">
    <!-- 事务管理器 默认使用jdbc事务 -->
      <transactionManager type="JDBC"/>
      <!-- 默认连接池 -->
      <dataSource type="POOLED">
        <property name="driver" value="${driverClass}"/>
        <property name="url" value="${url}"/>
        <property name="username" value="${userid}"/>
        <property name="password" value="${password}"/>
      </dataSource>
    </environment>
  </environments>
  <!-- 映射sql语句 -->
  <mappers>
    <mapper resource="cn/et/lession02/xml/UserInfoMapper.xml" />
  </mappers>
</configuration>
UserInfoMapper.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">
 <!-- 
 	接口绑定 将接口中的方法和对于sql声明进行绑定
 		接口绑定的参数  可以通过索引的方式获取  索引从0开始
 		比如(1,'abc') 0=1 1='abc'
		 		param1=1   param2='abc'
  -->
<mapper namespace="cn.et.lession02.xml.UserInfoMapper">
  <select id="selectUserInfo" resultType="cn.et.lession02.xml.UserInfo">
    select * from UserInfo where uid = #{uid}
  </select>
</mapper>

main方法

package cn.et.lession02.xml;

import java.io.InputStream;

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 TestHelloWorld {
	public static void main(String[] args) throws Exception {
		// 指定核心配置文件的位置
		String resource = "cn/et/lession02/xml/mybatis.xml";
		// 读取配置文件
		InputStream inputStream = Resources.getResourceAsStream(resource);
		// SqlSessionFactoryBuilder构建工厂类
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
		// 工厂类获取SqlSession实例
         SqlSession session = sqlSessionFactory.openSession();
         //通过session获取UserInfoMapper.xml连接的接口
         UserInfoMapper user = (UserInfoMapper) session.getMapper(UserInfoMapper.class);
         //通过接口的传递参数进入UserInfoMapper.xml里的sql进行查询,查询的结果返回给接口的方法
         UserInfo userInfo = user.selectUserInfo("1");
         //输出
         System.out.println(userInfo);
	}
}

通过接口直接映射Sql(注解)

接口定义

package cn.et.lession02.annotion;

import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

public interface UserInfoMapper {
	
	@Select(" select * from UserInfo where uid = #{uid}")
	public UserInfo selectUserInfo(@Param("uid")String uid);
}
mybatis.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>
 <!-- 
 	mybatis的核心配置文件
 		1.数据库的连接信息(连接池)
  -->
  <properties resource="jdbc.properties"></properties>
  <environments default="development">
    <environment id="development">
    <!-- 事务管理器 默认使用jdbc事务 -->
      <transactionManager type="JDBC"/>
      <!-- 默认连接池 -->
      <dataSource type="POOLED">
        <property name="driver" value="${driverClass}"/>
        <property name="url" value="${url}"/>
        <property name="username" value="${userid}"/>
        <property name="password" value="${password}"/>
      </dataSource>
    </environment>
  </environments>
  <!-- 映射sql语句 -->
  <mappers>
  	<!-- 注解  连接接口 -->
	<mapper class="cn.et.lession02.annotion.UserInfoMapper"/>
  </mappers>
</configuration>
main方法

package cn.et.lession02.annotion;

import java.io.InputStream;

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 TestHelloWorld {
	public static void main(String[] args) throws Exception {
		// 指定核心配置文件的位置
		String resource = "cn/et/lession02/annotion/mybatis.xml";
		// 读取配置文件
		InputStream inputStream = Resources.getResourceAsStream(resource);
		// SqlSessionFactoryBuilder构建工厂类
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
		// 工厂类获取SqlSession实例
          SqlSession session = sqlSessionFactory.openSession();
         //通过session获取UserInfoMapper.xml连接的接口
         UserInfoMapper user = (UserInfoMapper) session.getMapper(UserInfoMapper.class);
         //通过接口的传递参数进入UserInfoMapper.xml里的sql进行查询,查询的结果返回给接口的方法
         UserInfo userInfo = user.selectUserInfo("2");
         //输出
         System.out.println(userInfo);
	}
}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值