mybatis cache mybatis-generator paging plugin

1. Paging plugin PageHelper.

(1) The role of pageHelper

Help you complete the function of paging

(2) How to use:

1. Introduce the jar package of pageHelper

     <!--引入pageHelperjar包-->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper</artifactId>
            <version>5.1.11</version>
        </dependency>

        2. Set pageHelper's interceptor in mybatis

Set under the environments tab

 <plugins>
        <plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin>
    </plugins>

        3 Use pageHelper -- in the test class

      //设置分页属性pageNum:显示第几页  PageSize:每页显示的条数
        PageHelper.startPage(2,5);
        List<User> list = userDao.findAll();
        //把查询的结果封装到PageInfo类中。
        PageInfo<User> pageInfo=new PageInfo<User>(list);
        System.out.println("总条数:"+pageInfo.getTotal());
        System.out.println("总页数:"+pageInfo.getPages());
        System.out.println("当前页码对应的数据:"+pageInfo.getList());

2. Mybatis code generator --generator

        (1) The role of mybatis-generator

According to the table help you generate entity classes, and dao and xml mapping files. is simple CRUD

         (2) How to use

        1. Introduce the jar package of mybatis-generator

       <dependency>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-core</artifactId>
            <version>1.4.0</version>
        </dependency>

        2generator configuration file

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
  PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
  "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">

<generatorConfiguration>
  <classPathEntry location="自己的MySQL的路径" />

  <context id="DB2Tables" targetRuntime="MyBatis3">
<!--根据自己的账号和密码修改-->
    <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
        connectionURL="jdbc:mysql://localhost:3306/five?serverTimezone=Asia/Shanghai &amp;characterEncoding=UTF-8&amp;nullCatalogMeansCurrent=true"
        userId="db2admin"
        password="db2admin">
    </jdbcConnection>

    <javaTypeResolver >
      <property name="forceBigDecimals" value="false" />
    </javaTypeResolver>
 <!--java 实体类的位置-->
    <javaModelGenerator targetPackage="要创建的实体类的包名" targetProject="实体类的路径">
      <property name="enableSubPackages" value="true" />
      <property name="trimStrings" value="true" />
    </javaModelGenerator>
<!--映射文件的位置-->
    <sqlMapGenerator targetPackage="映射文件的包名"  targetProject="映射文件的路径">
      <property name="enableSubPackages" value="true" />
    </sqlMapGenerator>
<!--dao包数据访问层-->
    <javaClientGenerator type="XMLMAPPER" targetPackage="要创建的dao的包名"  targetProject="bao的路径">
      <property name="enableSubPackages" value="true" />
    </javaClientGenerator>
<!--数据库和实体的映射关系-->
    <table schema="数据库的名字" tableName="表名" domainObjectName="实体类的名字" 
enableUpdateByExample="false" enableSelectByExample="false" enableDeleteByExample="false" enableCountByExample="false">
     </table>

  </context>
</generatorConfiguration>

        3. Run your own configuration file

   List<String> warnings = new ArrayList<String>();
   boolean overwrite = true;
   File configFile = new File("generatorConfig.xml");
   ConfigurationParser cp = new ConfigurationParser(warnings);
   Configuration config = cp.parseConfiguration(configFile);
   DefaultShellCallback callback = new DefaultShellCallback(overwrite);
   MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
   myBatisGenerator.generate(null);

There are many English comments after running, if you don't want to write -- under the context

 <commentGenerator>
            <property name="suppressAllComments" value="true"/>
        </commentGenerator>

3. mybatis cache

        1. What is Cache --- Cache is temporary data that exists == in memory ==.

        2. Level 1 cache

        Level 1 cache - Cache based on SqlSession level. The first level cache is enabled by default and cannot be disabled.

        

        //一级缓存
        Reader reader = Resources.getResourceAsReader("conf.xml");
        SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(reader);
        SqlSession session= factory.openSession();
        StudentMapper mapper = session.getMapper(StudentMapper.class);
        //一级缓存:如果第一次执行的时候,在缓存中可以找到,就不会去数据库中查找,如果在缓存中找不到,会去数据库中查找
        Student student = mapper.selectByPrimaryKey(59);
        System.out.println(student);
        Student student1 = mapper.selectByPrimaryKey(59);

 @Test
    public void Test02()throws Exception{
        //一级缓存 在不同的SQLsession中 查询的内容一样
        Reader reader = Resources.getResourceAsReader("conf.xml");
        SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(reader);
        SqlSession session= factory.openSession();
        StudentMapper mapper = session.getMapper(StudentMapper.class);
        Student student = mapper.selectByPrimaryKey(59);
        System.out.println(student);
        //开启新的SQlSession 
        SqlSession session1= factory.openSession();
        StudentMapper mapper1 = session1.getMapper(StudentMapper.class);
        Student student1 = mapper1.selectByPrimaryKey(59);
        System.out.println(student1);
    }

         3. L2 cache

Second-level cache--based on the SqlSessionFactory level cache, it can share data among multiple SqlSessions. By default it is off. Need to be turned on manually

                1. Turn on the second level cache---under configuration

<settings>
    <setting name="cacheEnabled" value="true"/>
</settings>

                2. Use the second level cache -- under the mapping file

  <cache/>

                3. Implement the serialization interface of the corresponding entity

public class Student implements Serializable

                4. Test the second level cache

 public void Test03()throws Exception{
        //二级缓存
        Reader reader = Resources.getResourceAsReader("conf.xml");
        SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(reader);
        SqlSession session= factory.openSession();
        StudentMapper mapper = session.getMapper(StudentMapper.class);
        Student student = mapper.selectByPrimaryKey(59);
        System.out.println(student);
        session.close();
        //开启新的SQlSession
        SqlSession session1= factory.openSession();
        StudentMapper mapper1 = session1.getMapper(StudentMapper.class);
        Student student1 = mapper1.selectByPrimaryKey(59);
        System.out.println(student1);
    }

Guess you like

Origin blog.csdn.net/ne_123456/article/details/125153906