mybatis入门及简单的crud

第一步:导入Jar包


第二步:核心配置文件SqlMapConfig.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <!--配置数据源 事务-->
    <environments default="test">
        <environment id="test">
            <!--事务 JDBC/MANAGED 自己管理去-->
            <transactionManager type="JDBC"/>
            <!-- 数据源:POOLED/UNPOOLED/JNDI -->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/classes?charsetEncoding=utf8"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>

        <environment id="deploy">
            <!--事务 JDBC/MANAGED 自己管理去-->
            <transactionManager type="JDBC"/>
            <!-- 数据源:POOLED/UNPOOLED/JNDI -->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/classes?charsetEncoding=utf8"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>

    <!--映射文件Mapper-->
    <mappers>
        <mapper resource="cn/mybatis/PersonMapper.xml"/>
    </mappers>
</configuration>
第三步:建一个实体类Person.java

package cn.mybatis.domain;

/**
 * Created by *** on 2017/3/23.
 */
public class Person {
    private Integer cid;
    private String name;
    private String description;

    public Integer getCid() {
        return cid;
    }

    public void setCid(Integer cid) {
        this.cid = cid;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    @Override
    public String toString() {
        return "Person{" +
                "cid=" + cid +
                ", name='" + name + '\'' +
                ", description='" + description + '\'' +
                '}';
    }
}
第四步:建一个数据库 表名classes

第五部:写一个映射文件Mapper 此例名字叫做PersonMapper.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">
<!--配置空间名称-->
<mapper namespace="cn.mybatis.PersonMapper">
    <!--中间,对象的属性和结果集的字段之间的对应关系-->
    <resultMap id="personRM" type="cn.mybatis.domain.Person">
        <!--主键映射-->
        <id property="cid" column="CID"/>
        <!-- 普通字段 property指实体的属性;column结果集的字段名称 -->
        <result property="name" column="name"/>
        <result property="description" column="description"/>
    </resultMap>

    <!-- 查询,注意Mybatis中如果有填写集合类型,只填写集合中元素的类型  -->
    <select id="find" resultMap="personRM">
        SELECT * FROM classes
    </select>

    <!--查询一个 按id查询-->
    <select id="get" resultType="cn.mybatis.domain.Person" parameterType="Integer">
        SELECT * FROM classes WHERE cid=#{cid}
    </select>

    <!--新增-->
    <insert id="insert" parameterType="cn.mybatis.domain.Person">
        INSERT INTO classes(name,description) VALUES ('赏金猎人','武功贼高')
    </insert>

    <!--修改-->
    <update id="update" parameterType="cn.mybatis.domain.Person">
        UPDATE classes SET name="去去去",description="来来来" WHERE cid=5
    </update>

    <!-- 删除一条 -->
    <delete id="deleteOne" parameterType="cn.mybatis.domain.Person">
        DELETE FROM classes WHERE cid=2
    </delete>

    <!--删除多条 ,整形数组-->
    <delete id="deleteMore" parameterType="Integer">
        DELETE FROM classes WHERE cid IN
        <foreach collection="array" item="cid" open="(" separator="," close=")">
            #{cid}
        </foreach>
    </delete>

    <!--删除多条 List集合-->
    <delete id="deleteList" parameterType="Integer">
        DELETE FROM classes WHERE cid IN
        <foreach collection="list" item="cid" open="(" separator="," close=")">
            #{cid}
        </foreach>
    </delete>

    <!-- 删除多条 Map ids代表map中的Key  -->

    <delete id="deleteMap" parameterType="Map">
        DELETE FROM classes WHERE cid IN
        <foreach collection="ids" item="cid" open="(" separator="," close=")">
            #{cid}
        </foreach>
    </delete>
</mapper>
第六步:测试

package cn.mybatis.test;

import cn.mybatis.domain.Person;
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 org.junit.Before;
import org.junit.Test;

import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * Created by ** on 2017/3/23.
 */
public class TestMybatis {
    private SqlSessionFactory factory;
     @Before //最先执行,初始化SessionFactory
    public void init() throws IOException {
        String Resource="sqlMapConfig.xml";
        InputStream is= Resources.getResourceAsStream(Resource);
        factory=new SqlSessionFactoryBuilder().build(is); //获得工厂
    }

    @Test //查询所有
    public void selectAll(){
        SqlSession session=factory.openSession(); //打开session
        //如何访问mapper中的方法呢?  规则:命名空间 +.+ id
        List<Person> list=session.selectList("cn.mybatis.PersonMapper.find");
        System.out.println(list.size());
        for(Person p :list){
            System.out.println(p);
        }
    }
    @Test //查询一条
    public  void  get(){
        SqlSession session=factory.openSession();
        Person p=session.selectOne("cn.mybatis.PersonMapper.get",3);
        System.out.println(p);
    }

   @Test //新增
    public void testInsert(){
        SqlSession session=factory.openSession();
        int p=session.insert("cn.mybatis.PersonMapper.insert");
        session.commit();  //提交事务
        System.out.println("新增成功");
   }

   @Test //修改
   public void testUpdate(){
        SqlSession session=factory.openSession();
        session.update("cn.mybatis.PersonMapper.update");
        session.commit();
        System.out.println("修改成功");
   }
   @Test //删除一条
   public void testDeleteOne(){
       SqlSession session=factory.openSession();
       session.delete("cn.mybatis.PersonMapper.deleteOne");
       session.commit();
       System.out.println("删除一条成功");
   }

   @Test //删除多条 整形数组
   public void deleteMore(){
       SqlSession session=factory.openSession();
       Integer [] ids={
  
  5,7};
       session.delete("cn.mybatis.PersonMapper.deleteMore",ids);
       session.commit();
       System.out.println("删除多条成功");
   }

   @Test //删除多条 list集合
   public void  deleteList(){
       SqlSession session=factory.openSession();
       List<Integer> list =new ArrayList<Integer>();
       list.add(3);
       list.add(4);
       session.delete("cn.mybatis.PersonMapper.deleteList",list);
       session.commit();
       System.out.println("删除多条成功 list集合类型");
   }

   @Test //删除多条 Map集合
   public void deleteMap(){
       SqlSession session=factory.openSession();
       Map<String,Object> map =new HashMap<String,Object>();
       Integer[] ids ={
  
  3,6};
       map.put("ids",ids);
       session.delete("cn.mybatis.PersonMapper.deleteMap",map);
       session.commit();
       System.out.println("删除成功");
   }

}



猜你喜欢

转载自blog.csdn.net/qq_35222261/article/details/65443051