1.Mapper的簡單介紹
2.Mapper的作用
通用Mapper可以通過Mybatis的攔截器原理,動態的幫我們實現單表的增刪改查功能,大大降低了我們的開發成本,減少了我們的工作量。
3.Mapper的使用
該Mapper是一個接口,里面提供給了一系列的方法,導入依賴,配置插件,利用Mybatis使用通用的Mapper接口,首先繼承該接口,泛型為類中的類型。這樣就沒有配置文件了,所以要在Mybatis核心配置文件中,配置掃描的包。編寫測試類。
3.1導入依賴(首先搭建好Mybatis的環境)
com.github.abel533
mapper
2.3.4
3.2配置插件(Mapper在Mybatis的攔截器)
3.3編寫接口UserMapper繼承Mapper(略)
3.4配置實體類與表之間的關系
packagecn.mybatis.pojo;importjava.io.Serializable;importjava.util.Date;importjavax.persistence.Column;importjavax.persistence.GeneratedValue;importjavax.persistence.GenerationType;importjavax.persistence.Id;importjavax.persistence.Table;
@Table(name="tb_user")public class User implementsSerializable{/****/
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)privateLong id;//用戶名
privateString userName;//密碼
privateString password;//姓名
privateString name;//年齡
privateInteger age;//性別,1男性,2女性
privateInteger sex;//出生日期
privateDate birthday;//創建時間
privateDate created;//更新時間
privateDate updated;publicLong getId() {returnid;
}public voidsetId(Long id) {this.id =id;
}publicString getuserName() {returnuserName;
}public voidsetuserName(String userName) {this.userName =userName;
}publicString getPassword() {returnpassword;
}public voidsetPassword(String password) {this.password =password;
}publicString getName() {returnname;
}public voidsetName(String name) {this.name =name;
}publicInteger getAge() {returnage;
}public voidsetAge(Integer age) {this.age =age;
}publicInteger getSex() {returnsex;
}public voidsetSex(Integer sex) {this.sex =sex;
}publicDate getBirthday() {returnbirthday;
}public voidsetBirthday(Date birthday) {this.birthday =birthday;
}publicDate getCreated() {returncreated;
}public voidsetCreated(Date created) {this.created =created;
}publicDate getUpdated() {returnupdated;
}public voidsetUpdated(Date updated) {this.updated =updated;
}
@OverridepublicString toString() {return "User [id=" + id + ", userName=" + userName + ", password=" + password + ", name=" +name+ ", age=" + age + ", sex=" + sex + ", birthday=" + birthday + ", created=" +created+ ", updated=" + updated + "]";
}
}
3.5.編寫測試類
packagecn.mapper.test;importjava.io.InputStream;importjava.util.List;importorg.apache.ibatis.io.Resources;importorg.apache.ibatis.session.SqlSession;importorg.apache.ibatis.session.SqlSessionFactory;importorg.apache.ibatis.session.SqlSessionFactoryBuilder;importorg.junit.Before;importorg.junit.Test;importcn.mybatis.dao.UserMapper;importcn.mybatis.pojo.User;importcom.github.abel533.entity.Example;public classTestMappers {
UserMapper usermapper;
String resource= "mybatis-config.xml";
InputStream inputStream;
SqlSessionFactory sqlsessionFactory;
SqlSession sqlSession;
@Beforepublic void setUp() throwsException {
inputStream=Resources.getResourceAsStream(resource);
sqlsessionFactory= newSqlSessionFactoryBuilder().build(inputStream);
sqlSession=sqlsessionFactory.openSession();//動態代理實現
usermapper = this.sqlSession.getMapper(UserMapper.class);
}/*** 查詢1個用戶*/@Testpublic voidtest() {
User user= newUser();
user.setuserName("zhangsan");
User one= this.usermapper.selectOne(user);
System.out.println(one);
}/*** 查找用戶,接收一個User對象。*/@Testpublic voidtestselect(){
User user= newUser();
user.setSex(2);
List list = this.usermapper.select(null);for(User user2 : list) {
System.out.println(user2);
}
System.out.println("-------------");
List list2 = this.usermapper.select(user);for(User user2 : list2) {
System.out.println(user2);
}
}/*** 查詢總條數*/@Testpublic voidtestSlecteCount(){int count = this.usermapper.selectCount(null);
System.out.println(count);
System.out.println("--------");
User user= newUser();
user.setSex(1);int count2 = this.usermapper.selectCount(user);
System.out.println(count2);
}/*** 根據主鍵查詢*/@Testpublic voidtestSelectByPrimaryKey(){
User user= this.usermapper.selectByPrimaryKey(1L);
System.out.println(user);
}
@Testpublic voidtestInsert(){
User user= newUser();
user.setAge(22);
user.setPassword("11111");//this.usermapper.insert(user);
this.usermapper.insertSelective(user);//提交
this.sqlSession.commit();
}
@Testpublic voidtestDelete(){
User user= newUser();
user.setAge(22);int i = this.usermapper.delete(user);this.sqlSession.commit();
System.out.println(i);
}
@Testpublic voidtestUpdate(){
User user= newUser();
user.setId(18L);
user.setuserName("kk0");;int i = this.usermapper.updateByPrimaryKeySelective(user);this.sqlSession.commit();
System.out.println(i);
}
@Testpublic voidtestSelectByExample(){
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 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(映射字段) ?表中沒有的字段 ,在類中有的字段
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态