mybatis单框架通用mapper使用(一)

mybatis 通用mapper使用(一)

1.导入依赖


<dependency>
    <groupId>com.github.abel533groupId>
    <artifactId>mapperartifactId>
    <version>3.0.1version>
dependency>

<dependency>
    <groupId>com.github.pagehelpergroupId>
    <artifactId>pagehelperartifactId>
    <version>5.3.1version>
dependency>

2 配置主配置文件mybatis-config.xml

2.1 需要添加的代码

<plugins>
  
    <plugin interceptor="com.github.pagehelper.PageInterceptor">
        
        <property name="helperDialect" value="mysql" />
        
        <property name="reasonable" value="true"/>
    plugin>
  
    <plugin interceptor="com.github.abel533.mapperhelper.MapperInterceptor">
        <property name="mappers" value="com.github.abel533.mapper.Mapper" />
    plugin>
plugins>

2.2 添加的位置

typeAliases标签后面

2.3 完整的mybatis-config文件


DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    
    <properties resource="jdbc.properties">properties>
    
    
    <settings>
        
        <setting name="lazyLoadingEnabled" value="true"/>
    settings>
    <typeAliases>
        <package name="entity"/>
    typeAliases>
    <plugins>
      
        <plugin interceptor="com.github.pagehelper.PageInterceptor">
            
            <property name="helperDialect" value="mysql" />
            
            <property name="reasonable" value="true"/>
        plugin>
      
        <plugin interceptor="com.github.abel533.mapperhelper.MapperInterceptor">
            <property name="mappers" value="com.github.abel533.mapper.Mapper" />
        plugin>
    plugins>
    
    <environments default="mysql">
        
        <environment id="mysql">
            
            <transactionManager type="JDBC"/>
            
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            dataSource>
        environment>
    environments>
    
    <mappers>
    
        
        <package name="mapper"/>
    mappers>
configuration>

3 设置实体类并给其加上JPA注解

3.1 代码展示

package entity;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import java.io.Serializable;

/**
 *  JPA注解 规范 实体与类的对应关系
 *  所有的注解都是可选的
 *  所有驼峰转下划线
 *  @Table(name="songs") 指定表名 默认类名作为表名
 * @Id 主键 根据id查询或相关方法需要识别
 * @Column(name="字段名") 普通字段 默认属性名为字段名 可以指定字段名
 * @Transient 指定该属性不与数据库关联
 * id是一定要加的
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
//@Table(name="songs")
public class Songs implements Serializable {
    @Id
    private Integer id;
    private String singerName;
    private String album;
    private String albumImg;
    private String name;
    private String releaseDate;
}

3.2 要点记录

 JPA注解 规范 实体与类的对应关系
a 所有的注解都是可选的
b 所有驼峰转下划线 例如singerName会在通用mapper的作用下转换成singer_name的形式
c @Table(name="songs") 指定表名 默认类名作为表名(会把类名的首字母从大写转换成小写)
d @Id 主键 下一行的字段是id,一般都建议写上
e  @Column(name="字段名") 普通字段 默认属性名为字段名 可以指定字段名(出现实体类名想要和数据库表的名字不一样的时候)
f @Transient 指定该属性不与数据库关联,使用后查询就会不会管它,得到的值就会为null,

4 书写SongsMapper类

4.1 创建SongsMapper接口并继承mapper类

package mapper;

import com.github.abel533.mapper.Mapper;
import entity.Songs;
import org.apache.ibatis.annotations.Select;

import java.util.List;

public interface SongsMapper  extends Mapper<Songs> {
}

4.2 在接口里面使用注解实现查询

 @Select("SELECT * FROM songs WHERE singer_name=#{sname}")
 List<Songs> find(String sname);

4.3 完整的SongsMapper接口版本

package mapper;

import com.github.abel533.mapper.Mapper;
import entity.Songs;
import org.apache.ibatis.annotations.Select;

import java.util.List;

public interface SongsMapper  extends Mapper<Songs> {
    @Select("SELECT * FROM songs WHERE singer_name=#{sname}")
    List<Songs> find(String sname);
}

5 测试代码

 @Test
    public void t1(){
        SqlSessionFactory sf = SqlSessionFactoryUtil.sf();
        SqlSession sqlSession = sf.openSession();
        SongsMapper mapper = sqlSession.getMapper(SongsMapper.class);
        //分页设置后 仅对最近的一条查询语句分页,第一个参数为当前页码数,第二个参数为一页的数据条数,这个是物理分页
        PageHelper.startPage(1, 10);
        List<Songs> list = mapper.select(null);
        list.forEach(System.out::println);
    }

6 测试运行截图

mybatis单框架通用mapper使用(一)_第1张图片

你可能感兴趣的:(mybatis学习,mybatis,单框架,通用mapper)