精华内容
下载资源
问答
  • GeneratorMapper.xml

    2020-05-20 21:06:11
    -- 生成MyBatis的Mapper.xml文件,targetPackage指定mapper.xml文件的包名, targetProject指定生成的mapper.xml放在eclipse的哪个工程下面 --> <!-- 生成MyBatis的Mapper接口类文件,targetPackage指定Mapper接口类...
  • 今天小编就为大家分享一篇关于MyBatis-Plus通过插件将数据库表生成Entiry,Mapper.xml,Mapper.class的方式,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
  • Mapper.xml中Insert操作

    万次阅读 2021-02-01 11:10:25
    对应dao文件 @Mapper public interface UserDao{ int insert01(User user); int insert02(List list); } 补充:selectKey子元素 :在insert元素和update元素中插入查询语句。属性如下 keyProperty :默认值unset,...

    insert 操作 : id与对应dao文件方法名一致;

    parameterType:参数的类型,指定自己写的实体类,或java基本类
    useGeneratedKeys:开启主键回写,true|false,和keyProperty指定后,运行结束,实体类获取其id(id是插入后数据库自增的)
    keyColumn:指定数据库的主键,设置数据表自动生成的主键名。对特定数据库(如PostgreSQL),若自动生成的主键不是第一个字段则必须设置
    keyProperty:主键对应的pojo属性名 statementType
    :取值范围STATEMENT,PREPARED(默认值),CALLABLE flushCache
    :取值范围true(默认值)|false,设置执行该操作后是否会清空二级缓存和本地缓存 timeout
    :默认为unset(依赖jdbc驱动器的设置),设置执行该操作的最大时限,超时将抛异常 databaseId
    :取值范围oracle|mysql等,表示数据库厂家,元素内部可通过<if test="_databaseId = 'oracle'">来为特定数据库指定不同的sql语句

    批量插入,在values后加 标签,collection 是list。若用户传入列表名则使用传入的名

    <insert id="insert01" keyProperty="id" useGeneratedKeys="true" parameterType="com.demo.entity.User"> 
    insert into User(user_name,password)
    values(#{name},#{password})
    </insert>
     
    # name 和password 是实体类User内的变量名
     
    #批量插入
    <insert id="insert02" parameterType="com.demo.entity.User"> 
    insert into User(user_name,password)
    values
    <foreach collection="list" item="item" index="index" separator=",">
    (#{name},#{password})
    </foreach>
    </insert>
    

    对应dao文件

    @Mapper
    public interface UserDao{
        int insert01(User user);
        int insert02(List<User> list);
    }
    

    补充:selectKey子元素 :在insert元素和update元素中插入查询语句。属性如下 keyProperty
    :默认值unset,用于设置getGeneratedKeys方法或selectKey子元素返回值将赋值到领域模型的哪个属性中
    resultType :keyPropety所指向的属性类全限定类名或类型别名
    order:取值范围BEFORE|AFTER,指定是在insert语句前还是后执行selectKey操作 statementType
    :取值范围STATEMENT,PREPARED(默认值),CALLABLE

    selectKey操作会将操作查询结果赋值到insert元素的parameterType的入参实例下对应的属性中。并提供给insert语句使用

    <selectKey keyProperty="id" resultType="java.lang.Integer"
    order="BEFORE">
        select max(id)+1 as id from User   </selectKey> insert into User(user_name,password) values(#{name},#{password}) </insert>
        #id 自增 ```
    
    展开全文
  • Mapper.xml详解

    万次阅读 多人点赞 2018-04-22 12:41:26
    我们知道,每一款框架产品在实际开发中,都是通过XML文件来培训框架的相关流程的,MyBatis也不例外,主要有两个配置文件:config.xmlMapper.xml,当然,这两种配置文件可以自定义文件名。config.xml是全局配置文件...

     我们知道,每一款框架产品在实际开发中,都是通过XML文件来培训框架的相关流程的,MyBatis也不例外,主要有两个配置文件:config.xml和Mapper.xml,当然,这两种配置文件可以自定义文件名。
    config.xml是全局配置文件,主要配置MyBatis的数据源(DataSource),事务管理(TransactionManager),以及打印SQL语句,开启二级缓存,设置实体类别名等功能。
    Mapper.xml的作用是什么?我们之前介绍过,MyBatis是"半自动"的ORM框架,即SQL语句需要开发者自定义,MyBatis的关注点在POJO与SQL之间的映射关系。那么SQL语句在哪里配置自定义呢?就在Mapper.xml中配置。

    首先来介绍Mapper.xml常用属性:
    parameterType:参数数据类型

    (1)基本数据类型,通过id查询User。

    UserDao:

    //通过id查找User
    public User getById(int id);
    

    UserDao.xml:

    <?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>
        <select id="getById" parameterType="int" resultType="com.xf.pojo.User">
            SELECT * FROM t_user WHERE id=#{id}
        </select>
    </mapper>

    (2)String类型,通过name查User

    UserDao:

    //通过name查询User
    public User getByName(String name);

    UserDao.xml:

    <select id="get2" parameterType="java.lang.String" resultType="com.xf.pojo.User">
           select * from t_user where name = #{name}
    </select>

    (3)包装类,通过id查询User。

    UserDao:

    //通过id查询User
    public User getById(Integer id);

    UserDao.xml:

    <select id="getById" parameterType="java.lang.Integer" resultType="com.xf.pojo.User">
           select * from t_user where id=#{id}
    </select>

    (4)多个参数,通过name和age查询User。两个参数分别是String类型和int类型,类型不一致,所以此时parameterType可以省略,通过参数下标取出参数值

    UserDao:

    //通过name和age查询User
    public User getByNameAge(int id,String name);

    UserDao.xml:

    <select id="getByNameAge" resultType="com.xf.pojo.User">
           select * from t_user where name = #{0} and age = #{1}
    </select>

    (5)POJO,很显然,当有多个参数时,一个一个写太麻烦了,这时候我们可以将参数列表进行封装,将封装对象作为parameterType的值。

    UserDao:

    //根据Usesr封装对象查询User
    public User getByUser(User user);

    UserDao.xml:

    <select id="getByUser" parameterType="com.xf.pojo.User" resultType="com.xf.pojo.User">
           select * from t_user where name = #{name} and age = #{age}
    </select>

    resultType:结果类型

    (1)基本数据类型,统计User总数。

    UserDao:

    //通过User总数量
    public int getCount();

    UserDao.xml:

    <select id="getCount" resultType="int">
           select count(*) from t_user
    </select>

    (2)包装类,统计User总数。

    UserDao:

    //通过User总数量
    public Integer getCount();

    UserDao.xml:

    <select id="getCount" resultType="java.lang.Integer">
           select count(*) from t_user
    </select>

    (3)String类型,根据id查询User的name值。

    UserDao:

    //根据id查询User的name
    public String getNameById(int id);

    UserDao.xml:

    <select id="getNameById" parameterType="int" resultType="java.lang.String">
           select name from user where id = #{name}
    </select>

    (4)POJO,如通过id查询User,上面已经介绍过了,这里就不再重复了。

    级联查询
     

    一对多

    我们现在查询的User是单表查询,如果是多表关联查询,比如查询Student同时级联对应的Classes,如何处理呢?

    使用resultType无法完成,我们以通过id查询Student来举例。

    SQL:

    select * from student as s,classes as c where s.cid = c.c_id and s.id = 1; 

    查询结果:

    实体类Student:

    package com.xf.pojo;
    
    public class Student {
    
        private int id;
        private String name;
        private String address;
        private String tel;
        private int score;
        private Classes classes;
    
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getAddress() {
            return address;
        }
    
        public void setAddress(String address) {
            this.address = address;
        }
    
        public String getTel() {
            return tel;
        }
    
        public void setTel(String tel) {
            this.tel = tel;
        }
    
        public int getScore() {
            return score;
        }
    
        public void setScore(int score) {
            this.score = score;
        }
    
        public Classes getClasses() {
            return classes;
        }
    
        public void setClasses(Classes classes) {
            this.classes = classes;
        }
    }
    

    Classes:

    package com.xf.pojo;
    
    import java.util.List;
    
    public class Classes {
        private int id;
        private String name;
        private List<Student> students;
    
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public List<Student> getStudents() {
            return students;
        }
    
        public void setStudents(List<Student> students) {
            this.students = students;
        }
    }
    

    MyBatis会自动将结果与实体类进行映射,将字段的值赋给对应的属性,若字段名与属性名一致,完成赋值,那么问题来了。

    如图,id,name,address,tel,score属性可以对应字段,classes属性没有对应的字段,准确的讲,classes属性需要对应的对象为c_id,c_name封装起来的对象。

    此时,需要使用resultMap来完成映射。

    StudentDao:

    //通过id查询Student
    public Student getById(int id);

    StudentDao.xml,使用association标签配置classes级联,因为一个Student只能对应一个Classes。

    <resultMap type="student" id="studentMap">
           <id property="id" column="id"/>
           <result property="name" column="name"/>
           <result property="address" column="address"/>
           <result property="tel" column="tel"/>
           <result property="score" column="score"/>
           <!-- 映射classes属性 -->
           <association property="classes" javaType="com.xf.pojo.Classes">
               <id property="id" column="c_id"/>
               <result property="name" column="c_name"/>
           </association>
    </resultMap>
    
    <select id="getById" parameterType="int" resultMap="studentMap">
       select * from student as s,classes as c where s.cid = c.c_id and s.id = #{id};
    </select>

    同理,反过来查询Classes,将级联的所有Student一并查询。

    ClassesDao:

    //根据id查询Classes
    public Classes getById(int id);

    ClassesDao.xml,使用collection标签配置students级联,因为一个Classes可以对应多个Student。

    <resultMap type="classes" id="classesMap">
       <id property="id" column="c_id"/>
       <result property="name" column="c_name"/>
       <!-- 映射students属性 -->
       <collection property="students" ofType="student">
               <id property="id" column="id"/>
               <result property="name" column="name"/>
               <result property="address" column="address"/>
               <result property="tel" column="tel"/>
               <result property="score" column="score"/>
           </collection>
    </resultMap>
    
    <select id="getById" parameterType="int" resultMap="classesMap">
       select * from classes as c,student as s where c.c_id = s.cid and c.c_id = #{id};
    </select>

    需要注意的是:association标签,通过设置javaType属性,映射实体类,

    collection标签,通过设置ofType属性映射实体类。

     

    多对多

    多对多其实是双向的一对多关系,我们用Customer和Goods来举例,

    一个Customer可以对应多个Goods,一个Goods也可以对应多个Customer,所以双方都是用collection标签设置级联。

    Customer:

    package com.xf.pojo;
    
    import java.util.List;
    
    public class Customer {
        private int id;
        private String name;
        private List<Goods> goods;
    
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public List<Goods> getGoods() {
            return goods;
        }
    
        public void setGoods(List<Goods> goods) {
            this.goods = goods;
        }
    }
    

    Goods:

    package com.xf.pojo;
    
    import java.util.List;
    
    public class Goods {
        private int id;
        private String name;
        private List<Customer> customers;
    
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public List<Customer> getCustomers() {
            return customers;
        }
    
        public void setCustomers(List<Customer> customers) {
            this.customers = customers;
        }
    }
    

    CustomerDao:

    //根据id查询Customer
    public Customer getById(int id);

    CustomerDao.xml:

    <resultMap type="customer" id="customerMap">
           <id property="id" column="c_id"/>
           <result property="name" column="c_name"/>
           <!-- 映射goods属性 -->
           <collection property="goods" ofType="goods">
               <id property="id" column="g_id"/>
               <result property="name" column="g_name"/>
           </collection>
    </resultMap>
    
    <select id="getById" parameterType="int" resultMap="customerMap">
       select * from customer as c,goods as g,
       customer_goods as cg where c.c_id = cg.c_id
       and g.g_id =c g.g_id and c.c_id = #{id};
    </select>

    GoodsDao:

    //根据id查询Goods
    public Goods getById(int id);

    GoodsDao.xml:

    <resultMap type="goods" id="goodsMap">
           <id property="id" column="g_id"/>
           <result property="name" column="g_name"/>
           <!-- 映射customers属性 -->
           <collection property="customers" ofType="customer">
               <id property="id" column="c_id"/>
               <result property="name" column="c_name"/>
           </collection>
    </resultMap>
    
    <select id="getById" parameterType="int" resultMap="goodsMap">
       select * from customer as c,
       goods as g,customer_goods as cg
       where c.c_id = cg.c_id and g.g_id
       = cg.g_id and g.g_id = #{id};
    </select>

     

     

    展开全文
  • idea快速从mapper.java跳转到mapper.xml文件的插件 跳转示例如下, 这样可以快速找到对应的方法,提高开发效率。 需要用到对应的插件包,但是idea自带的插件库Plugins里已经是收费版了,本人暂时收藏了两个idea...

    idea快速从mapper.java跳转到mapper.xml文件的插件

    更新:2020年

    现在idea里面已经有一个免费插件,直接下载即可,如下图:
    在Marketplace中搜索安装重启即可
    在这里插入图片描述


    以下是原文


    需要用到对应的插件包,但是idea自带的插件库Plugins里已经是收费版了,本人暂时收藏了两个idea版本的插件包,一个15版,一个17版。需要插件包可以在 [ 我的资源 ] (注意:是标题为“generator-Mybatis快速生成实体类和mapper文件” 的,最前面一个有些小问题,csdn不能删除,所以再上传了一个)里面下载,里面附带详细教程。


    1. 跳转示例如下,


    这样可以快速找到对应的方法,提高开发效率。


    2. 具体使用:安装下图点击,直接找到下载的文件,然后选中即可

    在这里插入图片描述


    3.安装完成后即可看到第一点的示例

    在这里插入图片描述


    展开全文
  • idea工具中直接从mapper.Java文件中跳转到mapper.xml文件的插件,挺不错的
  • 只要在JAVA开发环境下都能逆向生成mapper.xmlmapper.java文件,不论开发工具
  • 主要介绍了Mybatis中通过generator生成mapper、Dao、mapper.xml的方法,需要的朋友可以参考下
  • springboot mybatis mapper.xml 配置,里面包含了新增,修改,删除,查询,分页查询例子以及通过 网页访问的例子
  • 1.IDEA从mapper.java跳转到mapper.xml(Free Mybatis plugin 插件) 2.IDEA从dao.java跳转到mapper.xml(iBATIS/MyBatis plugin 插件) 如图安装插件即可: 安装之后重新启动IDEA ...

    1.IDEA从mapper.java跳转mapper.xml(Free Mybatis plugin 插件)

    2.IDEA从dao.java跳转mapper.xml(iBATIS/MyBatis plugin 插件)

    如图安装插件即可:

    安装之后重新启动IDEA

    展开全文
  • mybatis Mapper.xmlMapper.java

    千次阅读 2018-05-13 00:49:54
    通过Mapper.xmlMapper.java来实现mybatis 关键:Mapper.xml + Mapper.java +Sqlsession.getMapper()1.Mapper.java 相当于dao (数据访问层) 创建Mapper.java。同样通过ID找User。具体实现如下2.Mapper.xml ...
  • Mybatis学习笔记02Mapper.xml、Mybatis.xml 约束文件1:在哪儿?2:xml文件头部 怎么获取一般新建的xml只有如下部分内容xml与约束文件关联帮助文档寻找相关dtd本地配置xml关联文件本地配置的xml不生效 怎么办? Mapper...
  • 设置mapper.xml文件路径

    千次阅读 2019-11-16 09:35:29
    设置mapper.xml文件路径 1.通过application.yml文件配置 mybatis: mapper-locations: classpath*:mybatis.mapper/*.xml mybatis.mapper:为项目resource下的目录 /*.xml:为mapper.xml文件 2.通过pom.xml文件配置 ...
  • Mapper.java 与 Mapper.xml 如何对应

    千次阅读 2018-01-25 22:21:41
    Mapper.java 与 Mapper.xml 如何对应 问题描述: 某项目中检索 HbPkgEntityMapper.java 对应的 .xml 时有两个同名不同包的.xmlMapper.xml文件中 namespace 均为该 mapper.java 的路径,无法确认此时调用的...
  • 1、mapper.xml配置文件约束: <?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"> 2、config...
  • mybatis使用虽然灵活简单,但mapper.xml的配置却很繁琐。如果项目的实体表比较多,手工配置是不现实的。这个工具可以帮助自动后成model,dao,mapper.xml 使开发者从繁琐的mapper.xml映射中解放出来,把更多的精力投入...
  • IDEA添加Mapper.xml文件模板

    千次阅读 2021-02-17 21:12:25
    在学习MyBatis框架的过程中,发现在idea里面没法创建Mapper.xml映射文件,创建出的xml文件没有Mapper.xml文件的基本格式,本文讲述如何在idea中创建Mapper.xml映射文件模板 提示:以下是本篇文章正文内容 一、在...
  • Mybatis在Mapper.xml文件中对大于、小于、大于等于、小于等于等符号进行转义字符处理的几种方式
  • mapper.xml与sql知识总结

    2020-12-14 14:58:46
    3.mapper.xml里的date类型与mysql中的日期作比较 and a.diagnosed >= DATE_FORMAT(#{start_diagnosed}, '%Y-%m-%d') and a.diagnosed <= DATE_FORMAT(#{end_diagnosed}, '%Y-%m-%d') 注:if判断中date类型不能与...
  • Idea配置Mapper接口跳到mapper.xml

    千次阅读 多人点赞 2020-07-27 14:50:28
    打开mapper接口层: 是没有办法直接到mapper.xml层的 所以得借助插件 操作步奏: 2. 3.安装插件 4.重启idea配置生效 从启之后
  • 主要介绍了mybatis的mapper.xml中resultMap标签的使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • 主要介绍了IDEA MyBatis Plugins自动生成实体类和mapper.xml,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • idea快速从mapper.java跳转到mapper.xml文件的插件 步骤: idea—>File—>Setting—>Plugins 现在idea里面已经有一个免费插件,直接下载即可,如下图: 安装完成后,请按要求进行idea重启操作!
  • 由于项目已经发布到线上,要是修改一个Mapper.xml文件的话,需要重启整个服务,这个是很耗时间的,而且在一段时间内导致服务不可用,严重影响用户 的体验度。所以希望可以有一个机制可以,当修改某个mapper.xml的...
  • 主要介绍了详解mybatis-plus的 mapper.xml 路径配置的坑,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • Mybatis的逆向工程可以在设计好数据库表的基础上,通过java程序,生成pojo、mapper、和mapper.xml生成了mapper.xml可满足大部门的增删改查的接口和方法。在Service中可直接掉用mapper.java中的方法操作数据库。步骤...
  • 分离mybatis的mapper.java和mapper.xml文件

    千次阅读 2017-02-20 21:07:24
    mapper.java和mapper.xml文件在不同的文件夹下
  • 从dao曾跳转到mapper.xml文件的是非常不方便的,但是可以通过此插件来完成快速跳转 以下图解说明安装操作:
  • 这篇博客我们讲讲mapper.java和mapper.xml是如何映射起来的。 程序中我们只有mapper.java接口,没有mapper实现类,那么是如何调用方法的呢? mybatis里所有mapper接口的实现类都可以看做是mapperProxy,mapper代理...
  • Mapper.xml 返回值详解

    千次阅读 2018-10-12 20:54:02
    Mapper.xml 返回值详解: &lt;?xml version="1.0" encoding="UTF-8" ?&gt; &lt;!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 297,801
精华内容 119,120
关键字:

mapper.xml