【Java】Mybatis接口注解实现映射

前言

上一篇文章介绍了xml文件映射SQL语句,即User user = (User) sqlSession.selectOne("cn.ddnd.www.Entity.User.getUser", "xue8@qq.com"),但是这种方式过于繁杂,所以我们本篇介绍使用注解SQL语句返回值的接口(如:IUser.class),即可实现xml配置文件的功能。

新建工程

将工程新建成和上篇的一样Mybatis实现数据库操作,即把上篇的内容搬过来。

修改成用注解方式

  1. 可以删除 cn.ddnd.www.Entity包下的User.xml,去掉Mybatis-config.xml的如下代码。因为此时User.xml已经没用了。
    <mappers>
        <mapper resource="cn/ddnd/www/Entity/User.xml"></mapper>
    </mappers>
复制代码
  1. 新建cn.ddnd.www.Dao包,并且建立IUser接口和方法。 IUser.java:
package cn.ddnd.www.Dao;

import cn.ddnd.www.Entity.User;
import org.apache.ibatis.annotations.Select;

public interface IUser {
    @Select("select * from user where email = #{email}")
    public User getUser(String email);
}

复制代码
  1. 修改测试类,即增加了sqlSessionFactory.getConfiguration().addMapper(IUser.class);,作用是注册SQL语句映射的接口,去掉User user = (User) sqlSession.selectOne("cn.ddnd.www.Entity.User.getUser", "xue8@qq.com");,增加IUser IUser = (IUser) sqlSession.getMapper(IUser.class); User user = IUser.getUser("xue8@qq.com");即可。 text.java:
import cn.ddnd.www.Dao.IUser;
import cn.ddnd.www.Entity.User;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import org.apache.ibatis.io.Resources;

import java.io.Reader;
import java.io.IOException;


public class test {
    private static Reader reader;
    private static SqlSessionFactory sqlSessionFactory;

    static{
        try{
            reader = Resources.getResourceAsReader("Mybatis-config.xml");
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
//            注册SQL语句映射的接口
            sqlSessionFactory.getConfiguration().addMapper(IUser.class);
        }catch (IOException e){
            e.printStackTrace();
        }
    }
    @Test
    public void a() throws IOException {
        SqlSession sqlSession = sqlSessionFactory.openSession();

        try{
//            User user = (User) sqlSession.selectOne("cn.ddnd.www.Entity.User.getUser", "xue8@qq.com");

//            IUser.class只是个接口 Mybatis面向接口编程 只写接口 不用写接口的实现类 Mybatis帮我们去写实现类了!
            IUser IUser = (IUser) sqlSession.getMapper(IUser.class);
            User user = IUser.getUser("xue8@qq.com");
            System.out.println("用户的邮箱是:" + user.getEmail() + ",用户的名称是:" + user.getName() + ",用户的密码是:" + user.getPassword());
        }finally {
            sqlSession.close();
        }
    }
}

复制代码

项目结构

运行结果

运行测试类

转自:ddnd.cn/2018/11/30/…

转载于:https://juejin.im/post/5c00f6c0e51d45735a41d85d

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值