mybatis的CRUD操作(增删改查
前提
每一个Dao.xml或者说Mapper.xml都要绑定映射在sqlMapConfig.xml的数据库配置文件中
Dao.xml文件需要将对应的Dao类绑定在命名空间
Mybatis工具类
为了调用方便我们准备一个工具类
package com.sjj.utils;
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 java.io.IOException;
import java.io.InputStream;
public class MybatisUtils {
private static InputStream in;
private static SqlSessionFactory factory;
static {
try {
// 1,读取配置文件
in = Resources.getResourceAsStream("SqlMapConfig.xml");
// 2,创建SqlSessionFactory工厂
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
factory = builder.build(in);
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
// 3,获取SqlSession对象
public static SqlSession getSqlSession(){
return factory.openSession();
}
}
查询:SELECT
基本样式
实践
实现一个方法:根据性别查找用户
- 在用户持久层接口UserDao中添加方法
// 根据sex查找用户
List findUserBySex(String sex);
- 在UserDao.xml的命名空间中添加一条select语句
- 查看数据库配置文件中是否绑定了UserDao.xml文件
- 编写测方法
@Test
public void testFindUserBYSex(){
// 3,获取SqlSession对象
SqlSession session = MybatisUtils.getSqlSession();
// 4,使用SqlSession创建dao接口的代理对象
UserDao userdao = session.getMapper(UserDao.class);
// 5,使用代理对象执行接口
List users = userdao.findUserBySex("女");
for(User user:users){
System.out.println(user);
}
// 释放资源
session.close();
}
增加:INSERT
基本样式
insert into 语句;
实践
由于前面已经将UserDao.xml绑定在数据库配置文件中,接下来就不需要重复查看
不过新添加一个xml文件一定要记得绑定哦
实现一个方法:插入一个用户
- 在用户持久层接口UserDao中添加方法
// 添加一个用户
int addUser(User user);
- 在UserDao.xml的命名空间中添加一条insert语句
insert into user (id,username,birthday,sex,address) values (#{id},#{username},#{birthday},#{sex},#{address});
- 编写测试方法
@Test
public void testAddUser(){
SqlSession session = MybatisUtils.getSqlSession();
UserDao userdao = session.getMapper(UserDao.class);
User user = new User(99, "青眼白龙", new Date(), "女", null);
userdao.addUser(user);
// **注意增删改需要提交事务**
session.commit();
session.close();
}
更新/修改:UPDATE
基本样式
update 语句;
实践
实现一个方法:
- 在用户持久层接口UserDao中添加方法
// 通过id更新用户
int updateUserById(User user);
- 在UserDao.xml的命名空间中添加一条update语句
update user
set address = #{address},username=#{username},birthday=#{birthday},sex=#{sex}
where id = #{id};
- 编写测试方法
@Test
public void testUpUserById(){
SqlSession session = MybatisUtils.getSqlSession();
UserDao userdao = session.getMapper(UserDao.class);
User user = new User(99, "青眼白龙", new Date(), "女", "古埃及");
int ans = userdao.updateUserById(user);
if(ans>0)
System.out.println("更新成功!");
// **注意增删改需要提交事务**
session.commit();
session.close();
}
删除:DELETE
基本样式
delete 语句;
实践
实现一个方法:
- 在用户持久层接口UserDao中添加方法
// 通过id删除用户
int deleteUserById(int id);
- 在UserDao.xml的命名空间中添加一条delete语句
delete
from user
where id = #{id};
- 编写测试方法
@Test
public void testDeleteUserById(){
SqlSession session = MybatisUtils.getSqlSession();
UserDao userdao = session.getMapper(UserDao.class);
int ans = userdao.deleteUserById(99);
if(ans>0)
System.out.println("删除成功!");
// **注意增删改需要提交事务**
session.commit();
session.close();
}