现在的位置: 首页 > 综合 > 正文

Mybatis上路_02-单表的CRUD

2014年01月12日 ⁄ 综合 ⁄ 共 5208字 ⁄ 字号 评论关闭
文章目录

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 id="resultListPerson" type="tb_person">
        <!--主键,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();
    }

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文件: 

<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPEmapper 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","NewYork");
        //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 fromtb_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

 

抱歉!评论已关闭.