mysql映射mapper_SQL映射器Mapper接口(MyBatis)

SQL映射器Mapper接口

MyBatis基于代理机制,可以让我们无需再写Dao的实现。直接把以前的dao接口定义成符合规则的Mapper。

注意事项:

1.接口必须以Mapper结尾,名字是DomainMapper

2.mapper.xml文件要和Mapper接口建立关系,通过namespace:要能连接到Mapper接口

3.mapper.xml中写查询语句的标签的传入参数类型(parameterType)、返回结果类型(resultType)必须和mapper接口中对应方法的传入参数类型和返回结果类型一致,id名字必须和mapper接口中的对应方法名保持一致。

操作步骤:

1、 创建一个DomainMapper接口:直接定义方法(共用了xml配置方式和接口+注解方式两种)

注意:映射器Mapper接口,替换dao层,不用再写mapper层(dao层)实现类;名字统一以Mapper结尾。

packagecn.wang._02mapper.mapper;importcn.wang._02mapper.domain.Product;importorg.apache.ibatis.annotations.Select;importjava.util.List;

public interfaceProductMapper {/*** 查询一个商品:使用了接口+注解的方式*/@Select("select * from Product where id = #{id}")

Product findOne(Long id);/*** 查询所有商品:使用了xml配置方式*/ListfindAll();

}

2、 在mapper目录(原dao目录)下创建映射文件DomainMapper.xml(ProductMapper.xml):

/p>

"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

select * from product

3、在resources目录下创建核心配置文件:

/p>

PUBLIC "-//mybatis.org//DTD Config 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-config.dtd">

MybatisUtils工具类

packagecn.wang.Utils;importorg.apache.ibatis.io.Resources;importorg.apache.ibatis.session.SqlSession;importorg.apache.ibatis.session.SqlSessionFactory;importorg.apache.ibatis.session.SqlSessionFactoryBuilder;importjava.io.Reader;public classMybatisUtils {//保证sqlSessionFactory是单例

private staticSqlSessionFactory sqlSessionFactory;//SqlSessionFactory类似于JPA的EntityManagerFactory,Hibernate的SessionFactory//SqlSession 类似于JPA的EntityManager,Hibernate的Session//该类被加载的时候就执行该静态代码块

static{try{

Reader reader= Resources.getResourceAsReader("MyBatis-Config.xml");

sqlSessionFactory= newSqlSessionFactoryBuilder().build(reader);

}catch (Exception e) {//异常的类型要写大一些,才能够看到具体的报错

e.printStackTrace();

}

}//提供一个外界调用的类

public staticSqlSession getSession(){//创建并返回SqlSession对象

returnsqlSessionFactory.openSession();

}//关闭sqlSession,释放资源(很重要,不然项目上线后会造成内存溢出)

public static voidcolseSession(SqlSession sqlSession){if(sqlSession !=null){

sqlSession.close();

}

}

}

jdbc.properties文件

jdbc.driver=com.mysql.jdbc.Driver

jdbc.url=jdbc:mysql:///mysql数据库名称

jdbc.username=用户名

jdbc.password=密码

可能遇到的错误:

cc8340f8d5e06c7d4bc4afe2de3122f8.png

(1)namespace写错了,应该对应mapper接口的完全限定名。

(2)Mapper映射文件忘记在核心配置文件中注册了。

(3)注册的路径也可能写错。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值