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);
}
}