Mybatis通用mapper

Mybatis通用mapper

通用Mapper就是为了解决单表增删改查,基于Mybatis的插件机制。开发人员不需要编写SQL,不需要在DAO中增加方法,只要写好实体类,就能支持相应的增删改查方法
使用方法
1.在pom.xml中引入mapper的依赖

<dependency>
      <groupId>tk.mybatis</groupId>
      <artifactId>mapper</artifactId>
      <version>3.1.2</version>
</dependency>

2.Mybatis配置文件中完成配置

<plugins>
      <plugin interceptor="tk.mybatis.mapper.mapperhelper.MapperInterceptor">
          <!--指定当前通用mapper接口使用的是哪一个-->
          <property name="mappers" value="tk.mybatis.mapper.common.Mapper"/>
      </plugin>
</plugins>

3.实体类设置主键

//表明该表与数据库表的映射关系
@Table(name = "user")
public class User{

    @Id //对应的是主键id
    /*设置主键的生成策略(主键自增)
    -AUTO主键由程序控制,是默认选项,不设置就是这个
	-IDENTITY 主键由数据库生成,采用数据库自增长,Oracle不支持这种方式
	-SEQUENCE 通过数据库的序列产生主键,MYSQL  不支持
	-TABLE 提供特定的数据库产生主键,该方式更有利于数据库的移植*/
    @GeneratedValue(strategy = GenerationType.IDENTITY) //
    private Integer id;
    //若该字段与数据库表中不一致,使用@Column()注解可进行设置
    private String username;
    //省略get,set等方法
}

4.定义通用mapper

import com.tong.pojo.User;
import tk.mybatis.mapper.common.Mapper;

public interface UserMapper  extends Mapper<User> {
}

5.测试

@Test
public void mapperTest() throws IOException {
    InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
    SqlSession sqlSession = sqlSessionFactory.openSession();
    UserMapper mapper = sqlSession.getMapper(UserMapper.class);
    User user = new User();
    user.setId(1);
    //通用mapper定义了很多方法,如下图所示
    User user1 = userMapper.selectOne(user);
    System.out.println(user1);
    
   //(1) mapper基础接口  
   //select接口
   User user2=userMapper.selectOne(user);//根据实体中的属’l生进行查询,只能有一个返回值
   List<User> users=userMapper.select(null);//查询全部结果
   userMapper.selectByPrimaryKey(1);//根据主键字段进行查询,方法参数必须包含完整的主键属性,查询条件使用等号
   userMapper.selectCount(user);//根据实体中的属’}生查询总数,查询条件使用等号
   //insert接口
   int insert=userMapper.insert(user);//保存一个实体,null值也会保存,不会使用数据库默认值
   int i=userMapper.insertSelective(user);//保存实体,null的属’l生不会保存,会使用数据库默认值
   //update接口
   int i1=userMapper.updateByPrimaryKey(user);//根据主键更新实体全部字段,null值会被更新
   //delete接口
   int delete=userMapper.delete(user);//根据实体属’}生作为条件进行删除,查询条件使用等号
   userMapper.deleteByPrimaryKey(1);//根据主键字段进行删除,方法参数必须包含完整的主键属性
   //2.example方法
   Example example = new Example(User.class);//传递操作的实体类
   //example.createCriteria()构建查询所有的操作
   //andEqualTo()拼接一个id为1的条件(where id = 1)
   example.createCriteria().andEqualTo("id",1);
   //将构建的example对象传入
   List<User> users = mapper.selectByExample(example);
   //打印输出
   for (User user2 : users) {
       System.out.println(user2);
   }      
}

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值