zoukankan      html  css  js  c++  java
  • 八、持久层框架(MyBatis)

     一、基于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>
    View Code

    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());
            }
        }
        
    }
    View Code

    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());
            }
        }
        
    }
    View Code

    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>
    View Code

    测试代码如下:

    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();
        }
        
    }
    View Code

    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();
        }
        
    }
    View Code
  • 相关阅读:
    LeetCode 226. Invert Binary Tree
    LeetCode 221. Maximal Square
    LeetCode 217. Contains Duplicate
    LeetCode 206. Reverse Linked List
    LeetCode 213. House Robber II
    LeetCode 198. House Robber
    LeetCode 188. Best Time to Buy and Sell Stock IV (stock problem)
    LeetCode 171. Excel Sheet Column Number
    LeetCode 169. Majority Element
    运维工程师常见面试题
  • 原文地址:https://www.cnblogs.com/drq1/p/8532942.html
Copyright © 2011-2022 走看看