Mybatis -> 实现数据库增删改查

1.配置类:运行mybatis–配置类第一步就是需要加载配置文件,第二步就是写配置文件

package com.rod;

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.InputStream;

/**
 * 功能描述:配置mybatis类,作用是加载配置文件,创建sqlsession对象
 * 之后调用get方法获取session对象getmapper它的class对象
 */
public class Mybatisconfig {
  private static SqlSessionFactory sqlSessionFactory;
	//加载配置类,静态创建sqlsessionfactory对象
  static {
    String resource = "mybatis-config.xml";
    InputStream inputStream = null;
    try {
      inputStream = Resources.getResourceAsStream(resource);
    } catch (IOException e) {
      e.printStackTrace();
    }
    sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
  }
//调用opensession方法获取sqlsession对象
  public static SqlSession getSqlSession() {
    SqlSession session = sqlSessionFactory.openSession();
    return session;
  }
}

2.配置文件:连接数据库-到这里mybatis的基本配置就完成了

<?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>
    <!--development:表示可以连接多个数据库,这里的名字代表一个数据库-->
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <!--
        注册useri.xml;所有用来从数据库获取数据的
        实现接口的xml都需要在连接数据库这里注册,这些xml相当于实现类
        都是用来操作数据库中的数据的,sql语句都写在这些xml里面
        -->
        <mapper resource="com/dao/UserI.xml"/>
    </mappers>
</configuration>

3.sql语句接口,实现xml文件-以后的增删改查就要从这里开始了

package com.dao;

import com.mysqlclass.Mybatis;

import java.util.List;

/**
 * 功能描述: mapper接口,作用是增删改查
 */
public interface UserI {
  //select
  List<Mybatis> selectlist();
  //insert into
  void sqlinsert(Mybatis mybatis);
  //delete
  void sqldelete(int id);
  //update
  void sqlupdate(Mybatis mybatis);
}

xml文件就是接口的实现类-在这里面相当于重写接口的方法,然后写sql语句增删改查

<?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是需要绑定到对应的接口
本来应该是实现接口的类中写sql语句,获取数据库中的数据的
现在使用xml文件了.所以要给个名字,相当于implements 接口
只不过变成了namespace="接口全路径"
-->
<mapper namespace="com.dao.UserI">
    <!--
    这里是id就是调用接口的方法,实现类实现接口还行要重写方法的,这里用id表示方法
    resulttype:就是返回类型,方法中select了数据库的所有数据,要再在控制台输出,
    就需要有一个对应着数据库的类,去接受这些查询到的数据,所以result就是要接受数据库数据的类的全路径
    -->
    <select id="selectlist" resultType="com.mysqlclass.Mybatis">
        select * from mybatis.mybatis_1
  </select>

    <!--
    parametertype:是属性类型,就是我要传入的数据的数据类型,不写,也会识别得到,如下面的update
    -->
    <insert id="sqlinsert" parameterType="com.mysqlclass.Mybatis">
        insert into mybatis_1(id,idname) values(#{id},#{idname})
    </insert>

    <!--这里的parameterType="int"依旧可以省略-->
    <delete id="sqldelete" parameterType="int">
        delete from mybatis_1 where id=#{id}
    </delete>

    <!--这里没写parametertype,数据传入依然可以自动识别-->
    <update id="sqlupdate" >
        update mybatis_1 set idname=#{idname},psw=#{psw} where id=#{id}
    </update>
</mapper>

4.数据库类–对应着数据库的类

package com.mysqlclass;

/**
 * 功能描述:
 */
public class Mybatis {
  private int id;
  private String idname;
  private int psw;

  public Mybatis(int id, String idname, int psw) {
    this.id = id;
    this.idname = idname;
    this.psw = psw;
  }

  public Mybatis(int id, String idname) {
    this.id = id;
    this.idname = idname;
  }

  public Mybatis() {
  }

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

  public void setIdname(String idname) {
    this.idname = idname;
  }

  public void setPsw(int psw) {
    this.psw = psw;
  }

  public int getId() {
    return id;
  }

  public String getIdname() {
    return idname;
  }

  public int getPsw() {
    return psw;
  }

  @Override
  public String toString() {
    return "Mybatis{" +
            "id=" + id +
            ", idname='" + idname + '\'' +
            ", psw=" + psw +
            '}';
  }
}

5.测试类

package com;

import com.dao.ImpMapper;
import com.mysqlclass.Mybatis;
import com.rod.Mybatisconfig;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import java.util.List;

/**
 * 功能描述:
 */
public class MybatisTest {
  /**
   * 功能描述: 查询数据
   * @param
   * @retuern void
   **/
  @Test
  public void test() {
    SqlSession session = Mybatisconfig.getSqlSession();
    ImpMapper mapper = session.getMapper(ImpMapper.class);
    List<Mybatis> selectlist = mapper.selectlist();
    for (Object o : selectlist) {
      System.out.println(o);
    }
    session.close();
  }
/*
 * 功能描述: 添加数据
 * @param
 * @retuern void
 **/
  @Test
  public void test1() {
    /**
     * 功能描述: 添加一个数据
     *  get:获取配置类的sqlsession对象
     *  使用session对象get到sql的class类
     *  调用sql类的方法,添加数据
     *  提交事务
     *  关闭
     **/
    SqlSession session = Mybatisconfig.getSqlSession();
    ImpMapper mapper = session.getMapper(ImpMapper.class);
    mapper.sqlinsert(new Mybatis(7, "gg"));
    session.commit();
    session.close();
  }
/*
 * 功能描述: 删除数据
 * @param
 * @retuern void
 **/
  @Test
  public void test2() {
    SqlSession sqlSession = Mybatisconfig.getSqlSession();
    ImpMapper mapper = sqlSession.getMapper(ImpMapper.class);
    mapper.sqldelete(7);
    sqlSession.commit();
    sqlSession.close();
  }
/**
 * 功能描述: 修改数据
 * @param
 * @retuern void
 **/ 
  @Test
  public void test3() {
    SqlSession sqlSession = Mybatisconfig.getSqlSession();
    ImpMapper mapper = sqlSession.getMapper(ImpMapper.class);
    mapper.sqlupdate(new Mybatis(5, "rod", 777));
    sqlSession.commit();
    sqlSession.close();
  }
}



版权声明:本文为rod0320原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。