MyBatis逆向工程(二)

        在上一篇文章中,我们进行了mybatis逆向工程的配置,并成功利用插件生成mapper.xml映射文件、实体类、mapper接口。如果你没看过可以去看看

MyBatis逆向工程(一)_cyc&阿灿的博客-CSDN博客mybatis官方提供了mapper自动生成工具mybatis-generator-core来针对单表,生成PO类,以及Mapper接口和mapper.xml映射文件。https://blog.csdn.net/m0_66884848/article/details/124604357       接下来我们的任务,就是了解对这些文件的基本使用。

 一、配置文件中的<mapper>

        首先要明确mapper.xml映射文件的位置:

        在mybatis-config.xml中配置配置它的信息

    <mappers>
        <!-- 加载前面编写的SQL语句的文件 -->
        <mapper resource="mapper/UserMapper.xml" />
    </mappers>

二、认识model层中:UserExample和User的区别

        User:普通的实体类,成员变量与数据表中的字段是一样的。(遵循驼峰命名规则)

package cn.com.sise.model;
public class User {
    private Long id;

    private String name;

    private Integer age;

    private String email;

    public Long getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name == null ? null : name.trim();
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email == null ? null : email.trim();
    }
}

         UserExample:数据筛选类,理论上可以构建出你想到的任何筛选条件。

package cn.com.sise.model;

import java.util.ArrayList;
import java.util.List;

public class UserExample {
    
    // 根据某个字段进行排序
    //参数格式:字段+空格+asc(desc)
    protected String orderByClause;

    //是否去重 true是选择不重复记录
    protected boolean distinct;
    
    //自定义查询条件
    //Criteria的集合,集合中对象是由or连接
    protected List<Criteria> oredCriteria;

    // 省略.....
}

三、创建Junit测试环境

        引入依赖坐标

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>

四、常用的CRUD操作

       表数据如下

      

        常用的方法演示:

package cn.com.sise;

import cn.com.sise.dao.UserMapper;
import cn.com.sise.model.User;
import cn.com.sise.model.UserExample;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
import java.util.Arrays;
import java.util.List;

public class TestDemo {

    SqlSession sqlSession = null;
    UserMapper mapper = null;

    @Before
    public void init() throws IOException {
        InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
        SqlSessionFactory build = new SqlSessionFactoryBuilder().build(is);
        sqlSession = build.openSession(true);
        mapper = sqlSession.getMapper(UserMapper.class);
    }

    @After
    public void destory(){
        sqlSession.close();
    }

    public void print(List<User> users){
        for (User user : users) {
            System.out.println(user.getId()+" "+user.getName()+" "+user.getEmail()+" "+user.getAge());
        }
    }

    //  查询所有
    @Test
    public void run1(){
         /*由于selectByExample方法传入的参数是一个筛选类,这里我们传入一个对象
         不设置任何条件*/
        List<User> users = mapper.selectByExample(new UserExample());
        print(users);
    }

    // 根据主键ID查询对应的数据
    @Test
    public void run2(){
        // 参数需要传入一个long类型,所以需要加个L后缀
        User user = mapper.selectByPrimaryKey(1L);
        print(Arrays.asList(user));
    }

    // 查询所有的记录条数
    @Test
    public void run3(){
        /*由于countByExample方法传入的参数是一个筛选类,这里我们传入一个对象
         不设置任何条件*/
        long l = mapper.countByExample(new UserExample());
        System.out.println(l);
    }

    // 根据条件查询查询记录条数(名字包含“J”的记录条数)
    @Test
    public void run4(){
        UserExample example = new UserExample();
        example.createCriteria().andNameLike("%J%");
        long l = mapper.countByExample(example);
        System.out.println(l);
    }

    // 根据条件查询查询记录条数(年龄在18-20岁的人数)
    @Test
    public void run5(){
        UserExample example = new UserExample();
        example.createCriteria().andAgeBetween(18, 20);
        long l = mapper.countByExample(example);
        System.out.println(l);
    }

    // 添加User数据
    @Test
    public void run6(){
        User user = new User();
        user.setId(6L);
        user.setName("阿灿");
        user.setAge(18);
        user.setEmail("acan@baomidou.com");
        // 此方法一定要求设置ID的具体值
        int insert = mapper.insert(user);
        System.out.println(insert);
    }

    // 添加可选的User数据 (注意一定要设置主键为自增)
    @Test
    public void run7(){
        User user = new User();
        user.setName("阿灿1");
        user.setAge(19);
        user.setEmail("acan1@baomidou.com");
        int i = mapper.insertSelective(user);
        System.out.println(i);
    }

    // 根据主键id删除数据
    @Test
    public void run8(){
        int i = mapper.deleteByPrimaryKey(7L);
        System.out.println(i);
    }

    // 可选条件的更新
    @Test
    public void run9(){
        User user = new User();
        user.setId(6L);
        user.setAge(17);
        int i = mapper.updateByPrimaryKeySelective(user);
        System.out.println(i);
    }

    // 筛选名字叫“阿灿”的人
    @Test
    public void run10(){
        UserExample example = new UserExample();
        example.createCriteria().andNameEqualTo("阿灿");
        List<User> users = mapper.selectByExample(example);
        print(users);
    }

    // 筛选年龄等于18岁的人
    @Test
    public void run11(){
        UserExample user = new UserExample();
        user.createCriteria().andAgeEqualTo(18);
        List<User> users = mapper.selectByExample(user);
        print(users);
    }

}

         以上是常用的几个方法,就不演示其他方法了,如果你感兴趣的话,去试试看吧!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值