mapper接口中写抽象方法:
package com.atguigu.mybatis.mapper;
import com.atguigu.mybatis.pojo.User;
import java.util.List;
public interface UserMapper {
int insertUser();
int updateUser();
int deleteUser();
User getUserById();
List<User> getAllUsers();
}
映射文件主要用来配置进行操作sql语句
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.atguigu.mybatis.mapper.UserMapper">
<!--
1.mapper接口的全类名要和映射文件的namespace保持一致
2.mapper接口中的方法名要和映射文件的sql的id保持一致
-->
<!--int insertUser()
id:与mapper中的方法同名
-->
<insert id="insertUser">
insert into t_user values(null,'admin','123456',23,'男','12345@qq.com')
</insert>
<!--
id:与mapper中的方法同名
resultType:设置结果类型,即查询的数据要转换为的类型
resultMap:自定义映射,处理一对一或一对多的映射关系-->
<select id="getUserById" resultType="com.atguigu.mybatis.pojo.User">
select * from t_user where id = 2
</select>
<update id="updateUser">
update t_user set username='ybc',password='123' where id = 2
</update>
<delete id="deleteUser">
delete from t_user where id = 3
</delete>
<select id="getAllUsers" resultType="user">
select * from t_user
</select>
</mapper>
特别注意: 1.映射文件的全类名和mapper接口的全类名保持一致 2.mapper接口中的方法名要和映射文件的sql的id保持一致 3.查询的标签select必须设置属性resultType或resultMap,用于设置实体类和数据库表的映射关系 resultType:自动映射,用于属性名和表中字段名一致的情况 resultMap:自定义映射,用于一对多或多对一或字段名和属性名不一致的情况
@Test//insert
public void testInsert() throws IOException {
//获取核心配置文件的输入流
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
//获取获取SqlSessionFactoryBuilder对象
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
//获取SqlSessionFactory对象
SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);
//获取sql的会话对象SqlSession(不会自动提交事务),是mybatis提供的操作数据库的对象
//SqlSession sqlSession = sqlSessionFactory.openSession();
//获取sql的会话对象SqlSession(会自动提交事务),是mybatis提供的操作数据库的对象
SqlSession sqlSession = sqlSessionFactory.openSession(true);
//获取UserMapper的代理实现对象(代理模式)
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
//调用mapper接口中的个方法,实现添加用户信息的功能
int result = mapper.insertUser();
System.out.println("结果"+result);
//提交事务
//sqlSession.commit();
//关闭会话
sqlSession.close();
}
为了简化步骤,将sqlsessionz封装为sqlsessionUtils
public class SqlSessionUtils {
public static SqlSession getSqlSession() throws IOException {
//获取核心配置文件的输入流
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
//获取SqlSessionFactoryBulider
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
//获取SqlSessionFactory对象
SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);
//获取SqlSession对象
SqlSession sqlSession = sqlSessionFactory.openSession(true);
return sqlSession;
}
}
update:
@Test//Update
public void testUpdate() throws IOException {
SqlSession sqlSession = SqlSessionUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
mapper.updateUser();
sqlSession.close();
}
delete:
@Test//Delete
public void testDelete() throws IOException {
SqlSession sqlSession = SqlSessionUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
mapper.deleteUser();
sqlSession.close();
}
select by id:
@Test//select
public void testSelect() throws IOException {
SqlSession sqlSession = SqlSessionUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User user = mapper.getUserById();
System.out.println(user);
sqlSession.close();
}
select allUser(list集合):
@Test//select allUser
public void getAllUser() throws IOException {
SqlSession sqlSession = SqlSessionUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<User> users = mapper.getAllUsers();
users.forEach(System.out::println);
sqlSession.close();
}
总结:
使用mybatis进行简单的数据库操作:首先需要通过核心配置文件(mybatis-config进行数据库的连接),然后编写一个实体类对应数据库中的属性,接着配置mapper接口和其对应的映射文件(mapper接口中设置需要进行的操作抽象方法,映射文件中编写不同方法对应的sql语句),最后在测试类中通过SqlSession会话进行基础操作
本文章使用limfx的vscode插件快速发布