广告
返回顶部
首页 > 资讯 > 精选 >怎么在Mybatis中通过配置xml实现单表增删改查功能
  • 390
分享到

怎么在Mybatis中通过配置xml实现单表增删改查功能

2023-06-14 12:06:26 390人浏览 独家记忆
摘要

怎么在mybatis中通过配置xml实现单表增删改查功能?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Mybatis简介MyBatis 是一款优秀的持久层框架,

怎么在mybatis中通过配置xml实现单表增删改查功能?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

Mybatis简介

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

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

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

<dependency>  <groupId>org.mybatis</groupId>  <artifactId>mybatis</artifactId>  <version>x.x.x</version></dependency>

配置步骤

引入Mybatis的jar包

编写实体类与DAO接口

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

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

使用mybatis框架

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

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

创建SQLSessionFactory工厂

使用工厂生产SQLsession对象

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

使用代理对象执行方法

提交事务,释放资源

基础数据

实体类

public class User implements Serializable {           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 {         //@Select("select * from User")    List<User> findAll();         //@Insert("insert into User(username,address,sex,birthday)values()")    void saveUser(User user);         void updateUser(User user);         void deleteUser(Integer i);         User findById(Integer id);         List<User> findByName(String name);         int findTotal();}

主配置文件

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE configuration        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"        "Http://mybatis.org/dtd/mybatis-3-config.dtd"><!--myBatis的主配置文件 --><configuration>    <!--配置环境-->    <environments default="Mysql">        <!--配置mysql环境-->        <environment id="mysql">            <!--配置事务的类型-->            <transactionManager type="JDBC"></transactionManager>            <!--配置数据源(连接池)-->            <dataSource type="POOLED">                <!--配置连接数据库的基本信息-->                <property name="driver" value="com.mysql.jdbc.Driver"/>                <property name="url" value="jdbc:mysql://localhost:3306/eesy"/>                <property name="username" value="root"/>                <property name="passWord" value="root"/>            </dataSource>        </environment>    </environments>    <!--映射文件 配置文件方式-->    <mappers>        <mapper resource="com/dynamic_basics/dao/IUserDao.xml"></mapper>    </mappers>      <!--映射文件 注解方式(使用注解就要删除源配置文件)-->   <!-- <mappers>        <mapper class="com.dynamic_basics.dao.IUserDao"></mapper>    </mappers>--></configuration>

子配置文件

<?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.dynamic_basics.dao.IUserDao">     <!--使用配置的方式解决Java实体类与数据库列名不一致的问题-->    <resultMap id="userMap" type="com.dynamic_basics.domain.User">        <!--主键字段-->        <id property="userId" column="id"></id>        <!--非主键字段-->        <result property="userName" column="username"></result>        <result property="userAddress" column="address"></result>        <result property="userSex" column="sex"></result>        <result property="userBirthday" column="birthday"></result>    </resultMap>     <!--查询所有 id使用方法名-->    <select id="findAl l" resultType="com.dynamic_basics.domain.User" resultMap="userMap">        select * from user    </select>     <!--保存用户-->    <insert id="saveUser" parameterType="com.dynamic_basics.domain.User">        <!--参数使用了ognl表达式-->        insert into user(username,address,sex,birthday)values(#{username},#{address},#{sex},#{birthday});    </insert>     <!--更新用户-->    <insert id="updateUser" parameterType="com.dynamic_basics.domain.User">       update user set username=#{username},address=#{address},sex=#{sex},birthday=#{birthday} where id=#{id}    </insert>     <!--删除用户-->    <delete id="deleteUser" parameterType="int">        delete from User where id=#{id}    </delete>     <!--根据id查询用户-->    <select id="findById" parameterType="int" resultType="com.dynamic_basics.domain.User">        select * from user where id=#{id}    </select>     <!--根据名称模糊查询-->    <select id="findByName" resultType="com.dynamic_basics.domain.User" parameterType="String">        select * from user where username like #{name}    </select>     <!--获取用户的总记录数-->    <select id="findTotal" resultType="int">        SELECT COUNT(id) FROM `user`;    </select>  </mapper>

测试

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<User> 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<User> 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其实使用的方法很简单,需要多记住一些配置,当配置做好了,使用的时候很简单。Mybatis框架将JDBC中复杂的注册驱动、获取连接,使用不同的服务类(DriverManager,Connection,Statement,ResultSet)都封装了。其实框架的学习就是了解框架、熟悉配置,使用框架的阶段。

怎么在Mybatis中通过配置xml实现单表增删改查功能

怎么在Mybatis中通过配置xml实现单表增删改查功能

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网精选频道,感谢您对编程网的支持。

--结束END--

本文标题: 怎么在Mybatis中通过配置xml实现单表增删改查功能

本文链接: https://www.lsjlt.com/news/270672.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么在Mybatis中通过配置xml实现单表增删改查功能
    怎么在Mybatis中通过配置xml实现单表增删改查功能?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Mybatis简介MyBatis 是一款优秀的持久层框架,...
    99+
    2023-06-14
  • Mybatis基于xml配置实现单表的增删改查功能
    Mybatis入门-基于配置实现单表的增删改查 Mybatis简介 官网链接:https://mybatis.org/mybatis-3/zh/index.html。更加详细的信息可...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作