mybatis的mapper代理开发,mapper引入的2种方式

版权声明:本站所提供的文章资讯、软件资源、素材源码等内容均为本作者提供、网友推荐、互联网整理而来(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考,如有侵犯您的版权,请联系我,本作者将在三个工作日内改正。 https://blog.csdn.net/weixin_42323802/article/details/82501432

mapper引入的两种方式:

通过xml路径

通过mapper接口的class路径


    <mappers>
        <!--mapper 是表的映射文件,每张表对应一个mapper文件
        引入方式有2种,第一种:通过xml路径
        第二种:通过mapper接口的路径引入
        -->
        <!--
        <mapper resource="dao/UserDao.xml"/>
        <mapper class="dao.UserDao"/>
        -->

        <!--可以使用批量扫描的形式,表的配置文件和dao层中的文件名字一致,配置package标签-->
        <package name="dao"></package>

    </mappers>

使用mapper代理开发,注意namespace:

和dao中UserDao 对象一致;

1,session获取userdao.class对象

2,加载mapper.xml

3,获取sql的statement

扫描二维码关注公众号,回复: 3183973 查看本文章

4,statement把sql执行结果映射到结果集(User类,及java对象)中。

<?xml version="1.0" encoding="UTF-8"?>
<!-- 该文件代表的是user类和user表的映射关系,关于user表的sql语句等等写在这里 -->
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--使用mapper 代理开发,需要实现UserDao接口-->
<mapper namespace="dao.UserDao">

    <!-- #{}代表占位符?,表示mybatis框架会接收输入的参数并赋值到sql语句当中
          关于简单类型(int,String,date。long)可以使用value来代表参数名
     -->
    <select id="findUserById" parameterType="java.lang.Integer" resultType="model.User">
  select * from user where id=#{id}
    </select>
    <!--模糊查询   like +条件  '% ${匹配的内容} %'    $是拼接sql -->
    <select id="findUserByName" parameterType="java.lang.String" resultType="model.User">
 select * from user where name like  '%${value}%';
    </select>

    <!-- ${}代表字符串拼接 -->


    <!-- 插入的时候可以使用主键回填的策略,LAST_INSERT_ID() -->

</mapper>

impl类开发:

    @Override
    public List<User> findUserByName(String name) {
        SqlSession session = MybatisUtils.getFactory().openSession();//会话
        UserDao daili = session.getMapper(UserDao.class);//获取userdao接口代理对象----可以获取接口中的所有方法
        /**获取mapper.xml 通过statement获取sql语句,把sql 的执行结果映射到
         * model.User中
         */
        return daili.findUserByName(name);
    }
    @Override
    public User findUserById(int id) {
        SqlSession session = MybatisUtils.getFactory().openSession();
        User user = (User) session.selectOne("dao.UserDao.findUserById", id);//注意mapper中的namespace
        return user;
    }

test测试:

package test;

import dao.UserDao;
import daoimpl.DaoImpl;
import org.junit.jupiter.api.Test;

/**
 * @auther SyntacticSugar
 * @data 2018/9/7 0007下午 5:28
 */
public class Junittest01 {
    @Test
    public  void  test1(){
        DaoImpl dao = new DaoImpl();
        System.out.println(dao.findUserById(5));
    }
    @Test
    public  void  test2(){
        DaoImpl dao = new DaoImpl();
        System.out.println(dao.findUserById(30));
    }
    @Test
    public  void  test3(){
        DaoImpl dao = new DaoImpl();
        System.out.println(dao.findUserByName("熊"));
    }
//    jdbc:mysql://localhost:3306/student?serverTimezone=UTC
}

猜你喜欢

转载自blog.csdn.net/weixin_42323802/article/details/82501432