mybatis的简单查询

首先要在Maven项目中加入mybatis依赖和数据库依赖

    <!--MyBatis依赖-->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.5.3</version>
    </dependency>
​
    <!--    数据库依赖-->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.2</version>
    </dependency>
</dependencies>

首先要在resource目录下加入myBatis-config.xml文件(这个文件在官网的快速入门找到)

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <typeAliases>
<!--        这个包下的类全部用默认别名  就是类的名字,不区分大小写-->
        <package name="com.sunshine.entity"/>
    </typeAliases>
    <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/mydb1?serverTimezone=Asia/Shanghai"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="com/sunshine/mappers/EmpMapper.xml"/>
    </mappers>
</configuration>

然后在写好获得SqlSession的工具类

package com.sunshine.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 SessionUtil {
    private static SqlSessionFactory sqlSessionFactory;
    //    从 XML 文件中构建 SqlSessionFactory 的实例
    public static SqlSessionFactory createSqlSessionFactory() throws IOException {
        //让sqlSessionFactory只创建一次.
        if (sqlSessionFactory==null){
            String resource = "myBatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        }
        else{
            return sqlSessionFactory;
        }
        return sqlSessionFactory;
    }
​
    public static SqlSession createSqlSession() throws IOException {
        SqlSession sqlSession = createSqlSessionFactory().openSession();
        return sqlSession;
    }
}
​

然后先写好你要查的表的实体类

package com.sunshine.entity;
​
import java.util.Date;
​
public class EmpEntity {
​
    private int EMPNO;
    private String ENAME;
    private String JOB;
    private int MGR;
    private Date HIREdate;
    private double SAL;
    private double COMM;
    private int DEPTNO;
​
    public EmpEntity() {
    }
​
    public EmpEntity(int EMPNO, String ENAME, String JOB, int MGR, Date HIREdate, double SAL, double COMM, int DEPTNO) {
        this.EMPNO = EMPNO;
        this.ENAME = ENAME;
        this.JOB = JOB;
        this.MGR = MGR;
        this.HIREdate = HIREdate;
        this.SAL = SAL;
        this.COMM = COMM;
        this.DEPTNO = DEPTNO;
    }
​
    public int getEMPNO() {
        return EMPNO;
    }
​
    public void setEMPNO(int EMPNO) {
        this.EMPNO = EMPNO;
    }
​
    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 int getMGR() {
        return MGR;
    }
​
    public void setMGR(int MGR) {
        this.MGR = MGR;
    }
​
    public Date getHIREdate() {
        return HIREdate;
    }
​
    public void setHIREdate(Date HIREdate) {
        this.HIREdate = HIREdate;
    }
​
    public double getSAL() {
        return SAL;
    }
​
    public void setSAL(double SAL) {
        this.SAL = SAL;
    }
​
    public double getCOMM() {
        return COMM;
    }
​
    public void setCOMM(double COMM) {
        this.COMM = COMM;
    }
​
    public int getDEPTNO() {
        return DEPTNO;
    }
​
    public void setDEPTNO(int DEPTNO) {
        this.DEPTNO = DEPTNO;
    }
​
    @Override
    public String toString() {
        return "EmpEntity{" +
                "EMPNO=" + EMPNO +
                ", ENAME='" + ENAME + '\'' +
                ", JOB='" + JOB + '\'' +
                ", MGR=" + MGR +
                ", HIREdate=" + HIREdate +
                ", SAL=" + SAL +
                ", COMM=" + COMM +
                ", DEPTNO=" + DEPTNO +
                '}';
    }
}
​
​

然后写好查询的接口

package com.sunshine.dao;
​
import com.sunshine.entity.EmpEntity;
​
import java.util.List;
​
public interface EmpMapper {
​
    public List<EmpEntity> queryAll();
​
    public EmpEntity queryByEMPNO(int EMPNO);
​
    /**
     *mybatis创两风格参数时
     *  DEPTNO = #{arg0} and JOB = #{arg1}
     *  因为它的底层把它封装成了一个map<arg0 = v1,arg1=v2>
     *      还有一个param(从1开始)
     *  DEPTNO = #{param1} and JOB = #{param2}
     *也可以混用
     * DEPTNO = #{param1} and JOB = #{arg1}
     * 因为它的底层封装成一个map(4个Key)
     */
    public EmpEntity queryByEMPNOAndJOB(int DEPTNO,String JOB);
​
    public EmpEntity query03 (double sal,int DEPTNO,String JOB);
​

}
​

然后再写好接口的实现

package com.sunshine.service;
​
import com.sunshine.dao.EmpMapper;
import com.sunshine.entity.EmpEntity;
import org.apache.ibatis.session.SqlSession;
import com.sunshine.util.SessionUtil;
import org.apache.ibatis.session.SqlSessionFactory;
​
import java.io.IOException;
import java.util.List;
​
public class EmpMapperServiceImpl {
//    因为他无法实例化
​
    public List<EmpEntity> queryAll(){
        try {
            SqlSession sqlSession = SessionUtil.createSqlSession();
            EmpMapper empMapper = sqlSession.getMapper(EmpMapper.class);
            List <EmpEntity> empEntities = empMapper.queryAll();
            return  empEntities;
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }
​
    public EmpEntity queryByEMPNO(int EMPNO){
        try {
            SqlSession sqlSession = SessionUtil.createSqlSession();
            EmpMapper empMapper = sqlSession.getMapper(EmpMapper.class);
            EmpEntity empEntity = empMapper.queryByEMPNO(EMPNO);
            return empEntity;
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }
​
    public EmpEntity queryByEMPNOAndJOB(int DEPTNO,String JOB){
​
        try {
            SqlSession sqlSession = SessionUtil.createSqlSession();
            EmpMapper empMapper = sqlSession.getMapper(EmpMapper.class);
            EmpEntity empEntity = empMapper.queryByEMPNOAndJOB(DEPTNO,JOB);
            return empEntity;
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }
​
    public EmpEntity query03 (double sal,int DEPTNO,String JOB){
        SqlSession sqlSession = null;
        try {
            sqlSession = SessionUtil.createSqlSession();
            EmpMapper empMapper = sqlSession.getMapper(EmpMapper.class);
            EmpEntity empEntity = empMapper.query03(sal,DEPTNO,JOB);
            return empEntity;
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }
}

在写一个测试类运行你的查询,并用日志来打印查询的结果

package com.sunshine.test;
​
import com.sunshine.entity.EmpEntity;
import com.sunshine.service.EmpMapperServiceImpl;
import lombok.extern.slf4j.Slf4j;
​
​
import java.util.List;
@Slf4j(topic = "e")
public class MyBatisTest {
    public static void main(String[] args) {
//        List<EmpEntity> empEntities = new EmpMapperServiceImpl().queryAll();
//        log.debug("empEntities--{}",empEntities);
//        EmpEntity empEntity = new EmpMapperServiceImpl().queryByEMPNO(7844);
//        log.debug("empEntity--{}",empEntity);
        EmpEntity empEntity1 = new EmpMapperServiceImpl().queryByEMPNOAndJOB(20,"CLERK");
        log.debug("empEntity--{}",empEntity1);
    }
}
​

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值