Java自学之mybatis:使用注解方式实现CURD

学习目的:在使用配置文件实现CURD的基础上,学会使用注解方式实现CURD。

Part 1

新建一个Mapper,在相应的增删改查的方法上添加相应的注释以及SQL语句。与普通方法相比,就是讲普通方法中的SQL语句移到了这个Mapper中。

package cn.vaefun.mapper;

import cn.vaefun.pojo.Category;
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 CategoryMapper {
    @Insert(" insert into category_ ( name ) values (#{name}) ")
    public int add(Category category);
    @Delete("delete from category_ where id=#{id}")
    public void delete(int id);
    @Select("select * from category_ where id= #{id} ")
    public Category get(int id);
    @Update("update category_ set name=#{name} where id=#{id}")
    public int update(Category category);
    @Select(" select * from category_ ")
    public List<Category> list();
}

Part 2

配置mybatis-config.xml,新增对CategoryMapper的映射。

<?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>
    <typeAliases>
        <package name="cn.vaefun.pojo"/>
        <!--    扫描该包下的类
            使得在后续配置文件pojo.xml中使用resultType的时候,可以直接使用Category,
            而不必写全cn.vaefun.pojo.Category-->
    </typeAliases>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/vaefun_mybatis?characterEncoding=UTF-8"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="cn/vaefun/pojo/pojo.xml"/>
        <mapper resource="cn/vaefun/pojo/Product.xml"/>
        <mapper resource="cn/vaefun/pojo/Order.xml"/>
        <mapper resource="cn/vaefun/pojo/OrderItem.xml"/>
        <mapper class="cn.vaefun.mapper.CategoryMapper"/>

    </mappers>
</configuration>

Part 3

测试代码块(下面主类的后四个方法),需要注意的是要先调用CategoryMapper mapper = session.getMapper(CategoryMapper.class);,通过类名获取到mapper:

package cn.vaefun.test;

import cn.vaefun.mapper.CategoryMapper;
import cn.vaefun.pojo.Category;
import cn.vaefun.pojo.Order;
import cn.vaefun.pojo.OrderItem;
import cn.vaefun.pojo.Product;
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 java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class TestMybatis {
    public static void main(String[] args) throws IOException {
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        SqlSession session=sqlSessionFactory.openSession();
        CategoryMapper mapper = session.getMapper(CategoryMapper.class);
        //insertCategory(session);
        //deleteCategory(session);
        //getCategory(session);
        //updateCategory(session);
        //listAll(session);

        //listCategoryByName(session);
        //listCategoryByIdAndName(session);

        //listCategory(session);
        //listProductNTo1(session);
        //addOrederItem(session);
        //deleteOrderItem(session);
        //listOrder(session);
        //updateProduct(session);
        //listAllProduct(session);
        //listProductByName(session);

        //addCategory(mapper);
        //deleteCategory(mapper);
        updateCategory(mapper);
        session.commit();
        session.close();


    }

    /**
     * 显示所有
     * @param session
     */
    public static void listAll(SqlSession session){
        List<Category> cs=session.selectList("listCategory2");
        for (Category c : cs) {
            System.out.println(c.getId()+"\t"+c.getName());
        }

//        List<Product> products=session.selectList("listProduct");
//        for (Product p : products) {
//            System.out.println(p.getId());
//            System.out.println(p.getName());
//            System.out.println(p.getPrice());
//        }
    }

    /**
     * 添加
     * @param session
     */
    public static void insertCategory(SqlSession session){
        Category c = new Category();
        c.setName("这是insert的Category");
        c.setId(5);
        session.insert("addCategory",c);
    }

    /**
     * 删除
     * @param session
     */
    public static void deleteCategory(SqlSession session){
        Category c = new Category();
        c.setId(5);
        session.delete("deleteCategory",c);
    }

    /**
     * 查找
     * @param session
     */
    public static void getCategory(SqlSession session){
        Category c = session.selectOne("getCategory",3);
        System.out.println(c.getName()+c.getId());
    }

    /**
     * 修改
     * @param session
     */
    public static void updateCategory(SqlSession session){
        Category c = session.selectOne("getCategory",4);
        c.setName("修改过的Category");
        session.update("updateCategory",c);

    }

    /**
     * 模糊查找:%cat%
     * @param session
     */
    public static void listCategoryByName(SqlSession session){
        List<Category> categoryList = session.selectList("listCategoryByName","cat");
        for (Category c :
                categoryList) {
            System.out.println(c.getName());
        }
    }

    /**
     * 多条件查询
     * @param session
     */
    public static void listCategoryByIdAndName(SqlSession session){
        Map map = new HashMap();
        map.put("id",1);
        map.put("name","cat");
        List<Category> categoryList = session.selectList("listCategoryByIdAndName",map);
        for (Category c :
                categoryList) {
            System.out.println(c.getId()+"\t"+c.getName());
        }
    }

    /**
     * 一对多
     */
    public static void listCategory(SqlSession session){
        List<Category> cs = session.selectList("listCategoryP");
        for (Category c : cs) {
            System.out.println(c);
            List<Product> ps = c.getProducts();
            for (Product p : ps) {
                System.out.println("\t"+p);
            }
        }
    }

    /**
     * 多对一查询
     * @param session
     */
    public static void listProductNTo1(SqlSession session){
        List<Product> productList = session.selectList("listProductNTo1");
        for (Product p :
                productList) {
            System.out.println(p+"对应的分类是\t"+p.getCategory());
        }
    }

    /**
     * 多对多查询
     * @param session
     */
    public static void listOrder(SqlSession session){
        List<Order> orders = session.selectList("listOrder");
        for (Order order : orders) {
            System.out.println(order.getCode());
            List<OrderItem> orderItems = order.getOrderItems();
            for (OrderItem orderItem : orderItems) {
                System.out.format("\t%s\t%f\t%d%n",orderItem.getProduct().getName(),
                        orderItem.getProduct().getPrice(),orderItem.getNumber());
            }
        }
    }

    /**
     * 添加一个OrderItem
     * @param session
     */
    public static void addOrederItem(SqlSession session){
        Order order = session.selectOne("getOrder",1);
        Product product = session.selectOne("getProduct",6);
        OrderItem orderItem = new OrderItem();
        orderItem.setProduct(product);
        orderItem.setOrder(order);
        orderItem.setNumber(109);
        session.insert("addOrderItem",orderItem);
    }

    /**
     * 删除OrderItem
     * @param session
     */
    public static void deleteOrderItem(SqlSession session){
        Order order = session.selectOne("getOrder",1);
        Product product = session.selectOne("getProduct",6);
        OrderItem orderItem = new OrderItem();
        orderItem.setOrder(order);
        orderItem.setProduct(product);
        session.delete("deleteOrderItem",orderItem);
    }

    /**
     * 查询所有的Product
     * @param session
     */
    public static void listAllProduct(SqlSession session){
        List<Product> products = session.selectList("listAllProduct");
        System.out.println("查询所有的");
        for (Product p :
                products) {
            System.out.println(p);
        }
    }

    /**
     * 模糊查找
     * @param session
     */
    public static void listProductByName(SqlSession session){
        Map<String,Object> map = new HashMap<>();
        map.put("name","a");
        map.put("price",80);
        List<Product> products = session.selectList("listAllProduct",map);
        System.out.println("模糊查找");
        for (Product p :
                products) {
            System.out.println(p);
        }
    }
    /**
     * 更新商品
     * @param session
     */
    public static void updateProduct(SqlSession session){
        Product product = session.selectOne("getProduct",3);
        //System.out.println(product);
        product.setName("product d");
        product.setPrice((float) 99.99);
        //System.out.println(product);
        session.update("updateProduct",product);
    }

    /**
     * 添加一个Category
     * @param mapper
     */
    private static void addCategory(CategoryMapper mapper){
        Category category = new Category();
        category.setName("新增的Category");
        mapper.add(category);
        listCategory(mapper);

    }

    /**
     * 删除一个Category
     * @param mapper
     */
    private static void deleteCategory(CategoryMapper mapper){
        mapper.delete(4);
        listCategory(mapper);
    }

    /**
     * 修改category
     * @param mapper
     */
    private static void updateCategory(CategoryMapper mapper){
        Category category = mapper.get(3);
        category.setName("修改过的Category");
        mapper.update(category);
        listCategory(mapper);
    }

    /**
     * 显示所有的Category
     * @param mapper
     */
    private static void listCategory(CategoryMapper mapper){
        List<Category> categoryList = mapper.list();
        for (Category c :
                categoryList) {
            System.out.println(c.getId()+"\t"+c.getName());
        }
    }
}

测试结果:

v2-2dac773f621c41f34df096269205496e_b.jpg

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值