Mybatis的注解开发

@Insert:实现新增
@Update:实现更新
@Delete:实现删除
@Select:实现查询
@Result:实现结果集封装
@Results:可以与@Result 一起使用,封装多个结果集
@One:实现一对一结果集封装
@Many:实现一对多结果集封装

属性:column指数据库的列名,property指实体属性名称,@one和@many里select=某个方法的全类名


需要配置映射关系
<!--配置映射关系-->
    <mappers>
        <package name="com.code_g.dao"/>
    </mappers>

UserMapper

package com.code_g.dao;

import com.code_g.domain.User;
import org.apache.ibatis.annotations.*;

import java.util.List;

public interface UserMapper {

    @Insert("insert into user values(#{id},#{username},#{password})")
    void save(User user);

    @Update("update user set username = #{username},password = #{password} where id = #{id}")
    void update(User user);

    @Delete("delete from user where id = #{id}")
    void delete(int id);

    @Select("select * from user where id = #{id}")
    User findById(int id);

    @Select("select * from user")
    List<User> findByAll();

    @Select("select * from user")
    @Results({
            @Result(id = true, column = "id", property = "id"),
            @Result(column = "username", property = "username"),
            @Result(column = "password", property = "password"),
            @Result(
                    property = "findAllOrders",
                    javaType = List.class,
                    column = "id",
                    many = @Many(select = "com.code_g.dao.OrderMapper.findById")
            )
    })
    List<User> findAllOrders();
}

OrderMapper

package com.code_g.dao;

import com.code_g.domain.Order;
import com.code_g.domain.User;
import com.sun.org.apache.xpath.internal.operations.Or;
import org.apache.ibatis.annotations.One;
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 * from orders")
    @Results({
            @Result(column = "id", 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(
                    property = "user",
                    column = "uid",
                    javaType = User.class,
                    one = @One(select = "com.code_g.dao.UserMapper.findById")
            )
    })
    List<Order> findAll();

    @Select("select * from orders where uid = #{id}")
    List<Order> findById(int id);
}

测试方法

package com.code_g.test;

import com.code_g.dao.UserMapper;
import com.code_g.domain.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Before;
import org.junit.Test;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

public class MybatisTest {
    private UserMapper userMapper;

    @Before
    public void before() throws IOException {
        InputStream resource = Resources.getResourceAsStream("SqlMapConfig.xml");
        SqlSessionFactory build = new SqlSessionFactoryBuilder().build(resource);
        SqlSession sqlSession = build.openSession(true);
        userMapper = sqlSession.getMapper(UserMapper.class);
    }

    @Test
    public void test1(){
        List<User> users = userMapper.findByAll();
        System.out.println(users);
    }

    @Test
    public void test2(){
        User user = userMapper.findById(1);
        System.out.println(user);
    }

    @Test
    public void test3(){
        User user = new User();
        user.setId(4);
        user.setUsername("zhaoliu");
        user.setPassword("123");
        userMapper.save(user);
    }

    @Test
    public void test4(){
        User user = new User();
        user.setId(4);
        user.setUsername("zhaoliu");
        user.setPassword("456");
        userMapper.update(user);
    }

    @Test
    public void test5(){
        userMapper.delete(4);
    }


    @Test
    public void test6(){
        List<User> allOrders = userMapper.findAllOrders();
        System.out.println(allOrders);
    }
}

posted @ 2021-05-28 21:30  code-G  阅读(61)  评论(0编辑  收藏  举报