赞
踩
先学xml,再学注解
@Insert:实现新增
@Update:实现更新
@Delete:实现删除
@Select:实现查询
@Result:实现结果集封装
@Results:可以与@Result-一起使用,封装多个结果集(比Result范围大)
@One:实现一对结果集封装
@Many:实现一对多结果集封装(一对多可能部分要手动映射)
只是把xml的关系,用注解的方式配置到接口的方法上
usermapper
- @Insert("insert into user values(#{id},#{username},#{password},#{birthday})")
- public void save(User user);
-
- @Update("update user set username=#{username},password=#{password} where id=#{id}")
- public void update(User user);
-
- @Delete("delete from user where id=#{id}")
- public void delete(int id);
-
- @Select("select * from user where id=#{id}")
- public User findById(int id);
-
- @Select("select * from user")
- public List<User> findAll();
sqlMapConfig.xml
- <!--加载映射关系-->
- <mappers>
- <!--指定接口所在的包-->
- <package name="com.itheima.mapper"></package>
- </mappers>
demo:一对一查询:查询订单的同时查询与该订单相关的用户
ordermapper.java
- package com.itheima.mapper;
-
- import com.itheima.domain.Order;
- import com.itheima.domain.User;
- 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 where uid=#{uid}")
- public List<Order> findByUid(int uid);
-
-
-
- @Select("select * from orders")
- //用@Results封装映射参数,一对一查询
- //分表查询,不用加user.id了
- @Results({
- @Result(column = "id",property = "id"),
- @Result(column = "ordertime",property = "ordertime"),
- @Result(column = "total",property = "total"),
- @Result(
- property = "user", //要封装的属性名称
- column = "uid", //根据哪个字段去查询user表的数据
- javaType = User.class, //要封装的实体类型
- //select属性 代表查询哪个接口的方法获得数据,引用要查的那个表的接口方法进行查询
- one = @One(select = "com.itheima.mapper.UserMapper.findById")
- )
- })
- public List<Order> findAll();
-
-
-
- /*@Select("select *,o.id oid from orders o,user u where 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")
- })
- public List<Order> findAll();*/
-
- }

mybatistest2.java
- package com.itheima.test;
-
- import com.itheima.domain.Order;
- import com.itheima.domain.User;
- import com.itheima.mapper.OrderMapper;
- import com.itheima.mapper.UserMapper;
- 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 MyBatisTest2 {
-
- private OrderMapper mapper;
-
- @Before
- public void before() throws IOException {
- InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
- SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
- SqlSession sqlSession = sqlSessionFactory.openSession(true);
- mapper = sqlSession.getMapper(OrderMapper.class);
- }
-
-
- @Test
- public void testSave(){
- List<Order> all = mapper.findAll();
- for (Order order : all) {
- System.out.println(order);
- }
- }
-
-
-
- }

sqlMapConfig.xml
- <?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标签加载外部properties文件-->
- <properties resource="jdbc.properties"></properties>
-
- <!--自定义别名-->
- <typeAliases>
- <typeAlias type="com.itheima.domain.User" alias="user"></typeAlias>
- </typeAliases>
-
-
- <!--数据源环境-->
- <environments default="developement">
- <environment id="developement">
- <transactionManager type="JDBC"></transactionManager>
- <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>
-
-
- <!--加载映射关系-->
- <mappers>
- <!--指定接口所在的包-->
- <package name="com.itheima.mapper"></package>
- </mappers>
-
-
- </configuration>

一对多的注解开发
- @Select("select * from user")
- @Results({
- @Result(id=true ,column = "id",property = "id"),
- @Result(column = "username",property = "username"),
- @Result(column = "password",property = "password"),
- @Result(
- property = "orderList",
- column = "id",
- javaType = List.class,
- many = @Many(select = "com.itheima.mapper.OrderMapper.findByUid")
- )
- })
- public List<User> findUserAndOrderAll();
多对多查询的需求:查询用户同时查询出该用户的所有角色
(一对多查询与多对多查询 ,差不多)
- @Select("SELECT * FROM USER")
- @Results({
- @Result(id = true,column = "id",property = "id"),
- @Result(column = "username",property = "username"),
- @Result(column = "password",property = "password"),
- @Result(
- property = "roleList",
- column = "id",//根据谁去查询
- javaType = List.class,
- many = @Many(select = "com.itheima.mapper.RoleMapper.findByUid")//调用了rolemapper中的sql语句
- )
- })
- public List<User> findUserAndRoleAll();
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。