Mybatis的基本配置以及简单使用

Mybatis的基本配置以及使用

mybatis是什么?

mybatis是优秀的Java持久层框架,支持定制SQL和存储过程存储过程以及高级映射,可以通过xml配置或者注解方式来进行映射原始类型接口和java pojo(简单的Java对象 仅用来进行数据的传递而没有逻辑方法)到数据库中的对象

mybatis的优点

  1. mybatis中使用了dao层来放置持久层代码,将持久层代码与业务逻辑层代码分开,进行了解耦便于了代码的维护
  2. mybatis是半自动化的持久层框架,相比使用JDBC来操作数据库简单了很多几乎避免了所有的JDBC代码
  3. mybatis支持定制化的sql由程序员来编写sql代码,更加的灵活。

mybatis的使用

  1. mybatis资源的获取:mybatis官方网址

  2. 使用maven进行项目的管理我们只需要在pom.xml文件中导入mybatis的依赖坐标
    maven依赖坐标获取以及jar包下载网站:maven repository
    因为使用maven管理项目因此获取mybatis依赖坐标即可 一般下载使用人数较多的版本

    
    org.mybatis
    mybatis
    3.4.6
    
    

1. 使用xml文件方式从数据库查询表中数据

  1. 首先在数据库创建一个数据库表user并且插入数据(要连接数据库别忘了在pom.xml中加入MySQL的依赖坐标和单元测试junit依赖坐标用于测试)
     	create database mybatis_demo;
    	use mybatis_demo;
    	create table user(
    	                    eno int primary key auto_increment,
    	                    ename varchar(50) not null,
    	                    email varchar(50),
    	                    salary double,
    	                    dno int
    	);
    	insert into user(ename,email,salary,dno)
    	    value('fff','[email protected]',19000,1),
    	    ('ggg','[email protected]',15000,2),
    	    ('hhh','[email protected]',13000,3),
    	    ('jjj','[email protected]',16000,4);
    
  2. 创建一个包名为entiyt的包来存放实体类,实体类成员属性必须要对应表中的字段(因为mybatis要将出数据库中查询出来的数据进行映射到实体类对象中然后返回)
public class User {
     
    private int eno;
    private String ename;
    private String email;
    private double salary;
    private int dno;

    public User(){
     

    }

    public User(int eno, String ename, String email, double salary, int dno) {
     
        this.eno = eno;
        this.ename = ename;
        this.email = email;
        this.salary = salary;
        this.dno = dno;
    }

    public int getEno() {
     
        return eno;
    }

    public void setEno(int eno) {
     
        this.eno = eno;
    }

    public String getEname() {
     
        return ename;
    }

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

    public String getEmail() {
     
        return email;
    }

    public void setEmail(String email) {
     
        this.email = email;
    }

    public double getSalary() {
     
        return salary;
    }

    public void setSalary(double salary) {
     
        this.salary = salary;
    }

    public int getDno() {
     
        return dno;
    }

    public void setDno(int dno) {
     
        this.dno = dno;
    }

    @Override
    public String toString() {
     
        return "User{" +
                "eno=" + eno +
                ", ename='" + ename + '\'' +
                ", email='" + email + '\'' +
                ", salary=" + salary +
                ", dno=" + dno +
                '}';
    }
}
  1. 在源码部分新建一个包,包名叫做dao 用来存放持久层代码
    在dao包下面创建一个接口里面声明操作数据库的方法,接口中的方法不能重载
public interface UserDao {
     
//    查询数据库中所有的user
   List<User> queryAllUsers();
}
  1. 在resources目录下编写一个接口的映射文件userDaoMapper.xml(相当于接口UserDao的实现类)
 
        
<mapper namespace="org.xupt.dao.UserDao">
<select id="queryAllUsers" resultType="org.xupt.entity.User">
        select * from mybatis_demo.user;
    select>
mapper>
  1. 编写mybatis的配置文件mybatis-config.xml,将mybatis与数据库连接(数据库的配置信息可以抽取出来成一个db.properties文件然后在configuration标签下面使用properties标签引入)
 
<configuration>
   <environments default="mysql">
       <environment id="mysql">
           <transactionManager type="JDBC"/>
           <dataSource type="POOLED">
               <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
               <property name="url" value="jdbc:mysql://localhost:3306/mybatis_demo?serverTimezone=UTC"/>
               <property name="username" value="root"/>
               <property name="password" value="123456"/>
           dataSource>
       environment>
   environments>
   <mappers>
       
       <mapper resource="UserDaoMapper.xml"/>
   mappers>
configuration>
  1. 进行测试
	public class test {
     
    @Test
    public void testF() throws IOException {
     
//        读取mybatis的全局配置文件
        InputStream in = Resources.getResourceAsStream("mybatis-config.xml");
//        创建sqlSessionFactory
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
//         使用sqlSessionFactory生产sqlSession
        SqlSession sqlSession = sqlSessionFactory.openSession();
//        创建代理对象 面向接口编程
        UserDao mapper = sqlSession.getMapper(UserDao.class);
//        使用代理对象 调用接口中的方法
        List<User>res =  mapper.queryAllUsers();
        for (User user:res){
     
            System.out.println(user.toString());
        }
    }
}

测试结果:
运行结果
2. 使用注解的方式从数据库查询表中数据
注解方式与xml方式区别:
注解方式不需要xml映射文件 sql语句写在接口中的方法上的注解里
mybatis的配置文件中sql映射要换成接口所在位置

public interface UserDao {
     
//    查询数据库中所有的user
   @Select("select * from user")
   List<User> queryAllUsers();
}

修改sql映射位置

    <mappers>
        
        <mapper class="org.xupt.dao.UserDao"/>
    mappers>

测试结果(测试方法和xml方式一样)
测试结果

你可能感兴趣的:(mybatis)