海外酒店网站建设,招标网址网站大全,山东建设银行官方网站,做网销的一天都在干嘛目录
一、使用注解开发实现数据库增删改查操作
1、搭建项目
2、使用注解开发操作数据库
二、一级缓存
1、一级缓存失效的情况
三、二级缓存
1、手动开启二级缓存cacheEnabled
2、二级缓存机制
四、MyBatis实现分页
1、配置环境
2、startPage()开启分页
3、PageInfo…目录
一、使用注解开发实现数据库增删改查操作
1、搭建项目
2、使用注解开发操作数据库
二、一级缓存
1、一级缓存失效的情况
三、二级缓存
1、手动开启二级缓存cacheEnabled
2、二级缓存机制
四、MyBatis实现分页
1、配置环境
2、startPage()开启分页
3、PageInfo查询分页信息
1PageInfo对象
2 getList()方法
3getTotal()方法 一、使用注解开发实现数据库增删改查操作 不通过mapper配置文件通过注解实现数据库增删改查操作 1、搭建项目 1创建数据库表admin CREATE DATABASE mybatisdatabase;
USE mybatisdatabase;
CREATE TABLE IF NOT EXISTS admin(
uid INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(20),
upassword VARCHAR(20) NOT NULL,
phone VARCHAR(11) UNIQUE NOT NULL,
address VARCHAR(10) NOT NULL
);INSERT INTO admin(username,upassword,phone,address) VALUES
(张三,123456,15689609560,安徽合肥包河区),
(王二,666666,13395581841,安徽合肥蜀山区),
(李四,456789,18144172517,安徽合肥高新区);2新建module---java框架Maven工程---完善工程目录 3 在pom.xml中添加需要使用的依赖 project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdcom.mybatis/groupIdartifactIdmybayis06/artifactIdversion1.0-SNAPSHOT/versionpackagingjar/packagingnamemybayis06/nameurlhttp://maven.apache.org/urlpropertiesproject.build.sourceEncodingUTF-8/project.build.sourceEncoding/propertiesdependenciesdependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion4.12/versionscopetest/scope/dependencydependencygroupIdorg.mybatis/groupIdartifactIdmybatis/artifactIdversion3.5.11/version/dependencydependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion5.1.48/version/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdversion1.18.24/version/dependencydependencygroupIdlog4j/groupIdartifactIdlog4j/artifactIdversion1.2.17/version/dependency/dependencies
/project4创建实体类和Mapper接口 package com.mybatis.entity;import lombok.Data;Data
public class Admin {private long uid;private String username;private String upassword;private String phone;private String address;}5在resources目录下新建config文件存放mybatis全局配置文件和外部数据源 ?xml version1.0 encodingUTF-8 ?
!DOCTYPE configurationPUBLIC -//mybatis.org//DTD Config 3.0//ENhttp://mybatis.org/dtd/mybatis-3-config.dtd
configuration!-- 引入外部数据源参数--properties resourceconfig/jdbc.properties/propertiessettings!-- 开启驼峰映射--setting namemapUnderscoreToCamelCase valuetrue/!-- 开启日志打印--setting namelogImpl valueLOG4J//settings!-- 给表起别名--typeAliasespackage namecom.mybatis.entity//typeAliasesenvironments defaultdevelopmentenvironment iddevelopmenttransactionManager typeJDBC/dataSource typePOOLEDproperty namedriver value${jdbc.driver}/property nameurl value${jdbc.url}/property nameusername value${jdbc.username}/property namepassword value${jdbc.password}//dataSource/environment/environmentsmapperspackage namecom.mybatis.mapper//mappers
/configuration
jdbc.drivercom.mysql.jdbc.Driver
jdbc.urljdbc:mysql://127.0.0.1:3306/mybatisdatabase
jdbc.usernameroot
jdbc.password123456 6在resources目录下新建与Mapper接口层级相同的文件夹存放Mapper映射文件 ?xml version1.0 encodingUTF-8 ?
!DOCTYPE mapperPUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtd
mapper namespacecom.mybatis.mapper.AdminMapper/mapper 7在resources目录下添加日志配置文件log4j.properties #打印日志的级别可控制打印信息哪些打印哪些不打印
#Console打印窗口
log4j.rootLoggerDEBUG,Console
#Console
log4j.appender.Consoleorg.apache.log4j.ConsoleAppender
log4j.appender.console.TargetSystem.out
#设置打印格式
log4j.appender.Console.layoutorg.apache.log4j.PatternLayout
#设置打印信息
log4j.appender.Console.layout.ConversionPattern%d [%t] %-5p [%c] - %m%n
#打印日志级别设置打印级别只要不是ERROR级别就不打印
log4j.logger.org.apacheERROR
log4j.logger.org.mybatisERROR
log4j.logger.org.springframeworkERROR
#这个需要
log4j.logger.log4jdbc.debugERROR
log4j.logger.com.gk.mapperERROR
log4j.logger.jdbc.auditERROR
log4j.logger.jdbc.resultsetERROR
#这个打印SQL语句非常重要
log4j.logger.jdbc.sqlonlyDEBUG
log4j.logger.jdbc.sqltimingERROR
log4j.logger.jdbc.connectionFATAL
2、使用注解开发操作数据库 在Mapper接口的方法上直接使用相应的注解来完成对数据库的操作 package com.mybatis.mapper;import com.mybatis.entity.Admin;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;import java.util.List;public interface AdminMapper {Select(select * from admin where uid #{uid})public Admin selectByUid(int uid);Select(select * from admin)public ListAdmin selectAll();Insert(insert into admin(username,upassword,phone,address) values (#{username},#{upassword},#{phone},#{address}))public Integer insert(Admin admin);Delete(delete from admin where uid #{uid})public Integer delete(int uid);Update(update admin set username #{username},upassword #{upassword},phone #{phone},address #{address} where uid #{uid})public Integer update(Admin admin);
}package com.mybatis.mapper;import com.mybatis.entity.Admin;
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 org.junit.Before;
import org.junit.Test;import java.io.IOException;
import java.io.InputStream;
import java.util.List;import static org.junit.Assert.*;public class AdminMapperTest {SqlSessionFactory sqlSessionFactory null;Beforepublic void init(){InputStream resourceAsStream null;try {resourceAsStream Resources.getResourceAsStream(config/mybatis-config.xml);} catch (IOException e) {e.printStackTrace();}sqlSessionFactory new SqlSessionFactoryBuilder().build(resourceAsStream);}Testpublic void selectByUid() {//创建sqlSession会话SqlSession sqlSession sqlSessionFactory.openSession();//获取AdminMapper接口动态代理对象AdminMapper mapper sqlSession.getMapper(AdminMapper.class);//通过接口调用方法Admin admin mapper.selectByUid(1);System.out.println(admin admin);//关闭资源sqlSession.close();}Testpublic void selectAll() {//创建sqlSession会话SqlSession sqlSession sqlSessionFactory.openSession();//获取AdminMapper接口动态代理对象AdminMapper mapper sqlSession.getMapper(AdminMapper.class);//通过接口调用方法ListAdmin adminList mapper.selectAll();for (Admin admin : adminList) {System.out.println(admin admin);}//关闭资源sqlSession.close();}Testpublic void insert() {//创建sqlSession会话,开启事务自动提交SqlSession sqlSession sqlSessionFactory.openSession(true);//获取AdminMapper接口动态代理对象AdminMapper mapper sqlSession.getMapper(AdminMapper.class);//创建Admin对象Admin admin new Admin();admin.setUsername(老六);admin.setUpassword(666666);admin.setPhone(19144756263);admin.setAddress(老北京);//通过接口调用方法Integer line mapper.insert(admin);System.out.println(line line);//关闭资源sqlSession.close();}Testpublic void delete() {//创建sqlSession会话,开启事务自动提交SqlSession sqlSession sqlSessionFactory.openSession(true);//获取AdminMapper接口动态代理对象AdminMapper mapper sqlSession.getMapper(AdminMapper.class);//通过家口调用方法Integer line mapper.delete(2);System.out.println(line line);//关闭资源sqlSession.close();}Testpublic void update() {//创建sqlSession会话,开启事务自动提交SqlSession sqlSession sqlSessionFactory.openSession(true);//获取AdminMapper接口动态代理对象AdminMapper mapper sqlSession.getMapper(AdminMapper.class);//创建Admin对象Admin admin new Admin();admin.setUsername(老马);admin.setUpassword(666666);admin.setPhone(18874151577);admin.setAddress(安徽芜湖);admin.setUid(3);//通过接口调用方法Integer line mapper.update(admin);System.out.println(line line);//关闭资源sqlSession.close();}
}
二、一级缓存 MyBatis一级缓存是默认开启的在一次SqlSession会话下有效。执行两次相同查询时为了缓解服务器的压力第二次的查询结果来自MyBatis的缓存不再将查询指向数据库 package com.mybatis.mapper;import com.mybatis.entity.Admin;
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 org.junit.Before;
import org.junit.Test;import java.io.IOException;
import java.io.InputStream;
import java.util.List;public class SelectTest {SqlSessionFactory sqlSessionFactory null;Beforepublic void init(){InputStream resourceAsStream null;try {resourceAsStream Resources.getResourceAsStream(config/mybatis-config.xml);} catch (IOException e) {e.printStackTrace();}sqlSessionFactory new SqlSessionFactoryBuilder().build(resourceAsStream);}Testpublic void selectAll() {//创建sqlSession会话SqlSession sqlSession sqlSessionFactory.openSession();//获取AdminMapper接口动态代理对象AdminMapper mapper sqlSession.getMapper(AdminMapper.class);//通过接口调用方法//第一次查询ListAdmin adminList mapper.selectAll();for (Admin admin : adminList) {System.out.println(admin admin);}//第二次查询ListAdmin adminList1 mapper.selectAll();System.out.println(adminList1 adminList1);//关闭资源sqlSession.close();}
}在程序中调用了两次selectAll()方法却只执行了一次SQL语句 1、一级缓存失效的情况 1执行的查询条件不同或者SQL语句不同 2两次相同的SQL语句查询之间做了增删改的操作 3手动提交事务也会清空一级缓存 4手动清空缓存clearCache() 三、二级缓存 一级缓存只在一次SqlSession会话有效为进一步扩大数据共享的范围缓解数据库的压力可手动开启MyBatis二级缓存 写入二级缓存的实例对象需要实现序列化接口 1、手动开启二级缓存cacheEnabled 在MyBatis全局配置文件中设置setting标签 cacheEnabled全局性地开启或关闭所有映射器配置文件中已配置的任何缓存 !-- 全局开启二级缓存--setting namecacheEnabled valuetrue/ 在mapper映射文件中添加cache标签 2、二级缓存机制 1手动提交事务会将一级缓存写入二级缓存 2SqlSession会话对象关闭时会将一级缓存写入二级缓存。 四、MyBatis实现分页
1、配置环境 1在pom.xml中引入pagehelper依赖 dependencygroupIdcom.github.pagehelper/groupIdartifactIdpagehelper/artifactIdversion5.3.2/version/dependency 2在mybatis全局配置文件中添加plugins标签 pluginsplugin interceptorcom.github.pagehelper.PageInterceptor/plugin/plugins
2、startPage()开启分页 在调用方法查询记录之前调用PageHelper类中的startPage()方法开启分页 pageNum当前页码 pageSize每页显示的数量 3、PageInfo查询分页信息
1PageInfo对象 创建PageInfo对象PageInfo有参构造的参数为查询获取的集合直接输出PageInfo对象为分页信息导航 2 getList()方法 获取当前页面的分页信息 3getTotal()方法 总记录数 package com.mybatis.mapper;import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.mybatis.entity.Admin;
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 org.junit.Before;
import org.junit.Test;import java.io.IOException;
import java.io.InputStream;
import java.util.List;public class SelectTest {SqlSessionFactory sqlSessionFactory null;Beforepublic void init(){InputStream resourceAsStream null;try {resourceAsStream Resources.getResourceAsStream(config/mybatis-config.xml);} catch (IOException e) {e.printStackTrace();}sqlSessionFactory new SqlSessionFactoryBuilder().build(resourceAsStream);}Testpublic void selectAll() {//创建sqlSession会话SqlSession sqlSession sqlSessionFactory.openSession();//获取AdminMapper接口动态代理对象AdminMapper mapper sqlSession.getMapper(AdminMapper.class);//开启分页//pageNum当前页码pageSize每页显示数量PageHelper.startPage(1,5);//通过接口调用方法ListAdmin adminList mapper.selectAll();for (Admin admin : adminList) {System.out.println(admin admin);}PageInfoAdmin adminPageInfo new PageInfo(adminList);System.out.println(adminPageInfo adminPageInfo);long total adminPageInfo.getTotal();System.out.println(total total);ListAdmin list adminPageInfo.getList();System.out.println(list list);//关闭资源sqlSession.close();}
}