mybatis眏射文件

mybatis映射配置文件

1.select标签

​ id: 这条SQL 语句的唯一标识,和接口的方法名一致(必须)p

​ parameterType:入型参数(非必须)

​ resultType/resultMap:返回值类型(必须)

userMapper.xml

xml 复制代码
<!--根据ID查询用户数据-->
<select id="findUserById" parameterType="_int" resultType="com.itheima.pojo.User">
    select id,username,birthday,sex,address
    from tb_user
    where id=#{id}
</select>

userMapper接口

java 复制代码
//dao层
public interface UserMapper {
    /**
     *根据给定的ID值查询用户
     * @param id
     * @return
     */
    public User findUserById(int id);
}

测试代码

java 复制代码
    @Test
    public void testFindUserById() throws IOException {
        //配置文件路径
        String resource = "mybatis-config.xml";
        //基于配置文件路径,创建字节输入流
        InputStream is = Resources.getResourceAsStream(resource);
        //创建SqlSessionFactory工厂类
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);

        //使用SqlSessionFactory工厂类,创建SqlSession
        SqlSession sqlSession = sqlSessionFactory.openSession();

        //利用sqlSession,创建一个代理对象
        UserMapper sessionMapper = sqlSession.getMapper(UserMapper.class);
        User user = sessionMapper.findUserById(1);
        //释放资源
        sqlSession.close();
        System.out.println(user);
    }

2.insert标签

id: 这条SQL 语句的唯一标识,和接口的方法名一致(必须)

说明:#{username},#{birthday},#{sex},#{address}大括号里面的值必须和pojo的实体类和user类的属性名一致,否则会报错

userMapper接口

java 复制代码
/**
 * 添加用户数据
 * @param user
 * @return 受影响的行数
 */
public int addUser(User user);

userMapper.xml

xml 复制代码
<!--插入数据-->
<insert id="addUser" parameterType="com.itheima.pojo.User">
    insert into tb_user (username,birthday,sex,address)
    values(#{username},#{birthday},#{sex},#{address})
</insert>

测试代码

java 复制代码
@Test
public void testAddUser() throws IOException {
    //配置文件路径
    String resource = "mybatis-config.xml";
    //基于配置文件路径,创建字节输入流
    InputStream is = Resources.getResourceAsStream(resource);
    //创建SqlSessionFactory工厂类
    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);

    //使用SqlSessionFactory工厂类,创建SqlSession
    //SqlSession sqlSession = sqlSessionFactory.openSession();
    SqlSession sqlSession = sqlSessionFactory.openSession(true); //把手动事务改成自动事务

    //利用sqlSession,创建一个代理对象
    UserMapper sessionMapper = sqlSession.getMapper(UserMapper.class);
    User user = new User(null,"白龙马",new Date(System.currentTimeMillis()),"男","东海");
    int rowCount = sessionMapper.addUser(user);
    if(rowCount>0){
        //sqlSession.commit();//提交事务
        System.out.println("插入数据成功");
    }
    //释放资源
    sqlSession.close();
}

3.update标签

id: 这条SQL 语句的唯一标识,和接口的方法名一致(必须)

说明:#{username},#{birthday},#{sex},#{address}大括号里面的值必须和pojo的实体类和user类的属性名一致,否则会报错

userMapper接口

java 复制代码
/**
 * 修改用户数据
 * @param user 用户对象
 * @return 影响的行数
 */
public int updateUser(User user);

userMapper.xml

xml 复制代码
<!--修改数据-->
<update id="updateUser" parameterType="com.itheima.pojo.User">
    update tb_user
    set username=#{username},birthday=#{birthday},sex=#{sex},address=#{address}
    where id=#{id}
</update>

测试代码

java 复制代码
@Test
public void testUpdateUser() throws IOException {
    //配置文件路径
    String resource = "mybatis-config.xml";
    //基于配置文件路径,创建字节输入流
    InputStream is = Resources.getResourceAsStream(resource);
    //创建SqlSessionFactory工厂类
    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);

    //使用SqlSessionFactory工厂类,创建SqlSession
    SqlSession sqlSession = sqlSessionFactory.openSession(true); //把手动事务改成自动事务

    //利用sqlSession,创建一个代理对象
    UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
    //根据ID查询数据
    User user = userMapper.findUserById(6);
    user.setUsername("小白龙");
    user.setAddress("东海1");
    int rowCount = userMapper.updateUser(user);
    if(rowCount>0){
        //sqlSession.commit();//提交事务
        System.out.println("修改数据成功");
    }
    //释放资源
    sqlSession.close();
}

4.delete标签

id: 这条SQL 语句的唯一标识,和接口的方法名一致(必须)

userMapper接口

java 复制代码
/**
 * 根据ID删除用户数据
 * @param id
 * @return
 */
public int deleteUserById(Integer id);

userMapper.xml

xml 复制代码
<delete id="deleteUserById" parameterType="int">
    delete from tb_user
    where id=#{id}
</delete>

测试代码

java 复制代码
@Test
public void testDeleteUserById() throws IOException {
    //配置文件路径
    String resource = "mybatis-config.xml";
    //基于配置文件路径,创建字节输入流
    InputStream is = Resources.getResourceAsStream(resource);
    //创建SqlSessionFactory工厂类
    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);

    //使用SqlSessionFactory工厂类,创建SqlSession
    SqlSession sqlSession = sqlSessionFactory.openSession(true); //把手动事务改成自动事务

    //利用sqlSession,创建一个代理对象
    UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
    int rowCount = userMapper.deleteUserById(7);
    if(rowCount>0){
        //sqlSession.commit();//提交事务
        System.out.println("删除数据成功");
    }
    //释放资源
    sqlSession.close();
}

Mybatis工具类的编写

java 复制代码
package com.itheima.util;

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 MybatisUtil {
    //私有化构造方法
    private MybatisUtil(){}

    //SqlSessionFactory工厂类对象
    private static SqlSessionFactory sqlSessionFactory=null;
    //随着类的加载,仅执行一次
    static {
        try {
            //读取配置文件
            InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
            //创建SqlSessionFactory工厂类
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    //静态方法返回SqlSession对象
    public static SqlSession openSession(){
        //使用SqlSessionFactory工厂类,创建SqlSession对象
        return sqlSessionFactory.openSession(); //默认:手动事务
    }

    public static SqlSession openSession(boolean flag){
        //使用SqlSessionFactory工厂类,创建SqlSession对象
        return sqlSessionFactory.openSession(flag);//根据参数指定事务
    }

    //静态方法关闭sqlSession
    public static void closeSqlSession(SqlSession sqlSession){
        if(sqlSession!=null){
            sqlSession.close();
        }
    }
}
相关推荐
哦虎!2 小时前
【JavaEE】网络初识
java
for_ever_love__2 小时前
MySQL ORDER BY 排序优化:从 Using filesort 到索引有序扫描(含双路 / 单路排序原理)
java·mysql·优化·存储·by·order·filesort
我是人✓3 小时前
Java文件上传三方式对比:从传统到SpringBoot
java·开发语言
欣栀♡3 小时前
JVM 频繁 Full GC 先看日志括号里的 cause,jstat 的 FGC 在 JDK 8 上会骗人
java·jvm
IT研究室4 小时前
最新计算机毕业设计选题推荐-基于spring boot的葡萄酒文化宣传网站-网站-文档指导-Java-springboot
java·spring boot·课程设计
慧都小项4 小时前
MyEclipse 中创建和测试 JAX-RS REST 接口:从项目配置到 REST Explorer
java·restful·myeclipse·jax-rs
Wang's Blog4 小时前
Java 项目实战: 交友项目 - 入门案例:编写 Dubbo 服务提供者
java·dubbo·交友
秋饼4 小时前
Spring AI 2.0 结构化输出企业级实战:从 BeanOutputConverter 源码到生产级解析容错
java·ai·技术分享·后端开发
摇滚侠4 小时前
《计算机是如何工作的:人人都能懂的计算机软硬件工作原理》第 9 章 机器码与汇编语言 阅读笔记 9
java·开发语言·笔记
Cc.Y4 小时前
Java零基础入门:深入Java核心:文件IO与序列化全解
java·开发语言·python