Mybatis入门(代理实现原生接口)

1.自定义接口,定义相关的业务方法

1.1 数据表

1.2 根据数据表,创建了我定义了一个User的实体类,

package org.example.auto;

public class User {
    private  int id;
    private  String username;
    private  String  psw;
    private  String gender;
    private String addr;
    public User(){}
    public User( String username, String psw, String gender, String addr) {
        this.username = username;
        this.psw = psw;
        this.gender = gender;
        this.addr = addr;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPsw() {
        return psw;
    }

    public void setPsw(String psw) {
        this.psw = psw;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public String getAddr() {
        return addr;
    }

    public void setAddr(String addr) {
        this.addr = addr;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", psw='" + psw + '\'' +
                ", gender='" + gender + '\'' +
                ", addr='" + addr + '\'' +
                '}';
    }
}

1.3 然后创建一个UserRepository的接口,业务是实现数据库的增删改查

public interface UserRepository {
    //定义到执行的数据库方法
    public int save(User user);   //插入数据
    public  int update(User user); //更新数据
    public int deleteById(int id); //删除数据
    public List<User> findAll();   //查找所有数据
    public User findById(int id);    //根据id查找数据
}

2.创建对应的Mapper.xml

  • 创建对应的Mapper.xml,定义接口方法对应的Sql语句,
  • 这个接口创建之后,mybatis会自己创建实现类
  • eg:上面创建了UserRepository接口,这里就要创建对应的UserRepository.xml

下面是要对应的规则:

大概得意思就是这样:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.example.repository.UserRepository">

    <!--    public int save(User user);-->
    <insert id="save" parameterType="org.example.auto.User">
        INSERT INTO tb_user(username,psw,gender,addr)VALUES(#{username},#{psw},#{gender},#{addr});
    </insert>
    <!--    public  int update(User user);-->
    <update id="update"  parameterType="org.example.auto.User">
        update tb_user set username=#{username},psw=#{psw},gender=#{gender},addr=#{addr} where id=#{id};
    </update>

    <!--    public int deleteById(int id);-->
    <delete id="deleteById" parameterType="int">
        delete  from tb_user where id=#{id};
    </delete>
    <!--    public List<User> findAll();-->
    <select id="findAll"  resultType="org.example.auto.User">
        select * from tb_user;
    </select>
    <!--    public User findById(int id);-->
    <select id="findById" parameterType="int" >
        select * from tb_user where id=#{id};
    </select>

</mapper>

3.创建test类

1.先创建sqlSession(具体图解看我的第一篇mybatis入门),

2.然后通过获取实现接口的代理对象,

UserRepository UserRepositoryMapper = sqlSession.getMapper(UserRepository.class)

3.参数是创建的对象接口类,

通过UserRepositoryMapper就可以实现UserRepositoryMapper的方法,实现增删改查。

4.!!!!!注意:增删改对数据库的数据发生改变,记得提交sqlSession.commit();不然数据库查询不到变化

public class test02 {
    public static void main(String[] args) throws IOException {
        String res = "config.xml";
        InputStream inputStream= test02.class.getClassLoader().getResourceAsStream(res);
        SqlSessionFactoryBuilder sqlSessionFactoryBuilder=new SqlSessionFactoryBuilder();
        SqlSessionFactory sqlSessionFactory=sqlSessionFactoryBuilder.build(inputStream);
        SqlSession sqlSession=sqlSessionFactory.openSession();
        //获取实现接口的代理对象
        UserRepository UserRepositoryMapper = sqlSession.getMapper(UserRepository.class);
        //查询
        List<User> all = UserRepositoryMapper.findAll();
        for(User user:all){
            System.out.println(user);
        }
        //添加
//        username="老牛",psw="789",gender="男",addr="上海" WHERE id=15;
//        User user=new User("老六","888","男","上海");
//        UserRepositoryMapper.save(user);
//        sqlSession.commit();

   //通过id查询
        User byId = UserRepositoryMapper.findById(13);
        System.out.println(byId);

    //通过id删除数据
        int i = UserRepositoryMapper.deleteById(14);
        System.out.println(i+"删除成功!");
        sqlSession.commit();
        //修改值
        User byId02 = UserRepositoryMapper.findById(17);
//        User user=new User();
        byId02.setUsername("塔斯汀");
        byId02.setGender("女");
        byId02.setAddr("广州");
        byId02.setPsw("123123");
        int update = UserRepositoryMapper.update(byId02);
        System.out.println(update);
        sqlSession.commit();

        System.out.println(UserRepositoryMapper.findById(17));
        sqlSession.close();

    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值