MyBatis--Xml 基本使用

1.目录结构

在这里插入图片描述

2.导入依赖

<properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.9.RELEASE</version>
        <relativePath/>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.45</version>
        </dependency>

        <!--mybatis-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.2.1</version>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.22</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

3.配置文件 yaml

server:
  port: 18082
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf8
    username: root
    password: 123456
    driver-class-name: com.mysql.jdbc.Driver
  application:
    name: xml-service
# mapper的接口和对应的配置文件
mybatis:
  mapper-locations: classpath:mapper/*.xml

4.配置 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>
    
</mapper>

5.基本使用

5.1 查询详情

Mapper:

@Mapper
public interface UserMapper {
    /**
     * 根据ID查询用户
     * @param id
     * @return
     */
    User queryUserById(Long id);
}

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">
<!-- 这个文件,用来定义要用到的SQL信息
约定:
1)每个DAO接口对应一个Mapper.xml文件
2)mapper.xml的namespace必须是接口的全名称
3)mapper.xml中的每个statement的id必须是接口中对应的方法名
4)statement中定义的resultType必须和接口中对应方法的返回值一致

namespace:名称空间,当前xml配置文件与哪个类配对 -->
<mapper namespace="com.czxy.dao.UserMapper">
    <!-- 这里定义一条SQL语句,其实就是一个statement
            select:代表是一条查询的SQL,我们还可以定义:update\insert\delete
                id: 这个statement的唯一标示,与方法名保持一致,不能重复
                parameterType:SQL参数类型,这里要写类的全名,可以省略,mybatis可以自动识别
                resultType:返回结果类型,这里写类的全名
                resultMap:结果集映射,这个和resultType 只能存在1个,应对复杂的结果集。后面详细讲!
         -->
    <select id="queryUserById" parameterType="java.lang.Long" resultType="com.czxy.domain.User">
        <!-- 这里定义真正的SQL语句,#{} 代表占位符,当SQL被编译时,会变成?,然后接收真正的参数 -->
        SELECT *FROM tb_user WHERE id = #{id}
    </select>

   
</mapper>

5.2 查询所有
Mapper:

@Mapper
public interface UserMapper {
    /**
     * 查询全部用户
     * @return
     */
    List<User> queryAll();
   
}

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 namespace="com.czxy.dao.UserMapper">
    

    <!-- 查询全部用户:
        resultType:返回的结果虽然是一个List,这里依然写List中的元素类型,Mybatis会自动判断返回值个数并且做封装
     -->
    <select id="queryAll" resultType="com.czxy.domain.User">
		SELECT *FROM tb_user
	</select>

</mapper>

5.3 添加数据

@Mapper
public interface UserMapper {
    /**
     * 添加用户
     * @param user
     */
    void insertUser(User user);
}

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 namespace="com.czxy.dao.UserMapper">
   

    <!-- 添加用户信息:
         开启id回填:
         useGeneratedKeys:自增主键的回填功能
         keyProperty:主键对应的java对象字段名
         keyColumn:主键在数据库中的列名
    -->
    <insert id="insertUser" parameterType="com.czxy.domain.User"
        useGeneratedKeys="true" keyProperty="id" keyColumn="id"
    >
        <!-- 注意,这里用#{字段名},mybatis会自动根据字段名,去User参数中找字段值,设置到Sql中 -->
        INSERT INTO tb_user (
        id,
        user_name,
        password,
        name
        )
        VALUES
        (
        NULL,
        #{userName},
        #{password},
        #{name}
        );
    </insert>
 
</mapper>

5.4 修改数据

Mapper:

@Mapper
public interface UserMapper {
    /**
     * 修改用户
     * @param user
     */
    void updateUser(User user);
  
}

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 namespace="com.czxy.dao.UserMapper">
<!-- 修改用户 -->
    <update id="updateUser" parameterType="com.czxy.domain.User">
		UPDATE tb_user
		SET
			user_name = #{userName},
			password = #{password},
			name = #{name},
			age = #{age},
			sex = #{sex},
			birthday = #{birthday},
			updated = NOW()
		WHERE
			id = #{id};
	</update>
</mapper>

5.5 删除数据

Mapper:

@Mapper
public interface UserMapper {
 /**
     * 根据ID删除用户
     * @param id
     */
    void deleteUserById(Long id);
}

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 namespace="com.czxy.dao.UserMapper">
 <!-- 删除用户 -->
    <delete id="deleteUserById" parameterType="java.lang.Long">
		DELETE FROM tb_user WHERE id = #{id}
	</delete>
</mapper>

6.高级使用

6.1 多个参数

如果是多个参数,需要@Param注解来给不同的参数命名,命名后可以在Xml中的${}中直接调用。
Mapper:

@Mapper
public interface UserMapper {
	/**
		模拟用户登录
	*/
    List<User> login(@Param("userName") String userName,
                     @Param("password") String password);
}

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 namespace="com.czxy.dao.UserMapper">
<!--    多个参数查询-->
    <select id="login" parameterType="java.lang.String" resultType="com.czxy.domain.User">
        select * from tb_user where user_name = '${userName}' and password = '${password}'
    </select>
</mapper>

6.2 ResultMap结果集映射

Resultmap解决了列名和字段不一样的问题

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 namespace="com.czxy.mapper.StudentMapper">
   
<!--    
	配置每一个属性和列名的对应关系,解决名称不一致的问题
-->
    <resultMap id="two2" type="com.czxy.domain.Sc">
    	<id column="id" property="id"></id>
        <result column="sstudent_id" property="sid"></result>
        <result column="sc_id" property="cid"></result>
    </resultMap>
<!-- 
    这里不使用resultType 使用resultMap 两者只能存在一个,通过resultMap 的id指定resultMap 
-->
    <select id="two" resultMap="two2">
        select * from sc 
    </select>
</mapper>

6.3 SQL片段

我们经常会把SQL中比较通用的部分,提前出来,变成一个SQL片段,然后在各个SQL中都可以调用,简化书写;

例如,查询语句中,一般不会使用:Select * ,而是把列名一一列出,但是表的列名往往比较多,这时就可以提取出来;
Xml:

<!-- 
	SQL片段
-->
	<sql id="userColumns">
        id,user_name,password,name,age,sex,birthday,note,created,updated
    </sql>
<!-- 
	下面使用SQL片段
-->
	<select id="findById" parameterType="java.lang.Long" resultMap="userResultMap">
        select <include refid="userColumns"></include> from tb_user where id = #{id}
    </select>
### 回答1: Mybatis-plus的xml写法是指在Mybatis-plus框架中使用xml文件来编写SQL语句。具体写法如下: 1. 创建一个Mapper接口,继承BaseMapper接口。 2. 在Mapper接口中定义需要执行的SQL语句,使用@Select、@Insert、@Update、@Delete等注解来标识。 3. 在resources目录下创建一个与Mapper接口同名的xml文件,用于编写SQL语句。 4. 在xml文件使用<select>、<insert>、<update>、<delete>等标签来编写SQL语句。 5. 在xml文件使用${}或#{}来引用Mapper接口中定义的参数。 6. 在Mybatis-plus的配置文件中配置Mapper接口的扫描路径和xml文件的扫描路径。 7. 在代码中使用@Autowired注解来注入Mapper接口,即可使用xml文件中编写的SQL语句。 以上就是Mybatis-plus的xml写法的基本流程。 ### 回答2: Mybatis-Plus是基于Mybatis的加强工具,提供了很多方便开发的功能,其中就包括了XML方式的CRUD,以下是XML的写法: 1. 映射文件位置:在Mybatis-Plus中,映射文件的位置需要遵循Mybatis的规则,即放在classpath下的某个包中。 2. 命名规范:Mybatis-Plus的命名规范可以参照Mybatis的规范,在命名上加上模块名的前缀,例如user.xml,order.xml等。 3. SQL语句:Mybatis-Plus中可以像Mybatis一样使用XML编写SQL语句,只不过在SQL语句的编写上会更加简洁,例如: ```xml <!--查询用户列表--> <select id="selectList" resultType="java.util.List"> select * from user </select> ``` 4. 参数传递:Mybatis-Plus的参数传递可以采用占位符的方式,例如: ```xml <!--查询用户信息--> <select id="selectById" parameterType="java.lang.Long" resultType="com.example.demo.entity.User"> select * from user where id = #{id} </select> ``` 5. 分页查询:Mybatis-Plus中支持分页查询,只需要在SQL语句中加上limit和offset即可,例如: ```xml <!--分页查询用户列表--> <select id="selectPage" parameterType="com.baomidou.mybatisplus.extension.plugins.pagination.Page" resultType="java.util.List"> select * from user limit #{page.offset}, #{page.size} </select> ``` 6. 注解方式:除了XML方式,Mybatis-Plus还支持注解方式,例如: ```java @Select("select * from user where id = #{id}") User selectById(Long id); ``` 总的来说,Mybatis-Plus的XML写法和Mybatis基本相似,但是在一些简单的查询上能够更加简洁明了。同时,Mybatis-Plus也提供了其他方便开发的功能,例如代码生成器、分页插件等,使得开发变得更加高效。 ### 回答3: Mybatis-Plus是基于Mybatis的增强工具,为开发者提供了更加便捷的CRUD操作。其中Mybatis-Plus对于XML文件使用也进行了优化,主要表现在以下方面。 XML的写法: Mybatis-Plus的XML与传统的MybatisXML有相似之处,但也有不同点,下面是一个简单的例子: ``` <!--mybatis-plus的XML配置--> <resultMap type="com.baomidou.mybatisplus.samples.quickstart.entity.User" id="userMap"> <result column="id" property="id" jdbcType="BIGINT"/> <result column="name" property="name" jdbcType="VARCHAR"/> <result column="age" property="age" jdbcType="INTEGER"/> <result column="email" property="email" jdbcType="VARCHAR"/> <result column="status" property="status" jdbcType="INTEGER"/> <result column="create_time" property="createTime" jdbcType="TIMESTAMP"/> <result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/> </resultMap> <select id="selectUser" resultMap="userMap" parameterType="com.baomidou.mybatisplus.samples.quickstart.entity.User"> SELECT * FROM USER WHERE ID=#{id} </select> ``` 以上代码部分展示了Mybatis-Plus的XML配置方式。其中,resultMap的配置与Mybatis基本相同,但是在select标签上有所不同的地方,其中: 1. id:与Mybatis相同,表示该sql语句的id,调用时需要根据该id进行调用。 2. parameterType:表示该sql语句的参数类型,这里使用了实体类User。 3. resultMap:表示该sql语句查询结果的映射,指定了resultMap的id值。 此外,Mybatis-Plus还支持一些其他的写法,如Wrapper和Lambda写法等,可以更方便的进行复杂的查询操作。同时,Mybatis-Plus也提供了一些注解方式的写法,这个会在注解的使用中进行介绍。 总的来说,Mybatis-Plus的XML写法基本Mybatis相同,同时在使用上也做出了优化,提高了开发的效率,同时也兼顾了Mybatis的灵活性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值