一、基于MyBatis的CRUD

1、首先是配置文件Category.xml修改

  一次性修改配置文件Category.xml,提供CRUD对应的sql语句。

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.rog//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.demo.pojo">
<insert id="addCategory" parameter Type="Category">
insert into category_table (name) values (#{name})
</insert>
<delete id="deleteCategory" parameter Type="Category">
delete from category_table where id=#{id}
</delete>
<select id="getCategory" parameter Type="Category">
select * from category_table where id=#{id}
</select>
<update id="updateCategory" parameter Type="Category">
update category_table set name=#{name} where id=#{id}
</update>
<select id="listCategory" resultType="Category">
select * from category_table
</select>
</mapper>

2、增加(insert)

通过session.insert()方法调用addCategory对应的SQL语句

<insert id="addCategory" parameter Type="Category">
insert into category_table (name) values (#{name})
</insert>
Category c=new Category();
c.setName("插入一条Category数据");
session.insert("addCategory",c);

3、删除(delete)

通过session.delete()方法调用deleteCategory对应的SQL语句

<delete id="deleteCategory" parameterType="Category">
delete from category_table where id=#{id}
</delete>
package com.demo.java;

import java.io.IOException;
import java.io.InputStream;
import java.uitl.List; 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 com.demo.pojo.Category; 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(); Category c=new Category();
c.setId(6);
session.delete("deleteCategory",c); listAll(session); session.commit();
session.close();
} private static void listAll(SqlSession session){
List<Category> list=session.selectList("listCategory");
for(Category c:cs){
System.out.println(c.getName());
}
} }

4、修改(update)

通过session.update()方法调用updateCategory对应的SQL语句

<update id="updateCategory" parameterType="Category">
update category_table set name=#{name} where id=#{id}
</update>
package com.demo.java;

import java.io.IOException;
import java.io.InputStream;
import java.uitl.List; 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 com.demo.pojo.Category; 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(); Category c=session.selectOne("getCategory",3);
c.setName("修改了Category名称");
session.update("updateCategory",c); listAll(session); session.commit();
session.close();
} private static void listAll(SqlSession session){
List<Category> list=session.selectList("listCategory");
for(Category c:cs){
System.out.println(c.getName());
}
} }

5、模糊查询(like)

  修改Category.xml,提供listCategoryByName查询语句

mysql的写法是如下:利用concat('%',#{0},'%')

<select id="listCategoryByName" parmaeterType="string" resultType="Category">
select * from category_table where name like concat('%',#{0},'%')
</select>

oracle的写法如下:'%'||#{0}||'%'

select * from category_table where name like '%'||#{0}||'%'
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.how2java.pojo">
<select id="listCategoryByName" parameterType="string" resultType="Category">
select * from category_ where name like concat('%',#{0},'%')
</select>
</mapper>

测试代码如下:

package com.demo.java;

import java.io.IOException;
import java.io.InputStream;
import java.uitl.List; 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 com.demo.pojo.Category; 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(); List<Category> cs=session.selectList("listCategoryByName","hello");
for(Category c:cs){
system.out.println(c.getName());
} session.commit();
session.close();
} }

6、多条件查询

同样还是修改Category.xml配置文件

<select id="listCategoryByIdAndName" parameterType="map" resultType="Category">
select * from category_table where id>#{id} and name like concat('%',#{name},'%')
</select>

因为有多个参数,而selectList方法只能结构一个参数对象,所以需要把多个参数放在map里,然后把这个map对象作为参数传递进去

Map<String,Object> params=new HashMap<>():

params.put("id",3);
params.put("name","hello");
List<Category> cs=session.selectList("listCategoryByIdAndName",params);
package com.demo.java;

import java.io.IOException;
import java.io.InputStream;
import java.uitl.List; 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 com.demo.pojo.Category; 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(); Map<String,Object> params=new HashMap<>();
params.put("id",3);
params.put("name","cat");
List<Category> cs=session.selectList("listCategoryByIdAndName",params);
for(Category c:cs){
system.out.println(c.getName());
} session.commit();
session.close();
} }

八、持久层框架(MyBatis)的更多相关文章

  1. 从零搭建springboot服务02-内嵌持久层框架Mybatis

    愿历尽千帆,归来仍是少年 内嵌持久层框架Mybatis 1.所需依赖 <!-- Mysql驱动包 --> <dependency> <groupId>mysql&l ...

  2. Java数据持久层框架 MyBatis之背景知识二

    对于MyBatis的学习而言,最好去MyBatis的官方文档:http://www.mybatis.org/mybatis-3/zh/index.html 对于语言的学习而言,马上上手去编程,多多练习 ...

  3. java持久层框架mybatis如何防止sql注入

    看到一篇很好的文章:http://www.jfox.info/ava-persistence-framework-mybatis-how-to-prevent-sql-injection sql注入大 ...

  4. Java数据持久层框架 MyBatis之背景知识三

    摘录自:http://www.cnblogs.com/lcngu/p/5437281.html 对于MyBatis的学习而言,最好去MyBatis的官方文档:http://www.mybatis.or ...

  5. Java数据持久层框架 MyBatis之API学习一(简介)

    对于MyBatis的学习而言,最好去MyBatis的官方文档:http://www.mybatis.org/mybatis-3/zh/index.html 对于语言的学习而言,马上上手去编程,多多练习 ...

  6. Java数据持久层框架 MyBatis之背景知识一

    对于MyBatis的学习而言,最好去MyBatis的官方文档:http://www.mybatis.org/mybatis-3/zh/index.html 对于语言的学习而言,马上上手去编程,多多练习 ...

  7. 开源顶级持久层框架——mybatis(ibatis)——day02

    mybatis第二天    高级映射 查询缓存 和spring整合          课程复习:         mybatis是什么?         mybatis是一个持久层框架,mybatis ...

  8. Java持久层框架Mybatis入门

    MyBatis是什么 MyBatis是Java的持久层框架,GitHub的star数高达15.8k,是Java技术栈中最热门的ORM框架之一.它支持自定义SQL.存储过程以及高级映射,可以通过XML或 ...

  9. 开源顶级持久层框架——mybatis(ibatis)——day01

    mybatis-day01     1.对原生态jdbc程序中的问题总结         1.1环境             java环境:jdk             eclipse:indigo ...

  10. 整合使用持久层框架mybatis 使用SqlSessionTemplate模板类与使用映射接口 对比

    spring中整合使用mybatis的用法总结 一:在Spring配置Mybatis 第一步:将mybatis-spring类包添加 到项目的类库中 第二步:编写spring和持久层衔接的xml文件, ...

随机推荐

  1. js转义和反转义html

    本文地址: http://www.cnblogs.com/daysme/p/7100553.html 下面的代码网上常用有,但不是想要的. JS实现HTML标签转义及反转义 http://blog.c ...

  2. 使用axios实现上传视频进度条

    这是最终的效果图 先介绍一下axios的使用:中文的axios官方介绍 首先定义一个uploadTest方法,写在vue文件的methods里 该方法有三个参数,分别是参数,和两个回调函数,参数就是我 ...

  3. http协议的状态码解释

    一些常见的状态码为: 200 – 服务器成功返回网页 404 – 请求的网页不存在 503 – 服务器超时 下面提供 HTTP 状态码的完整列表.点击链接可了解详情.您也可以访问 HTTP 状态码上的 ...

  4. Git 常用使用技巧

    1.创建代码仓库 Step 1:先配置下我们的身份吧,这样在提交代码的时候Git就可以知道是谁提交的,命令如下: git config --global user.name "coder-p ...

  5. 一行css解决图片统一大小后的拉伸问题(被冷漠的object-fit)

    一.先来个实战 1. 测试案例 需求: 要求表情库里所有表情包大小都固定 实际效果: 由于图片原始大小都不一样,强行设定大小值会导致拉伸,如果不设定大小则参差不齐.例如: //html <bod ...

  6. c语言关键字的区分

    const int a;//声明一个常整型数 int const a;//声明一个常整型数 const int *a;//声明指向常整型数的指针,整型数不可修改,指针可以修改 int * const ...

  7. Django中ORM系统多表数据操作

    一,多表操作之增删改查 1.在seting.py文件中配置数据库连接信息 2.创建数据库关联关系models.py from django.db import models # Create your ...

  8. Thymeleaf的基本语法总结

    最近用Spring boot开发一些测试平台和工具,用到页面展示的部分, 选择的是thymeleaf模版引擎. 页面开发的7788快结束了,下面来总结下此过程中对thymeleaf的使用总结. 什么是 ...

  9. 记录Python类与继承的一个错误

    今天在学python的类与继承的时候遇到一个错误,原来是自己在ctrl+c  ctrl+v的时候漏了一个括号 class Car(): def __init__(self,make,year,mode ...

  10. 学习笔记50—多重假设检验与Bonferroni校正、FDR校正

    总结起来就三句话: (1)当同一个数据集有n次(n>=2)假设检验时,要做多重假设检验校正 (2)对于Bonferroni校正,是将p-value的cutoff除以n做校正,这样差异基因筛选的p ...