千家信息网

MyBatis如何通过xml配置文件实现单表的增删改查功能

发表于:2025-01-21 作者:千家信息网编辑
千家信息网最后更新 2025年01月21日,这篇文章给大家分享的是有关MyBatis如何通过xml配置文件实现单表的增删改查功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Mybatis简介官网链接:https:/
千家信息网最后更新 2025年01月21日MyBatis如何通过xml配置文件实现单表的增删改查功能

这篇文章给大家分享的是有关MyBatis如何通过xml配置文件实现单表的增删改查功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

Mybatis简介

官网链接:https://mybatis.org/mybatis-3/zh/index.html。更加详细的信息可以去官网查看。

MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

要使用 MyBatis, 只需将 mybatis-x.x.x.jar 文件置于类路径(classpath)中即可。

如果使用 Maven 来构建项目,则需将下面的依赖代码置于 pom.xml 文件中:

  org.mybatis  mybatis  x.x.x

配置步骤

1.引入Mybatis的jar包

2.编写实体类与DAO接口

3.添加主配置文件(配置mysql环境,事务类型,数据源,连接数据库的基本信息,映射文件的位置)

4.添加DAO接口的映射文件(需要指明DAO接口的位置,为每个方法做一个映射)注:所在路径在Resource文件夹下,目录路径需要DAO的层次结构一样

5.使用mybatis框架

使用步骤(所有的xml配置已配置完毕)

1.读取配置文件,可使用mybatis封装的Resources类。

2.创建SQLSessionFactory工厂

3.使用工厂生产SQLsession对象

4.使用SQLSession创建DAO接口的代理对象

5.使用代理对象执行方法

6.提交事务,释放资源

基础数据

实体类

public class User implements Serializable {     /**     * Java实体类为什么要实现Serializable接口     *  1.用于序列化与反序列化--一个类只有实现了Serializable接口,它的对象才能被序列化。     *  2.Serializable接口就是Java提供用来进行高效率的异地共享实例对象的机制,实现这个接口即可。     */      private Integer id;    private String username;    private Date birthday;    private String sex;    private String address;     public Integer getId() {        return id;    }     public void setId(Integer id) {        this.id = id;    }     public String getUsername() {        return username;    }     public void setUsername(String username) {        this.username = username;    }     public Date getBirthday() {        return birthday;    }     public void setBirthday(Date birthday) {        this.birthday = birthday;    }     public String getSex() {        return sex;    }     public void setSex(String sex) {        this.sex = sex;    }     public String getAddress() {        return address;    }     public void setAddress(String address) {        this.address = address;    }     @Override    public String toString() {        return "User{" +                "id=" + id +                ", username='" + username + ''' +                ", birthday=" + birthday +                ", sex='" + sex + ''' +                ", address='" + address + ''' +                '}';    }

DAO层的接口

public interface IUserDao {     /**     * 查询所有     * @return 所有的User信息     */    //@Select("select * from User")    List findAll();     /**     * 保存操作     * @param user     */    //@Insert("insert into User(username,address,sex,birthday)values()")    void saveUser(User user);     /**     * 更改操作     */    void updateUser(User user);     /**     * 删除操作     * @param i     */    void deleteUser(Integer i);     /**     * 根据id查询单个用户     * @param id     * @return     */    User findById(Integer id);     /**     * 根据名称模糊查询     * @param name     * @return     */    List findByName(String name);     /**     * 查询总用户数     * @return     */    int findTotal();}

主配置文件

                                                                                                                                                                                                             

子配置文件

                                                                                                        insert into user(username,address,sex,birthday)values(#{username},#{address},#{sex},#{birthday});                    update user set username=#{username},address=#{address},sex=#{sex},birthday=#{birthday} where id=#{id}                     delete from User where id=#{id}                                 

测试类

/** * @Author: Promsing * @Date: 2021/3/29 - 8:58 * @Description: 描述 形容 * @version: 1.0 */public class MyBatisTest {     private InputStream in;    private SqlSession sqlSession;    private IUserDao userDao;    @Before    public void init()throws Exception{        //1.读取配置文件  Resources是myBatis封装的类        in= Resources.getResourceAsStream("SqlMapConfig.xml");        //2.创建SQLSessionFactory工厂        //  SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(is);        SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder();        SqlSessionFactory factory=builder.build(in);        //3.使用工厂生产SQLSession对象        sqlSession = factory.openSession();        //4.使用SQLSession创建DAO接口的代理对象         userDao = sqlSession.getMapper(IUserDao.class);    }    @After    public void destory()throws Exception{        //6.释放资源        //提交事务        sqlSession.commit();        sqlSession.close();        in.close();    }    //入门案例     /**     * 查询操作     */    @Test   public void selectUser(){         //初始化资源-使用注解Before         //5.使用代理对象执行方法        List all = userDao.findAll();        for (User user : all) {            System.out.println(user);        }        //释放资源-使用注解After     }     /**     * 测试保存     */    @Test    public void testSave() {        User user=new User();        user.setUsername("mybatis");        user.setAddress("北京市延庆区");        user.setSex("女");        user.setBirthday(new Date());         //初始化资源-使用注解Before         //5.使用代理对象执行方法        userDao.saveUser(user);         //释放资源-使用注解After      }     /**     * 测试修改     */    @Test    public void testUpdate() {        User user=new User();        user.setId(50);        user.setUsername("mybatis_plus");        user.setAddress("北京市安次");        user.setSex("男");        user.setBirthday(new Date());         //初始化资源-使用注解Before         //5.使用代理对象执行方法        userDao.updateUser(user);         //释放资源-使用注解After      }     /**     * 测试删除     */    @Test    public void testDelete() {         //初始化资源-使用注解Before         //5.使用代理对象执行方法        userDao.deleteUser(50);         //释放资源-使用注解After     }    /**     * 查询单个人员信息     */    @Test    public void testFindById() {         //初始化资源-使用注解Before         //5.使用代理对象执行方法        User user=userDao.findById(49);        System.out.println(user);         //释放资源-使用注解After     }     /**     * 模糊查询     */    @Test    public void testFindByName() {         //初始化资源-使用注解Before         //5.使用代理对象执行方法        List users=userDao.findByName("%王%");       users.forEach(i-> System.out.println(i));         //释放资源-使用注解After     }     /**     * 测试查询总记录条数     */    @Test    public void testFindTotal() {         //初始化资源-使用注解Before         //5.使用代理对象执行方法        int total=userDao.findTotal();        System.out.println(total);         //释放资源-使用注解After     }  }

感谢各位的阅读!关于"MyBatis如何通过xml配置文件实现单表的增删改查功能"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

0