案例准备:
创建测试表:
-- 创建测试表
CREATE TABLE `tb_user` (`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',`user_name` varchar(20) NOT NULL COMMENT '用户名',`password` varchar(20) NOT NULL COMMENT '密码',`name` varchar(30) DEFAULT NULL COMMENT '姓名',`age` int(11) DEFAULT NULL COMMENT '年龄',`email` varchar(50) DEFAULT NULL COMMENT '邮箱',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
-- 插入测试数据
INSERT INTO `tb_user` (`id`, `user_name`, `password`, `name`, `age`, `email`) VALUES
('1', 'zhangsan', '123456', '张三', '18', 'test1@itcast.cn');
INSERT INTO `tb_user` (`id`, `user_name`, `password`, `name`, `age`, `email`) VALUES
('2', 'lisi', '123456', '李四', '20', 'test2@itcast.cn');
INSERT INTO `tb_user` (`id`, `user_name`, `password`, `name`, `age`, `email`) VALUES
('3', 'wangwu', '123456', '王五', '28', 'test3@itcast.cn');
INSERT INTO `tb_user` (`id`, `user_name`, `password`, `name`, `age`, `email`) VALUES
('4', 'zhaoliu', '123456', '赵六', '21', 'test4@itcast.cn');
INSERT INTO `tb_user` (`id`, `user_name`, `password`, `name`, `age`, `email`) VALUES
('5', 'sunqi', '123456', '孙七', '24', 'test5@itcast.cn');
第一步:创建一个maven工程 ,导入坐标;
org.apache.maven.plugins maven-compiler-plugin 1.8 1.8 com.baomidou mybatis-plus 3.1.1 mysql mysql-connector-java 5.1.47 com.alibaba druid 1.0.11 org.projectlombok lombok 1.18.4 junit junit 4.12 org.slf4j slf4j-log4j12 1.6.4
第二步:在resource文件中创建log4j.properties、jdbc.properties、mybatis-config.xml等配置文件
log4j文件:
log4j.rootLogger=DEBUG,A1
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=[%t] [%c]-[%p] %m%n
jdbc文件:
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mp?useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true&useSSL=false
jdbc.username=root
jdbc.password=sa123
mybatis-config:
第三步:创建User实体类对象;(这里使用lombok进行了进化bean操作)
package pojo;import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;@Data
@NoArgsConstructor//创建无参构造函数
@AllArgsConstructor//创建所有参数的构造函数
@TableName("tb_user")
public class User {private Long id;private String userName;private String password;private String name;private Integer age;private String email;
}
第四步:编写UserMapper接口
package Mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import pojo.User;import java.util.List;public interface UserMapper extends BaseMapper {List findAll();
}
第五步:配置UserMapper配置文件
第六步:在测试文件中测试
import Mapper.UserMapper;
import com.baomidou.mybatisplus.core.MybatisSqlSessionFactoryBuilder;
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.Test;
import pojo.User;import javax.annotation.Resource;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;public class MPtest {//使用mybatis自定义方法查询tb_user所有的数据@Testpublic void test() throws IOException {String resouce="mybatis-config.xml";InputStream inputStream = Resources.getResourceAsStream(resouce);SqlSessionFactory build = new SqlSessionFactoryBuilder().build(inputStream);SqlSession sqlSession = build.openSession();UserMapper mapper = sqlSession.getMapper(UserMapper.class);List all = mapper.findAll();for(User user:all){System.out.println(user);}}//使用Mybatis+MP技术查询所有数据@Testpublic void mptest() throws IOException {String resouce="mybatis-config.xml";InputStream inputStream = Resources.getResourceAsStream(resouce);SqlSessionFactory build = new MybatisSqlSessionFactoryBuilder().build(inputStream);SqlSession sqlSession = build.openSession();UserMapper mapper = sqlSession.getMapper(UserMapper.class);List all = mapper.selectList(null);for(User user:all){System.out.println(user);}}
}
test测试控制台打印:
执行语句:select * from tb_user
[main] [org.apache.ibatis.datasource.pooled.PooledDataSource]-[DEBUG] Created connection 1427651360.
[main] [org.apache.ibatis.transaction.jdbc.JdbcTransaction]-[DEBUG] Setting autocommit to false on JDBC Connection [com.mysql.jdbc.JDBC4Connection@55183b20]
[main] [Mapper.UserMapper.findAll]-[DEBUG] ==> Preparing: select * from tb_user
[main] [Mapper.UserMapper.findAll]-[DEBUG] ==> Parameters:
[main] [Mapper.UserMapper.findAll]-[DEBUG] <== Total: 6
User(id=1, userName=null, password=123456, name=张三, age=18, email=test1@itcast.cn)
User(id=2, userName=null, password=123456, name=李四, age=20, email=test2@itcast.cn)
User(id=3, userName=null, password=123456, name=王五, age=28, email=test3@itcast.cn)
User(id=4, userName=null, password=123456, name=赵六, age=21, email=test4@itcast.cn)
User(id=5, userName=null, password=123456, name=孙七, age=24, email=test5@itcast.cn)
User(id=9, userName=null, password=123456, name=刘备, age=30, email=liubei@itcast.cn)
mptest测试控制台打印:
执行语句:SELECT id,user_name,password,name,age,email FROM tb_user
[main] [org.apache.ibatis.datasource.pooled.PooledDataSource]-[DEBUG] Created connection 1661406123.
[main] [org.apache.ibatis.transaction.jdbc.JdbcTransaction]-[DEBUG] Setting autocommit to false on JDBC Connection [com.mysql.jdbc.JDBC4Connection@63070bab]
[main] [Mapper.UserMapper.selectList]-[DEBUG] ==> Preparing: SELECT id,user_name,password,name,age,email FROM tb_user
[main] [Mapper.UserMapper.selectList]-[DEBUG] ==> Parameters:
[main] [Mapper.UserMapper.selectList]-[DEBUG] <== Total: 6
User(id=1, userName=zhangsan, password=123456, name=张三, age=18, email=test1@itcast.cn)
User(id=2, userName=lisi, password=123456, name=李四, age=20, email=test2@itcast.cn)
User(id=3, userName=wangwu, password=123456, name=王五, age=28, email=test3@itcast.cn)
User(id=4, userName=zhaoliu, password=123456, name=赵六, age=21, email=test4@itcast.cn)
User(id=5, userName=sunqi, password=123456, name=孙七, age=24, email=test5@itcast.cn)
User(id=9, userName=liubei, password=123456, name=刘备, age=30, email=liubei@itcast.cn)
都查询出了所有的数据
MyBatis-Plus(简称 MP )是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
在上面案例可以知道,MyBatis的dao接口继承BaseMapper接口就可以MyBatisPlus了,可以自定义方法,也可以使用
Mybatis-Plus 在 MyBatis 之上套了一层外衣,单表 CURD 的操作几乎都可以由 MyBatis-Plus 代替执行。而且提供了各种查询方式,分页行为。作为使用者无需编写 xml,直接调用 MyBatis-Plus 提供的 API 就可以了。