栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

MyBatis Plus学习笔记(一)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MyBatis Plus学习笔记(一)

1.MyBatis 介绍

MyBatis是一种持久层框架,和Hibernate等一样是作为操作数据库底层的处理方案。持久层的作用可以把实体对象转换为SQL语句,或者使用自定义的SQL语句去操作数据库,然后把返回的数据再映射为实体对象返回给调用者。

在传统的 JDBC 中,我们除了需要自己提供 SQL 外,还必须操作 Connection、Statment、ResultSet,不仅如此,为了访问不同的表,不同字段的数据,我们需要些很多雷同模板化的代码,闲的繁琐又枯燥。
而使用了 MyBatis 之后,只需要提供 SQL 语句就好了,其余的诸如:建立连接、操作 Statment、ResultSet,处理 JDBC 相关异常等等都可以交给 MyBatis 去处理,我们的关注点于是可以就此集中在 SQL 语句上,关注在增删改查这些操作层面上。

1.1. SpringMVC下MyBatis的集成 1.1.1. Spring工程搭建 1.1.1.1. 创建Maven工程

创建一个 Maven工程,工程结构目录如下:

1.1.1.2. 配置pom文件

将需要的包引入到工程里面,以下是需要的jar包配置。


    
    
 junit
 junit
 4.12
 test
    
    
    
 commons-logging
 commons-logging
 1.2
 test
    
    
 org.slf4j
 log4j-over-slf4j
 1.7.21
 test
    
    
 ch.qos.logback
 logback-classic
 1.2.3
 test
    

    
    
 org.mybatis
 mybatis
 3.2.8
    
    
    
 org.mybatis
 mybatis-spring
 1.2.2
    
    
    
 org.springframework
 spring-test
 4.1.3.RELEASE
    

    
 org.springframework
 spring-context
 
     
     
  commons-logging
  commons-logging
     
 
 4.1.3.RELEASE
    
    
 org.springframework
 spring-tx
 4.1.3.RELEASE
    
    
 org.springframework
 spring-jdbc
 4.1.3.RELEASE
    

    
    
 mysql
 mysql-connector-java
 5.1.46
    
    
    
 com.alibaba
 druid
 1.1.12
    

1.1.1.3. 增加相关的配置文件

如果是开发完整的web工程,需要编写相应的配置文件,我们只是为了简单的使用测试使用一下MyBatis相关的功能,所以只配置这一个相关的即可。




    
    

    
    
 
 
 
 
 
 
 
    

    
    
 
 
    

    
    
 
    
    
    


注:1、在配置sqlsessionFactory中关于configLocation是配置MyBatis自己相关的一些配置的,目前使用不到,可以不用配置。
2、配置扫描包路径必须和项目中真实路径保持一致

这里看到引入了一个数据库相关的配置文件,所以编写一个db.properties,编写数据库连接相关的内容

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/mp?characterEncoding=utf-8
jdbc.username=root
jdbc.password=root

还需要一个Mybatis自己相关的配置文件SqlMapConfig,,里面配置了日志和缓存相关的内容。




    
 
 
 
 
 
 
    

此时的工程目录结构如下:

接下来编写实体和Mybatis的mapper代理,由于我们只是使用junit进行单元测试的方式进行mybatis的学习,就不编写controller相关的代码了。

1.1.1.4. 编写相关的Java代码

在src/java下面新建com.zzlh.mp.entity包,里面存放的是各种实体类对应数据库中的每一张表。我们以user表为例创建一个User.java文件。

public class User {
//对应数据库中的表字段
private Long id;
private String name;
private Integer age;
private String email;

public User() {
}
//方便创建测试用例重写了实例化方法
public User(Long id, String name, Integer age, String email) {
    this.id = id;
    this.name = name;
    this.age = age;
    this.email = email;
}

public Long getId() {
    return id;
}

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

public String getName() {
    return name;
}

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

public Integer getAge() {
    return age;
}

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

public String getEmail() {
    return email;
}

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

//方便打印输出,重写了toString方法
@Override
public String toString() {
    return "User{" +
     "id=" + id +
     ", name='" + name + ''' +
     ", age=" + age +
     ", email='" + email + ''' +
     '}';
}

在src/java下面新建com.zzlh.mp.mapper包,里面存放的是MyBatis的代理接口和对应的xml文件。
首先UserMapper.java,是一个接口类,里面定义了各种接口方法。

package com.zzlh.mp.mapper;

import com.zzlh.mp.entity.User;

import java.util.List;
import java.util.Map;

public interface UserMapper {

    int insertUser(User user);

    int deleteUserById(int userId);

    int updateUser(User user);

    User getUserById(int userId);

    User selectOne(User user);

    List listUserByMap(Map paramMap);

    List listUser(User user);

    List selectAll();
}

然后是UserMapper.xml,里面是根据Mybatis语法规则编写的sql语句。




    
 
 
 
 
    

    
 insert into user (id,name,age,email) value (#{id,jdbcType=DECIMAL},#{name,jdbcType=VARCHAR},#{age,jdbcType=DECIMAL},#{email,jdbcType=VARCHAR})
    

    
 delete from user where id = #{userId,jdbcType=DECIMAL}
    

    
 update user set name=#{name,jdbcType=VARCHAR},age=#{age,jdbcType=DECIMAL},email=#{email,jdbcType=VARCHAR} where id=#{id,jdbcType=DECIMAL}
    

    
 select * from user where id=#{userId,jdbcType=DECIMAL}and name=#{name,jdbcType=VARCHAR} and age=#{age,jdbcType=DECIMAL} and email=#{email,jdbcType=VARCHAR}
    

    
 select * from user where id=#{userId,jdbcType=DECIMAL}and name=#{name,jdbcType=VARCHAR} and age=#{age,jdbcType=DECIMAL} and email=#{email,jdbcType=VARCHAR}