通用Mapper(Mybatis)
1.Mapper的简单介绍
2.Mapper的作用
通用Mapper可以通过Mybatis的拦截器原理,动态的帮我们实现单表的增删改查功能,大大降低了我们的开发成本,减少了我们的工作量。
3.Mapper的使用
该Mapper是一个接口,里面提供给了一系列的方法,导入依赖,配置插件,利用Mybatis使用通用的Mapper接口,首先继承该接口,泛型为类中的类型。这样就没有配置文件了,所以要在Mybatis核心配置文件中,配置扫描的包。编写测试类。
3.1导入依赖(首先搭建好Mybatis的环境)
<!-- 通用Mapper -->
<dependency>
<groupId>com.github.abel533</groupId>
<artifactId>mapper</artifactId>
<version>2.3.4</version>
</dependency>
3.2配置插件(Mapper在Mybatis的拦截器)
<!-- 通用Mapper的插件 -->
<plugins>
<plugin interceptor="com.github.abel533.mapperhelper.MapperInterceptor">
<!--主键自增回写方法,默认值MYSQL -->
<property name="IDENTITY" value="MYSQL" />
<!--通用Mapper默认接口,我们定义的Mapper需要实现该接口 -->
<property name="mappers" value="com.github.abel533.mapper.Mapper" />
</plugin>
</plugins>
3.3编写接口UserMapper继承Mapper(略)
3.4配置实体类与表之间的关系
package cn.mybatis.pojo; import java.io.Serializable;
import java.util.Date; import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table; @Table(name="tb_user")
public class User implements Serializable{ /**
*
*/
private static final long serialVersionUID = 1L; @Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id; // 用户名
private String userName; // 密码
private String password; // 姓名
private String name; // 年龄
private Integer age; // 性别,1男性,2女性
private Integer sex; // 出生日期
private Date birthday; // 创建时间
private Date created; // 更新时间
private Date updated; public Long getId() {
return id;
} public void setId(Long id) {
this.id = id;
} public String getuserName() {
return userName;
} public void setuserName(String userName) {
this.userName = userName;
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public Integer getAge() {
return age;
} public void setAge(Integer age) {
this.age = age;
} public Integer getSex() {
return sex;
} public void setSex(Integer sex) {
this.sex = sex;
} public Date getBirthday() {
return birthday;
} public void setBirthday(Date birthday) {
this.birthday = birthday;
} public Date getCreated() {
return created;
} public void setCreated(Date created) {
this.created = created;
} public Date getUpdated() {
return updated;
} public void setUpdated(Date updated) {
this.updated = updated;
} @Override
public String toString() {
return "User [id=" + id + ", userName=" + userName + ", password=" + password + ", name=" + name
+ ", age=" + age + ", sex=" + sex + ", birthday=" + birthday + ", created=" + created
+ ", updated=" + updated + "]";
} }
3.5.编写测试类
package cn.mapper.test; import java.io.InputStream;
import java.util.List; 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.Before;
import org.junit.Test; import cn.mybatis.dao.UserMapper;
import cn.mybatis.pojo.User; import com.github.abel533.entity.Example; public class TestMappers { UserMapper usermapper; String resource = "mybatis-config.xml";
InputStream inputStream;
SqlSessionFactory sqlsessionFactory;
SqlSession sqlSession; @Before
public void setUp() throws Exception {
inputStream = Resources.getResourceAsStream(resource);
sqlsessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
sqlSession = sqlsessionFactory.openSession(); // 动态代理实现
usermapper = this.sqlSession.getMapper(UserMapper.class); } /**
* 查询1个用户
*/
@Test
public void test() {
User user = new User();
user.setuserName("zhangsan"); User one = this.usermapper.selectOne(user); System.out.println(one);
} /**
* 查找用户,接收一个User对象。
*/
@Test
public void testselect(){ User user = new User();
user.setSex(2); List<User> list = this.usermapper.select(null); for (User user2 : list) {
System.out.println(user2);
} System.out.println("-------------"); List<User> list2 = this.usermapper.select(user); for (User user2 : list2) {
System.out.println(user2);
} } /**
* 查询总条数
*/
@Test
public void testSlecteCount(){
int count = this.usermapper.selectCount(null);
System.out.println(count);
System.out.println("--------"); User user = new User();
user.setSex(1);
int count2 = this.usermapper.selectCount(user);
System.out.println(count2);
} /**
* 根据主键查询
*/
@Test
public void testSelectByPrimaryKey(){
User user = this.usermapper.selectByPrimaryKey(1L); System.out.println(user);
} @Test
public void testInsert(){
User user = new User();
user.setAge(22);
user.setPassword("11111");
// this.usermapper.insert(user);
this.usermapper.insertSelective(user); // 提交
this.sqlSession.commit();
} @Test
public void testDelete(){
User user = new User();
user.setAge(22);
int i = this.usermapper.delete(user);
this.sqlSession.commit();
System.out.println(i);
} @Test
public void testUpdate(){
User user = new User();
user.setId(18L);
user.setuserName("kk0");;
int i = this.usermapper.updateByPrimaryKeySelective(user);
this.sqlSession.commit();
System.out.println(i);
} @Test
public void testSelectByExample(){ Example example = new Example(User.class);
example.createCriteria().andEqualTo("sex", 1).andBetween("age", 10, 22);
example.or(example.createCriteria().andLike("name", "李"));
example.setOrderByClause("age desc"); List<User> list = this.usermapper.selectByExample(example); for (User user : list) {
System.out.println(user);
}
} }
总结:通用mapper 的要求:
1.默认表名为类名(@Table())
2.默认字段名就是类属性名(在驼峰规则内),如果不一致,使用@Column注解
3.主键字段必须声明@Id
4.实现ID的回写@GeneratedValue(strategy=GenerationType.IDENTITY)
5.忽略该字段@Transtient(映射字段) 表中没有的字段 ,在类中有的字段
通用Mapper(Mybatis)的更多相关文章
- Spring boot集成 MyBatis 通用Mapper
配置 POM文件 <parent> <groupId>org.springframework.boot</groupId> <artifactId>sp ...
- Java Maven:spring boot + Mybatis连接MySQL,通用mapper的增删改查,映射实现多表查询
1. MySQL自带库test添加表user.role 角色表role 用户表user 2. 添加依赖,配置属性 相关依赖:百度即可,此处略 application.properties spring ...
- (二、下) springBoot 、maven 、mysql、 mybatis、 通用Mapper、lombok 简单搭建例子 《附项目源码》
接着上篇文章中 继续前进. 一.在maven 的pom.xm中添加组件依赖, mybatis通用Mapper,及分页插件 1.mybatis通用Mapper <!-- mybatis通用Mapp ...
- mybatis - 通用mapper
title: 玩转spring-boot-mybatis date: 2019-03-11 19:36:57 type: "mybatis" categories: mybatis ...
- 【SSM 8】spring集成Mybatis通用Mapper
上篇博客中介绍了关于Mybatis底层封装的思路问题,那么这篇博客,就介绍一下怎么引入通用的mapper插件. 备注:本项目通过maven管理 关键版本说明: spring:4.1.3.RELEASE ...
- Spring Boot MyBatis 通用Mapper插件集成
Mybatis在使用过程中需要三个东西,每张表对应一个XXMapper.java接口文件,每张表对应一个XXMapper.xml文件,每张表对应一个Entity的Java文件. 其中XXMappe ...
- MyBatis通用Mapper开发
通常情况下,MyBatis 的增删改查操作需要自己在相应xml中写相关语句, 但是运用相关工具,其实可以很方便的自动生成单表的所有增删改查(通用的多表联合查询还是需要自己写). 也可以根据具体环境,设 ...
- Mybatis通用Mapper
极其方便的使用Mybatis单表的增删改查 项目地址:http://git.oschina.net/free/Mapper 优点? 不客气的说,使用这个通用Mapper甚至能改变你对Mybatis单表 ...
- mybatis通用mapper的使用
项目中持久层封装了两套,一个hibernate,一个是mybatis.hibernate中封装了一些通用的方法,但是mybatis中没有,基于这个需求开始使用mybatis的通用mapper. ...
随机推荐
- Scrapy爬虫笔记
Scrapy是一个优秀的Python爬虫框架,可以很方便的爬取web站点的信息供我们分析和挖掘,在这记录下最近使用的一些心得. 1.安装 通过pip或者easy_install安装: 1 sudo p ...
- 《从零开始学Swift》学习笔记(Day 31)——存储属性
原创文章,欢迎转载.转载请注明:关东升的博客 Swift中的属性分为存储属性和计算属性,存储属性就是Objective-C中的数据成员,计算属性不存储数据,但可以通过计算其他属性返回数据. 存储属性可 ...
- EasyUI 相关
根据关键字值取行 var rowIndex = $('#tt').datagrid('getRowIndex', id);//id是关键字值 var data = $('#tt').datagrid( ...
- Linux中的预定义变量
解释: 主要是Bash中已经定好的变量,名称不能自定义,作用也是固定的 $? 最后一次执行的命令返回状态,0为成功,非0为失败 $$ 当前进程的进程号 $! 后台运行的最后一个进程的进程号 例子: [ ...
- Cocos2d-x3.0游戏实例之《别救我》第八篇——TiledMap实现关卡编辑器
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/musicvs/article/details/25368273 好吧.我真心全然搞不懂.我如今仅仅只 ...
- SAP内存、ABAP内存、共享内存的 区别
区别: (1)SAP内存使用 SET/GET parameters 方法: SET PARAMETER ID ‘MAT’ field P_MATNR. GET PARAMETER ID ‘ ...
- SaltStack远程执行shell脚本
编辑文件fansik.sh 脚本内容: #!/bin/bash # Author: fansik # data: 2017年 09月 26日 星期二 :: CST touch /tmp/fansik. ...
- javascript高级语法三
一.js的正则表达式 1.什么是正则表达式 正则表达式(regular expression)是一个描述字符模式的对象,ECMAScript的RegExp类表示正则表达式,而String和RegExp ...
- Hibernate一对多、多对一关联
一对多.多对一关联:在多方加外键 示例:Group(一方)和User(多方),一个Group可以有多个User,每个User只能属于一个Group 多对一单向关联 在User(多方)中建Group ...
- Springboot文件下载
https://blog.csdn.net/stubbornness1219/article/details/72356632 Springboot对资源的描述提供了相应的接口,其主要实现类有Clas ...