学习目的:在使用配置文件实现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 configurationPUBLIC "-//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%st%ft%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());}}
}

测试结果:

mybatis 大量insert 出现sql io 异常_Java自学之mybatis:使用注解方式实现CURD相关推荐

  1. mybatis 一对多查询_Java自学之mybatis:使用注解方式多对一查询

    学习目的:学习使用注解方式实现多对一查询,查询出所有的Product,通过product_中的cid查询到所属的Category. Part 1 mapper CategoryMapper packa ...

  2. mybatis like模糊查询_Java自学之mybatis:模糊查询和多条件查询

    学习目的 使用mybatis进行模糊查询:查找category_表中包含cat的记录. 使用mybatis进行多条件查询:查找category_表中id>1,包含cat的记录. Part 1 模 ...

  3. Spring Boot MyBatis Postgres 实现对数据表增删改查操作(采用注解方式)

    1.创建Java实体类 package com.example.server;public class SceneService {private String servicename;private ...

  4. 【深入浅出MyBatis系列八】SQL自动生成插件

    为什么80%的码农都做不了架构师?>>>    #0 系列目录# 深入浅出MyBatis系列 [深入浅出MyBatis系列一]MyBatis入门 [深入浅出MyBatis系列二]配置 ...

  5. Mybatis入门之动态sql

    Mybatis入门之动态sql 通过mybatis提供的各种标签方法实现动态拼接sql. 1.if.where.sql.include标签(条件.sql片段) <sql id="sel ...

  6. java sql异常_java.sql.SQLException: Io 异常: Got minus one from a

    java.sql.SQLException: Io 异常: Got minus one from a read call at oracle.jdbc.driver.DatabaseError.thr ...

  7. Spring+Mybatis+BoneCP向数据库发出请求时出现:Io 异常: Socket read timed out

    小弟使用的是bonecp管理数据库连接,数据库采用oracle.在运行时,如果使用了3个以上的session连接,就会出现如下错误. Io 异常: Socket read timed out HTTP ...

  8. java.sql.SQLException: Io 异常: Got minus one from a read call

    http://quicker.iteye.com/blog/1740690 Tomcat服务器下的应用连接Oracle时报错,出现以下异常: java.sql.SQLException: Io 异常: ...

  9. nslang oracle_解决ojdbc14连接oracle报“java.sql.SQLException: Io 异常: Size Data Unit (SDU) mismatch”异常问题...

    一.前言 通过ojdbc14.jar连接oracle数据库,应用运行期间报出"java.sql.SQLException: Io 异常: Size Data Unit (SDU) misma ...

最新文章

  1. spoj16935 Straight Line Spiral Pattern (Act 3)
  2. 再次发布SQL Prompt 3.8的新的patch,解决了不能格式化T-SQL的问题
  3. 数据中心背后的地缘政治学
  4. Codeforces 1025F Disjoint Triangles (计算几何)
  5. 如何使用 autofs 挂载 NFS 共享
  6. 【IOS】集成zxing(二维码扫描)
  7. Java高并发编程详解系列-深入理解Thread构造
  8. verp中的redundantRobot的逆运动学注意事项
  9. java多线程基础_java线程基础
  10. java字符串替换 数组,Java工具类-拆分字符串组装数组,替换字符
  11. 关于浏览器预检(OPTIONS)请求
  12. .JQuery中的Ajax
  13. QGIS展示三维DEM数据
  14. (官方win10PE使用)微软官方win10PE取出文件操作教学
  15. 反函数抽样(包括离散的)
  16. org.jboss.netty.internal.LoggerConfigurator.DESCRIBED is already registered
  17. 白帽子挖洞第II篇作业--xray+fofa主动扫描
  18. Mini主机安装Ubuntu18.04记录
  19. NFT+DeFi =NFTFI
  20. Dialogs 介绍

热门文章

  1. ORACLE1.8-序列
  2. elasticsearch数据备份还原
  3. WPF中ListBox的样式设置
  4. Hyper-V应用指南之3-理解并配置Hyper-V虚拟网络[转]
  5. 爱情九十三课,指尖情话
  6. SQl 2000和SQL 2005之间的一些语法区别
  7. [导入]屏蔽相应键盘按钮
  8. 数据结构开发(5):线性表的链式存储结构
  9. Oracle时间函数(转)
  10. PowerDesigner中的CDM设计的外键作主键的问题