MyBatis入门
代码实例: 使用MyBatis实现user表的增删改查CRUD
准备
创建数据库表
#创建数据库
create database mybatis_demo;
#创建user表
create table user(
uid int primary key auto_increment,
username varchar(40),
sex varchar(10),
birthday date,
address varchar(40)
);
创建Maven工程
junit
junit
4.12
test
org.projectlombok
lombok
1.18.10
mysql
mysql-connector-java
5.1.47
org.mybatis
mybatis
3.5.3
创建Mybatis快速入门
1.创建POJO类
package com.nengli51.pojo;
import lombok.Data;
import java.util.Date;
/**
* @Date 2021/2/4
*/
@Data
public class User {
private int uid;
private String username;
private String sex;
private Date birthday;
private String address;
}
2. 创建UserDao
package com.nengli51.dao;
import com.nengli51.pojo.User;
import java.util.List;
public interface UserDao {
/**
* 添加用户
*
* @param user
*/
void addUser(User user);
/**
* 删除用户
*
* @param uid
*/
void deleteUser(int uid);
/**
* 修改用户
*
* @param user
*/
void updateUser(User user);
/**
* 查找用户
*
* @param uid
* @return
*/
User findUser(int uid);
/**
* 查找所有
*
* @return
*/
List findAll();
}
3. 创建UserDao.xml映射文件
注意: 放置在resources/"UserDao相同的路径下"/UserDao.xml
这里的"UserDao相同的路径下" = 上面的UserDao接口的位置: com/nengli51/dao/下面
insert into user
values (null, #{username}, #{sex}, #{birthday}, #{address})
delete
from user
where uid = #{uid}
update user
set username=#{username},
sex=#{sex},
birthday=#{birthday},
address=#{address}
where uid = #{uid}
4. 创建SqlMapConfig.xml核心配置文件
放置在: resources/目录下
5. 测试CRUD
import com.nengli51.dao.UserDao;
import com.nengli51.pojo.User;
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.Date;
import java.util.List;
/**
* @Author MaLi
* @Date 2021/2/4
*/
public class TestMybatis {
private UserDao userDao;
private SqlSession sqlSession;
private InputStream is;
@Before
public void init() {
try {
//1. 创建SqlSessionFactoryBuilder对象
SqlSessionFactoryBuilder sessionFactoryBuilder = new SqlSessionFactoryBuilder();
//2. 读取核心配置文件,转换成字节输入流
is = Resources.getResourceAsStream("SqlMapConfig.xml");
//3. 创建SqlSessionFactory对象
SqlSessionFactory sessionFactory = sessionFactoryBuilder.build(is);
//4. 创建SqlSession对象
sqlSession = sessionFactory.openSession();
//5. 创建UserDao的代理对象
userDao = sqlSession.getMapper(UserDao.class);
} catch (IOException e) {
e.printStackTrace();
}
}
@Test
public void testAddUser() {
User user = new User();
user.setUsername("小马哥");
user.setAddress("Beijing");
user.setBirthday(new Date());
user.setSex("Male");
userDao.addUser(user);
user = userDao.findUser(4);
System.out.println(user);
}
@Test
public void testDeleteUser() {
userDao.deleteUser(1);
}
@Test
public void testUpdateUser() {
User user = userDao.findUser(1);
user.setUsername("马斯克");
userDao.updateUser(user);
user = userDao.findUser(1);
System.out.println(user);
}
@Test
public void testFindUser() {
User user = userDao.findUser(1);
System.out.println(user);
}
@Test
public void testFindAll() {
List userList = userDao.findAll();
//6, 使用UserDao进行操作
for (User user : userList) {
System.out.println(user);
}
}
@After
public void destroy() throws IOException {
//7.提交事务, 关闭资源
sqlSession.commit();
sqlSession.close();
is.close();
}
}