Mybatis映射配置文件详解

  • 目录

    映射配置文件的介绍

    配置文件大致组成

    查询功能的使用

    新增功能的使用

    修改功能的使用

    删除功能的使用


  • 映射配置文件的介绍

  • 映射配置文件包含了数据和对象之间的映射关系以及要执行的SQL语句
  • 配置文件大致组成

  • 第一个是xml文件标题
  • 第二个是DTD约束
  • 就是用来帮助我们进行相关的提示以及一些约束的
  • 第三个是mapper核心根标签
  • 它的属性是namespace即名称空间
  • 然后是select即具有查询功能的标签
  • 它的属性id代表唯一标识,配合名称空间来找到最终想执行的sql语句
  • 属性resultType指定查询出的数据要封装到哪个对象当中,即指定结果映射对象类型
  • 属性parameterType指定参数映射对象类型
  • 查询功能的使用

  • <select>:查询功能标签
  • 属性:
  • id:唯一标识,配合名称空间使用
  • parameterType:指定参数映射的对象类型
  • resultType:指定结果映射的对象类型
  • SQL获取参数
  • #{属性名}
  • <?xml version="1.0" encoding="UTF-8" ?>
    <!--MyBatis的DTD约束-->
    <!DOCTYPE mapper
            PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <!--mapper:核心根标签;namespace属性:名称空间-->
    <mapper namespace="StudentMapper">
    <!--select:查询功能的标签
        id属性:唯一标识
        resultType属性:指定结果映射对象类型
        parameterType属性:指定参数映射对象类型-->
    <select id="selectAll" resultType="demo1.bean.Student">
        SELECT * FROM student
    </select>
    <select id="selectById" resultType="demo1.bean.Student" parameterType="java.lang.Integer">
        SELECT * FROM student WHERE sid = #{sid}
    </select>
    </mapper>
  • package demo1.bean;
    
    public class Student {
        private Integer sid;
        private String name;
        private Integer age;
    
        public Student() {
        }
    
        public Student(Integer sid, String name, Integer age) {
            this.sid = sid;
            this.name = name;
            this.age = age;
        }
    
        @Override
        public String toString() {
            return "Student{" +
                    "id=" + sid +
                    ", name='" + name + '\'' +
                    ", age=" + age +
                    '}';
        }
    
        public Integer getId() {
            return sid;
        }
    
        public void setId(Integer sid) {
            this.sid = sid;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public Integer getAge() {
            return age;
        }
    
        public void setAge(Integer age) {
            this.age = age;
        }
    }
  • package demo1.dao;
    
    import demo1.bean.Student;
    import org.apache.ibatis.io.Resources;
    import org.apache.ibatis.session.*;
    import org.junit.Test;
    
    import java.io.InputStream;
    import java.util.List;
    
    public class StudentTest1 {
        @Test
        public void selectAll() throws Exception{
            //1.加载核心配置文件
            InputStream is = Resources.getResourceAsStream("MybatisConfig.xml");
            //2.获取SqlSession工厂对象
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
            //3.通过SqlSession工厂对象获取SqlSession对象
            SqlSession sqlSession = sqlSessionFactory.openSession();
            //4.执行映射配置文件中的sql语句,并接收结果
            List<Student> list = sqlSession.selectList("StudentMapper.selectAll");
            //5.处理结果
            for(Student stu : list){
                System.out.println(stu);
            }
            //6.释放资源
            sqlSession.close();
            is.close();
        }
        @Test
        public void selectById() throws Exception{
            //1.加载核心配置文件
            InputStream is = Resources.getResourceAsStream("MybatisConfig.xml");
            //2.获取SqlSession工厂对象
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
            //3.通过SqlSession工厂对象获取SqlSession对象
            SqlSession sqlSession = sqlSessionFactory.openSession();
            //4.执行映射配置文件中的sql语句,并接收结果
            List<Student> list = sqlSession.selectList("StudentMapper.selectById",3);
            //5.处理结果
            for(Student stu : list){
                System.out.println(stu);
            }
            //6.释放资源
            sqlSession.close();
            is.close();
        }
    }
  • 新增功能的使用

  • <insert>:新增功能标签
  • 属性:
  • id:唯一标识,配合名称空间使用
  • parameterType:指定参数映射的对象类型
  • resultType:指定结果映射的对象类型(返回影响行数,大多省略不写)
  • SQL获取参数
  • #{属性名}
  • <insert id="insert" parameterType="demo1.bean.Student">
        INSERT INTO student VALUES (#{sid},#{name},#{age})
    </insert>
  • @Test
        public void insert() throws Exception{
            //1.加载核心配置文件
            InputStream is = Resources.getResourceAsStream("MybatisConfig.xml");
            //2.获取SqlSession工厂对象
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
            //3.通过SqlSession工厂对象获取SqlSession对象
            SqlSession sqlSession = sqlSessionFactory.openSession();
            //4.执行映射配置文件中的sql语句,并接收结果
            Student stu = new Student(4,"赵六",26);
            int result = sqlSession.insert("StudentMapper.insert",stu);
            //5.提交事务
            sqlSession.commit();
            //5.处理结果
            System.out.println(result);
            //6.释放资源
            sqlSession.close();
            is.close();
        }
  • 修改功能的使用

  • <update>:修改功能标签
  • 属性:
  • id:唯一标识,配合名称空间使用
  • parameterType:指定参数映射的对象类型
  • resultType:指定结果映射的对象类型(返回影响行数,大多省略不写)
  • SQL获取参数
  • #{属性名}
  • <update id="update" parameterType="demo1.bean.Student">
        UPDATE student SET name = #{name},age = #{age} WHERE sid = #{sid}
    </update>
  • @Test
        public void update() throws Exception{
            //1.加载核心配置文件
            InputStream is = Resources.getResourceAsStream("MybatisConfig.xml");
            //2.获取SqlSession工厂对象
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
            //3.通过SqlSession工厂对象获取SqlSession对象
            SqlSession sqlSession = sqlSessionFactory.openSession();
            //4.执行映射配置文件中的sql语句,并接收结果
            Student stu = new Student(4,"倪炜豪",99);
            int result = sqlSession.insert("StudentMapper.update",stu);
            //5.提交事务
            sqlSession.commit();
            //5.处理结果
            System.out.println(result);
            //6.释放资源
            sqlSession.close();
            is.close();
        }
  • 删除功能的使用

  • <delete>:删除功能标签
  • 属性:
  • id:唯一标识,配合名称空间使用
  • parameterType:指定参数映射的对象类型
  • resultType:指定结果映射的对象类型(返回影响行数,大多省略不写)
  • SQL获取参数
  • #{属性名}
  • <delete id="delete" parameterType="java.lang.Integer">
        DELETE FROM student WHERE sid = ${sid}
    </delete>
  • @Test
        public void delete() throws Exception{
            //1.加载核心配置文件
            InputStream is = Resources.getResourceAsStream("MybatisConfig.xml");
            //2.获取SqlSession工厂对象
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
            //3.通过SqlSession工厂对象获取SqlSession对象
            SqlSession sqlSession = sqlSessionFactory.openSession();
            //4.执行映射配置文件中的sql语句,并接收结果
            int result = sqlSession.insert("StudentMapper.delete",4);
            //5.提交事务
            sqlSession.commit();
            //5.处理结果
            System.out.println(result);
            //6.释放资源
            sqlSession.close();
            is.close();
        }
  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
## Mybatis Generator配置详解 一、简介 mybatis-geneator是一款mybatis自动代码生成工具,可以通过配置,快速生成mapper和xml文件。 二、配置方法 在项目的pom文件中添加插件配置 ```java <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.3.2</version> <configuration> <verbose>true</verbose> <overwrite>true</overwrite> </configuration> </plugin> ``` 在main的resource目录下创建generatorConfig.xml文件 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200323172307167.png) 配置文件中的内容如下,可根据需要自行修改 ```java <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"> <generatorConfiguration> <!-- 数据库驱动:选择你的本地硬盘上面的数据库驱动包--> <classPathEntry location="D:\Users\ZLZ\.m2\repository\mysql\mysql-connector-java\8.0.15\mysql-connector-java-8.0.15.jar"/> <context id="DB2Tables" targetRuntime="MyBatis3"> <commentGenerator> <property name="suppressDate" value="true"/> <!-- 是否去除自动生成的注释 true:是 : false:否 --> <property name="suppressAllComments" value="true"/> </commentGenerator> <!--数据库链接URL,用户名、密码 --> <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver" connectionURL="jdbc:mysql://127.0.0.01:3306/shop? useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC" userId="root" password="root"> </jdbcConnection> <javaTypeResolver> <property name="forceBigDecimals" value="false"/> </javaTypeResolver> <!-- 生成模型的包名和位置--> <javaModelGenerator targetPackage="com.example.shop.shop.domain" targetProject="src/main/java"> <property name="enableSubPackages" value="true"/> <property name="trimStrings" value="true"/> </javaModelGenerator> <!-- 生成映射文件的包名和位置--> <sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources"> <property name="enableSubPackages" value="true"/> </sqlMapGenerator> <!-- 生成DAO的包名和位置--> <javaClientGenerator type="XMLMAPPER" targetPackage="com.example.shop.shop.dao" targetProject="src/main/java"> <property name="enableSubPackages" value="true"/> </javaClientGenerator> <!-- 要生成的表 tableName是数据库中的表名或视图名 domainObjectName是实体类名--> <table tableName="ad" domainObjectName="Ad" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"/> </context> </generatorConfiguration>
MyBatis是一个开源的持久层框架,它可以将数据库操作与Java对象之间的映射关系进行配置,提供了一种简单且灵活的方式来访问数据库。 在MyBatis中,映射文件是用于定义SQL语句和结果映射配置文件。下面是映射文件详解: 1. 命名空间(namespace):映射文件中的命名空间用于对SQL语句进行分类和管理,可以通过命名空间来引用映射文件中定义的SQL语句。 2. 结果映射(resultMap):结果映射用于将查询结果映射到Java对象上。可以通过resultMap标签定义结果映射,指定查询结果与Java对象之间的对应关系。 3. SQL语句(select、insert、update、delete):映射文件中可以定义各种SQL语句,包括查询、插入、更新和删除等操作。可以通过标签(如select、insert、update、delete)来定义SQL语句,并在其中编写具体的SQL语句。 4. 参数映射(parameterType):参数映射用于将Java对象作为参数传递给SQL语句。可以通过parameterType属性指定参数类型,也可以通过parameterMap标签定义参数映射。 5. 返回值映射(resultType):返回值映射用于将查询结果转换为Java对象。可以通过resultType属性指定返回值类型,也可以通过resultMap标签引用已定义的结果映射。 6. 动态SQLMyBatis支持动态SQL,可以根据条件动态生成SQL语句。可以使用if、choose、when、otherwise等标签来实现动态SQL的编写。 7. 参数传递:映射文件中可以使用#{}或者${}来传递参数。#{}会将参数转义后传递给数据库,${}会直接将参数拼接到SQL语句中。 8. 引用其他映射文件映射文件可以通过include标签引用其他映射文件,可以将一些通用的SQL语句定义在公共的映射文件中,然后在需要的地方引用。 以上是对MyBatis映射文件详解,希望能对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

兔子队列

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值