Mybatis注解方式

Mybatis注解方式

1、简单配置

配置mapper所在包(配置到mapper所在包)

<?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">
<configuration>

    <properties resource="jdbc.properties"/>
    <!--    定义别名-->
    <typeAliases>
        <typeAlias type="com.domain.User" alias="user"/>
    </typeAliases>
    <environments default="dev">

        <environment id="dev">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>

    <!--    使用注解方式配置映射文件,注意配置到mapper包-->
    <mappers>
        <package name="com.mapper"/>
    </mappers>
    <!--    xml配置方式-->
    <!--    <mappers>-->
    <!--        <mapper resource="com/mapper/UserMapper.xml"/>-->
    <!--    </mappers>-->
</configuration>

注解@Insert、@Delete…

package com.mapper;

import com.domain.User;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import java.util.List;

public interface UserMapper {
    @Insert("insert into sys_user values (#{id}, #{username}, #{email}, #{password}, #{phoneNum})")
    void addUser(User user);

    @Delete(" delete from sys_user where id = #{id}")
    void deleteUserById(long id);

    @Update("update sys_user u set " +
            "u.username=#{username}, u.password=#{password}, u.email=#{email}," +
            " u.phoneNum=#{phoneNum}where u.id=#{id}")
    void updateUser(User user);

    @Select("select * from sys_user u where u.id=#{id}")
    User findUserById(long id);

    @Select("select * from sys_user")
    List<User> findAll();
}

2、注解方式多表查询,一对一

方法一:

  • 使用@Results注解代替resultMap标签
  • 使用@Result注解代替result标签
  • 其他实体可使用user.username方式访问配置
package com.mapper;

import com.domain.Order;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;

import java.util.List;

public interface OrderMapper {

    @Select("SELECT *,o.id oid FROM sys_order o LEFT JOIN sys_user u ON(o.uid = u.id)")
    @Results({
            @Result(column = "oid", property = "id"),
            @Result(column = "orderTime", property = "orderTime"),
            @Result(column = "total", property = "total"),
            @Result(column = "uid", property = "user.id"),
            @Result(column = "username", property = "user.username"),
            @Result(column = "password", property = "user.password"),
            @Result(column = "email", property = "user.email"),
            @Result(column = "phoneNum", property = "user.phoneNum")
    })
    List<Order> findAll();
}

方法二:

  • one = @One指定一对一同时调用查询方法
  • column 指定根据查询列名
  • property 封装属性名
  • javaType 封装类型
    // 查询配置封装方法二
    @Select("SELECT *,o.id oid FROM sys_order o LEFT JOIN sys_user u ON(o.uid = u.id)")
    @Results({
            @Result(column = "oid", property = "id"),
            @Result(column = "orderTime", property = "orderTime"),
            @Result(column = "total", property = "total"),
            @Result(
                    column = "uid", // 封装属性名
                    property = "user", // 根据哪个字段查询表
                    javaType = User.class, // 要封装实体类型
                    // select表示调用查询接口
                    one = @One(select = "com.mapper.UserMapper.findUserById")
            )
    })
    List<Order> findAll2();

2、注解方式多表查询,一对多

与一对一类似,封装进集合,调用其他接口进行查询

    // 一对多查询
    @Select("select * from sys_user")
    @Results({
            @Result(id = true, column = "id", property = "id"),
            @Result(column = "username", property = "username"),
            @Result(column = "password", property = "password"),
            @Result(column = "email", property = "email"),
            @Result(column = "phoneNum", property = "phoneNum"),
            @Result(
                    column = "id",
                    property = "orderList",
                    javaType = List.class,
                    many = @Many(select = "com.mapper.OrderMapper.findOrderByUid")
            )
    })
    List<User> findUserAndOrder();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值