在上一篇文章中,我们进行了mybatis逆向工程的配置,并成功利用插件生成mapper.xml映射文件、实体类、mapper接口。如果你没看过可以去看看
接下来我们的任务,就是了解对这些文件的基本使用。
一、配置文件中的<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);
}
}
以上是常用的几个方法,就不演示其他方法了,如果你感兴趣的话,去试试看吧!