Mybatis上路_02-单表的CRUD

1.查询:


    1)修改BeanPerson.xml

<?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">

<!-- 命名空间 namespace=“接口的全路径” -->
<mapper namespace="cn.cvu.service.IOperationBean">

    <!-- 为了返回list 类型而定义的returnMap。
        type="对应的表单"
        id="自定义的操作,对应接口中的方法"
    -->
    <resultMap type="tb_person" id="resultListPerson">

        <!-- 主键 ,column=“表单列名” property=“JavaBean字段” -->
        <id column="id" property="id" />
        <result column="name" property="name" />
        <result column="country" property="country" />
        <result column="address" property="address" />
    </resultMap>  

    <!-- 返回list 的select 语句
        id=”接口中对应的方法名”
        resultMap=”前面定义好的结果集”
    -->
    <select id="selectPersons" resultMap="resultListPerson">
        <!-- 查询表单tb_person的全部条目 -->
        select * from tb_person
    </select>
</mapper>


    2)修改接口:

package cn.cvu.service;

import java.util.List;
import cn.cvu.domain.BeanPerson;

//接口,定义操作
public interface IOperationBean {

    //查询全部的Person,方法名对应BeanPerson.xml中配置的select节点的id
    public List<BeanPerson> selectPersons();
}


    3)测试:

/**
     * 一次查询全部数据
     * @throws Exception
     */
    @Test
    public void testQueryAll() throws Exception {

        Reader reader = Resources.getResourceAsReader("Configuration.xml");
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
        SqlSession session = sqlSessionFactory.openSession();

        IOperationBean operationBean = session.getMapper(IOperationBean.class);
        //查询全部数据。返回JavaBean=接口.使用ID查询(Integer)
        List<BeanPerson> persons = operationBean.selectPersons();
        for (BeanPerson person:persons){
            System.out.println("ID:" + person.getId());
            System.out.println("姓名:" + person.getName());
            System.out.println("国家:" + person.getCountry());
            System.out.println("地址:" + person.getAddress());
        }
        session.close();
    }

Mybatis上路_02-单表的CRUD


2.添加:


    1)修改接口:

//接口,定义操作
public interface IOperationBean {
    //添加条目
    public void addPerson(BeanPerson person);
}


    2)修改BeanPerson.xml

<?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">

<!-- 命名空间 namespace=“接口的全路径” -->
<mapper namespace="cn.cvu.service.IOperationBean">

    <!--  增加
        ***public void addPerson(BeanPerson person);***
        id              ="IOperationPerson接口中的addPerson方法"
        parameterType   ="addPerson方法的参数类型,全路径"
        useGeneratedKeys="true,表明要MyBatis获取由数据库自动生成的主键"
        keyProperty     ="id,指定把获取到的主键值注入 到BeanPerson的id属性"
    -->

    <!--   
<insert id="addPerson" parameterType="BeanPerson" useGeneratedKeys="true" keyProperty="id">
    -->

    <insert id="addPerson" parameterType="cn.cvu.domain.BeanPerson">
        <!-- insert into 表单(表单中的列名 ) -->
        insert into tb_person(id, name, country, address)

        <!--
            #{id}引用BeanPerson参数的id属性,MyBatis将使用反射读取BeanPerson参数的此属性
            #{name}引用BeanPerson参数的name属性
        -->
        values( #{id}, #{name}, #{country}, #{address} )
    </insert>
</mapper>


    3)测试:

/**
     * 插入一条记录
     * @throws Exception
     */
    @Test
    public void testInsert() throws Exception {
        Reader reader = Resources.getResourceAsReader("Configuration.xml");
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
        SqlSession session = sqlSessionFactory.openSession();
        IOperationBean operationBean = session.getMapper(IOperationBean.class);
        //1.准备数据
        BeanPerson person=new BeanPerson(3, "Eminem", "America", "Ditroit");
        //2.执行插入
        operationBean.addPerson(person);
        //3.提交事务
        session.commit();
        session.close();
    }

 


3.更新:


    1)修改IOperationPerson接口:

//接口,定义操作
public interface IOperationBean {
    //根据id更新条目
    public void updatePerson(BeanPerson person);
}


    2)修改BeanPerson.xml文件: 

<?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">

<!-- 命名空间 namespace=“接口的全路径” -->
<mapper namespace="cn.cvu.service.IOperationBean">

    <!--  更新条目
        id="接口中的对应的方法名"
        parameterTyper="作为参数的JavaBean全路径"
    -->

    <update id="updatePerson" parameterType="cn.cvu.domain.BeanPerson" >
        update tb_person
        <!-- 表单列name=#{JavaBean字段name},这些是被更新的数据 -->
        set name=#{name},country=#{country},address=#{address}
        <!-- 表单列id=#{JavaBean字段id},这个是更新条件 -->
        where id=#{id}
    </update>
</mapper>


    3)测试: 

/**
     * 更新一条记录
     * @throws Exception
     */
    @Test
    public void testUpdateOne() throws Exception {
        Reader reader = Resources.getResourceAsReader("Configuration.xml");
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
        SqlSession session = sqlSessionFactory.openSession();
        IOperationBean operationBean = session.getMapper(IOperationBean.class);
        //1.准备数据(原ID,新name,新country,新address)
        BeanPerson person=new BeanPerson(2, "NewMichael", "America", "New York");
        //2.执行更新
        operationBean.updatePerson(person);
        //3.提交事务
        session.commit();
        session.close();
    }

 


4.删除:

 

    1)修改接口:

package cn.cvu.service;
import java.util.List;
import cn.cvu.domain.BeanPerson;
//接口,定义操作
public interface IOperationBean {
    //根据id更新条目
    public void deletePerson(int id);
}


    2)修改BeanPerson.xml

<?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">

<!-- 命名空间 namespace=“接口的全路径” -->
<mapper namespace="cn.cvu.service.IOperationBean">

    <!--  删除条目
        id="自定义方法名,与接口中方法对应"
        parameterType="SQL语句中的#{id}参数的数据类型"
    -->
    <delete id="deletePerson" parameterType="int">
        delete from tb_person where id=#{id}
    </delete>
</mapper>


    3)测试:

/**
     * 删除一条记录
     * @throws Exception
     */
    @Test
    public void testDeleteOne() throws Exception {
        Reader reader = Resources.getResourceAsReader("Configuration.xml");
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
        SqlSession session = sqlSessionFactory.openSession();
        IOperationBean operationBean = session.getMapper(IOperationBean.class);
        //1.准备数据
        Integer id = 2 ;
        //2.执行更新
        operationBean.deletePerson(id);
        //3.提交事务
        session.commit();
        session.close();
    }

 

- end

你可能感兴趣的:(sql,jdbc,mybatis,crud)