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();
        }
    }
}
相关推荐
Code_Solitude13 分钟前
c语言:指针(3)+冒泡排序
java·c语言·算法
乌暮24 分钟前
从 `println` 到生产级日志:Spring Boot 日志体系完全指南
java·开发语言·jvm·spring boot·后端·学习·面试
脉动数据行情35 分钟前
Java OkHttp 对接国际期货批量行情 SpringBoot 定时落库实践
java·spring boot·okhttp
Wang's Blog42 分钟前
Java 项目实战: 交友项目 - 百度人脸识别:介绍
java·开发语言·交友
一枕槐安4871 小时前
大模型应用后端设计:上下文管理、缓存、降级策略的工程方案总结
java·spring·缓存
T_Apollo1 小时前
2.9 Java 25 版本新增特性和类
java
步行cgn1 小时前
@RequestMapping 注解详解
java·后端·spring
鶴哥只手遮天1 小时前
Spring Boot 4.1.1 深度源码解析-第 15 章 · 条件注解体系:全部 `@ConditionalOnXxx` 的实现原理
java·后端·开源
鶴哥只手遮天1 小时前
Spring Boot 4.1.1 深度源码解析-第 30 章 · 基础设施能力:SSL Bundle、Task 与虚拟线程、Retry
java·后端·开源
IT研究室1 小时前
最新计算机毕业设计选题推荐-基于微信小程序的汉服交易系统-网站-文档指导-Java-springboot
java·微信小程序·课程设计