mybatis 原生写法创建项目
阅读原文时间:2023年07月08日阅读:2

一、创建全局文件



<!--默认的数据库配置 修改成mysql   之前是 development-->  
<environments default="mysql">  
    <environment id="mysql">  
        <transactionManager type="JDBC"/>  
        <dataSource type="POOLED">  
            <property name="driver" value="com.mysql.jdbc.Driver"/>  
            <property name="url" value="jdbc:mysql://localhost:3306/qy100?CharacterEncoding=utf-8"/>  
            <property name="username" value="root"/>  
            <property name="password" value="root"/>  
        </dataSource>  
    </environment>  
</environments>

<!--mybatis 是使用  
1.简单的xml 或者  
2.注解来配置和映射原生类型,接口和java的pojo(普通老式java对象)-->  
<!--为数据库中记录的-->  
<!--这里就是将在dao层下创建的DeptMapper.xml映射文件  加入到全局文件中  -->  
<mappers>  
    <mapper resource="com/aaa/dao/DeptMapper.xml"/>  
</mappers>

二、创建实体类

package com.aaa.entity;

public class Dept {
private int id;
private String ename;
private String job;
private double sal;

public Dept(int id, String ename, String job, double sal) {  
    this.id = id;  
    this.ename = ename;  
    this.job = job;  
    this.sal = sal;  
}

public Dept(int id, String ename) {  
    this.id = id;  
    this.ename = ename;  
}

public int getId() {  
    return id;  
}

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

public String getEname() {  
    return ename;  
}

public void setEname(String ename) {  
    this.ename = ename;  
}

public String getJob() {  
    return job;  
}

public void setJob(String job) {  
    this.job = job;  
}

public double getSal() {  
    return sal;  
}

public void setSal(double sal) {  
    this.sal = sal;  
}

@Override  
public String toString() {  
    return "Dept{" +  
            "id=" + id +  
            ", ename='" + ename + '\\'' +  
            ", job='" + job + '\\'' +  
            ", sal=" + sal +  
            '}';  
}  

}

三、在DAO层中创建  mybatis-mapper.xml 映射文件。


<!--mybatis的原生接口。-->

<!--工作空间就是  
 1.我在dao层下 创建的DeptMapper 文件  
 2.或者是对应的 dao 层中的接口。  
 -->  


<delete id="deleteDept" parameterType="com.aaa.entity.Dept">  
    delete from dept where id=5;  
</delete>

<insert id="insertDept" parameterType="com.aaa.entity.Dept">  
    insert  into dept (ename,job,sal) values("武王嬴荡","秦王",1200);  
</insert>

<update id="updateDept" parameterType="com.aaa.entity.Dept">  
    update dept set ename="嬴政" ,job="千古第一帝" where id=5;  
</update>

四、测试

package com.aaa.test;

import com.aaa.entity.Dept;
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;
import java.util.List;

/* 测试 mybatis原生的接口
* 1.Resources:资源类
* 2.SqlSessionFactoryBuilder:构建器
* 3.SqlSessionFactory :会话工厂
*
* */
public class Test {
public static void main(String[] args) throws IOException {
//1.加载全局文件和配置文件

    String resource="mybatis-config.xml";

    InputStream is = Resources.getResourceAsStream(resource);  
    SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(is);

    //2.开启会话  
    SqlSession sqlSession = ssf.openSession();  
    List<Dept> deptList = sqlSession.selectList("com.aaa.dao.DeptMapper.selectDept");

    for (Dept dept:deptList  
         ) {  
        System.out.println("部门信息"+dept);  
    }  
    //2.关闭会话  
    sqlSession.close();  
}  

}

五、封装一个单列的会话工厂。

package com.aaa.util;

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;
// 懒汉模式 节省资源
public class Factory {
private static SqlSessionFactory ssf=null;

static{  
    String resource="mybatis-config.xml";  
    InputStream is=null;

    try {  
         is = Resources.getResourceAsStream(resource);  
         ssf = new SqlSessionFactoryBuilder().build(is);  
    } catch (IOException e) {  
        e.printStackTrace();  
    }  
}

public static SqlSessionFactory getSsf(){  
    return ssf;  
}  
public static SqlSession getSqlSession(){  
    return ssf.openSession();  
}  

}

六、测试

package com.aaa.test;

import com.aaa.entity.Dept;
import com.aaa.util.Factory;
import org.apache.ibatis.session.SqlSession;

import java.util.List;
/*
* 1.增删改查 注意!执行增删改的操作时 查询语句只能放在后面执行 否则报错!
* 2.进行增删改操作 需要进行提交!
*
* */
public class Test02 {
public static void main(String[] args) {
//利用单列的工厂类 获得连接
SqlSession sqlSession = Factory.getSqlSession();

    //1.增加  
    sqlSession.insert("com.aaa.dao.DeptMapper.insertDept");  
    sqlSession.commit();  
    //2.修改  
    sqlSession.update("com.aaa.dao.DeptMapper.updateDept");  
    sqlSession.commit();  
    //3.删除  
    sqlSession.delete("com.aaa.dao.DeptMapper.deleteDept");  
    sqlSession.commit();

    //4.查询  
    List<Dept> deptList = sqlSession.selectList("com.aaa.dao.DeptMapper.selectDept");

    for (Dept dept:deptList  
         ) {  
        System.out.println("部门信息"+dept);  
    }  
    //关闭会话  
   sqlSession.close();  
}  

}