我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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

怎么在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实现单表增删改查功能

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

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

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

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

下载Word文档

猜你喜欢

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

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

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录