mybatis入门学习(一)-配置及示例

mybatis下载及环境搭建

mybatis下载链接
在这里插入图片描述

jar包下载完成后将zip文件解压后文件如下:
在这里插入图片描述
打开 mybatis-3.5.2 文件夹将 mybatis-3.5.2.jar 导入至 java项目中;之后再导入一个版本对应的jdbc包即可
在这里插入图片描述

配置文件

环境搭建好后我们来配置config文档;再回到mybatis下载页面找到如下图xml格式的配置,将其复制并在项目中新建一个 config.xml 文件,将复制内容粘贴到 ***config.xml***中
在这里插入图片描述
配置后如下:
在这里插入图片描述
配置说明:

	1<!--default="development" 指定连接的数据库配置信息为 id="development"-->
	<environments default="development">
		<environment id="development">...</environment>
	</environments>
	
	2<!--type="POOLED" 指定数据源类型-->
	<!--POOLED:使用数据库连接池-->
	<!--UNPOOLED:传统的JDBC模式,由代码直连数据库,每次访问均需要连接、关闭数据库-->
	<!--JNDI:从tomcat中获取一个内置的数据库连接池-->
	<dataSource type="POOLED">
	</dataSource>

	3<!--事务提交方式:-->
	<!--JDBC:事务需要手动提交、回滚、关闭等-->
	<!--MANAGED:将事务交由其他组件取托管(spring/jobss等),默认关闭连接;可通过<property name="closeConnection" value="false"/>取消默认关闭连接-->
	<transactionManager type="JDBC"/>

示例

1、新建一个 person 表,表中包含 id,name,age 三个字段;往表中插入数据,如下图所示:
在这里插入图片描述
2、新建一个实体类 Person,属性与 person 表一 一对应

package com.mybatis.slq.entity;

public class Person {
    private int id;
    private String name;
    private int age;

    public Person() {
    }

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    public Person(int id,String name, int age) {
        this.name = name;
        this.age = age;
        this.id=id;
    }
    @Override
    public String toString() {
        return "Person{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    public int getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    public void setId(int id) {
        this.id = id;
    }

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

    public void setAge(int age) {
        this.age = age;
    }
}

3、新建一个 personMapper.xml 文件;打开 mybatis-3.5.2.pdf 文件
在这里插入图片描述
找到如下图所示的xml格式的配置,复制到 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="com.mybatis.slq.entity.personMapper">

    <!--通過ID查詢單個Person(單一條件)-->
    <select id="selectPersonById" resultType="com.mybatis.slq.entity.Person" parameterType="int">
        select * from person where id = #{id}
    </select>

    <!--通過ID查詢單個Person(多個條件)-->
    <select id="selectPersonById1" resultType="com.mybatis.slq.entity.Person" parameterType="com.mybatis.slq.entity.Person">
        select * from person where id = #{id} and age=#{name}
    </select>

    <!--查詢全部Person-->
    <select id="selectPersonAll" resultType="com.mybatis.slq.entity.Person">
        select * from person
    </select>


    <!--添加Person-->
    <select id="addPerson" resultType="int" parameterType="com.mybatis.slq.entity.Person">
        insert into  person(name,age) values(#{name},#{age})
    </select>

    <!--根據Id删除Person-->
    <select id="deletePerson"  parameterType="int">
        delete  from  person where id = #{id}
    </select>

    <!--根據Id更新Person-->
    <select id="updatePerson"  parameterType="com.mybatis.slq.entity.Person">
        update person set name=#{name},age=#{age} where id = #{id}
    </select>
</mapper>

名词解释

namespace:命名空间,这里写 personMapper.xml 的完整路径(完整包名+文件名)
select 标签:指定该标签中的语句类型(还有update、delete、insert)
id:为该标签指定唯一标识
resultType:指定sql语句执行完成后的返回类型,返回的数据的每一笔都对应了一个 person 类(类与表一 一对应),如果只查询 name 也可以把 Person 的全类名换成 String 。
parameterType:传入参数,根据ID查询,所以传入类型 int ( id 的数据库类型为Int);根據Id更新Person,传入参数有多个,类型为 com.mybatis.slq.entity.Person(需为全类名)

测试

创建一个测试类

package com.mybatis.slq.entity;
import com.mybatis.slq.mapper.PersonMapper;
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 java.io.IOException;
import java.io.Reader;
import java.util.List;

public class TestDemo {

	//根據Id查詢單個Person(單一條件)
    public static void queryPersonById(SqlSession sqlSession,String statement,int id){
        Person person=sqlSession.selectOne(statement,id);
        System.out.println(person.toString());
    }
    //查詢全部Person
    public static void queryPersonAll(SqlSession sqlSession,String statement){
        List<Person> person=sqlSession.selectList(statement);
        System.out.println(person.toString());
    }

    //添加Person
    public static void addPerson(SqlSession sqlSession,String statement,Person person){
        int row=sqlSession.insert(statement,person);
        sqlSession.commit();
        System.out.println("受影響行數: "+row);
    }

    //根据id删除Person
    public static void deletePerson(SqlSession sqlSession,String statement,int id){
        int row=sqlSession.delete(statement,id);
        sqlSession.commit();
        System.out.println("受影響行數: "+row);
    }

    //根据id更新Person
    public static void updatePerson(SqlSession sqlSession,String statement,Person person){
        int row=sqlSession.update(statement,person);
        sqlSession.commit();
        System.out.println("受影響行數: "+row);
    }
    
	public static void main(String[] args) throws IOException {
		  //两种获取SqlSession的方式
		  //方式一
//        Reader reader=Resources.getResourceAsReader("config");
//        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
//        SqlSession sqlSession = sqlSessionFactory.openSession();

		//方式二
        InputStream inputStream=Resources.getResourceAsStream("config");
        SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
        SqlSession sqlSession = sqlSessionFactory.openSession();

		//根據Id查詢單個人(單一條件)
        String queryPersonById="com.mybatis.slq.entity.personMapper.selectPersonById";
        queryPersonById(sqlSession,queryPersonById,2);
//        //查詢全部Person
//        String queryPersonAll="com.mybatis.slq.entity.personMapper.selectPersonAll";
//        queryPersonAll(sqlSession,queryPersonAll);

//        //添加Person
//        String addPerson="com.mybatis.slq.entity.personMapper.addPerson";
//        Person person=new Person("test2",15);
//        addPerson(sqlSession,addPerson,person);

//        //根據Id删除Person
//        String deletePerson="com.mybatis.slq.entity.personMapper.deletePerson";
//       deletePerson(sqlSession,deletePerson,2);

        //根據Id更新Person
//        String updatePerson="com.mybatis.slq.entity.personMapper.updatePerson";
//        Person person=new Person(5,"test11",28);
//        updatePerson(sqlSession,updatePerson,person);
	}
}

结果:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值