标签:原因 pos sof epo nbsp doc word end 有一个
先说说缘由为啥今天才来学习和总结MyBatis。。
我自己学Springboot刚入门的时候,用SptingBoot+JdbcTemplate+thmysef搭建了一个bug管理平台
后来自己用自己的接口,测试DB连接数对性能的影响,TPS会特别受到程序中连接池的配置影响
后来DB中就涌现了很多数据,我的bug管理平台,有一个接口是列出所有的bug,这个页面就会特别特别地慢,于是想到分页。
在网上查找分页信息的时候,发现大多数都是针对MyBatis的,用JdbcTemplate的查询,将没有现成的分页插件,需要自己改写JdbcTemplate中的一些方法,要添加页码和每页的条数
每天依旧,工作依旧。
忽然一日得闲,又开始自学SpringBoot,于是根据教程先用springboot+MyBatis+MyBatis自动生成了Mapper和实体类。
难道MyBatis必须在SpringBoot框架中? 忽然冒出这样的疑问之后,就开始搜索MyBatis的历史,也开始最简单的学习。
mybatis是什么?最初开发出来做什么的?
MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。
2013年11月迁移到Github。
iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。
iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAOs)
http://blog.mybatis.org/ mybatis官方网站 --- 需要FQ
http://www.mybatis.cn/ MyBatis的中文官网
https://github.com/mybatis/mybatis-3/releases
下载第一个zip格式的,解压后如下图,其中有个pdf文档,可以参考用来配置mapper以及配置config文件。 License和Notice只是一些证书说明等,可以忽略。lib目录下是一些常搭配的jar包。
mybatis-xx.xx.x.jar 可以放置到自己的项目源中。用了maven的话,可以自己去找maven的路径。
mybatis是怎么用的呢?
不管是何种程序,持久化的数据都是重中之重。不可能让前段用户直接去操作数据库吧,这样都不安全,而且也不是任何一个人都会的。
所以要用程序编写页面,编写后台接口,让mybaits操作对象,就像操作数据库这么简单。
user表, user对象,一一对应
想查看,想更新,想新增,直接操作对象,就能存入持久化数据DB中
use test
select * from user
create table user(
id INT NOT NULL auto_increment primary key,
name VARCHAR(20),
age int,
phone varchar(20),
password varchar(20)
)ENGINE=InnoDB AUTO_INCREMENT=300;
insert user(name,age,phone,password) values ("王族 ",33,"18962811111","12345")
以上是创建了user表,接下来创建User对象
public class User {
private Integer id;
private String name;
private String phone;
private String password;
private Integer age;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public User(){
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name=‘" + name + ‘\‘‘ +
", phone=‘" + phone + ‘\‘‘ +
", password=‘" + password + ‘\‘‘ +
", age=" + age +
‘}‘;
}
}
表和对象都有了,现在就是mybatis的作用了,首先要进行配置config.xml,然后配置映射文件UserMapper.xml.这些在刚下载的pdf中都有介绍,有例子。
上面是项目的目录结构,我创建的有点随意,下面l两个分别是config.xml 和UserMapper.xml映射文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/test"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="UserMapper.xml"/>
</mappers>
</configuration>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="useraaa">
<select id="selectById" resultType="com.test.mybatis.entity.User">
select * from user where id = #{id}
</select>
<select id="selectAll" resultType="com.test.mybatis.entity.User">
select * from user
</select>
</mapper>
下面是如何读取配置文件config.xml,如何将UserMapper中的查询语句打印出表中的信息
用了testNG来测试,具体测试内容如下
import com.test.mybatis.entity.User;
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.testng.annotations.Test;
import java.io.IOException;
import java.io.InputStream;
import java.io.Reader;
import java.util.List;
public class TestMyBatis {
@Test(description = "通过InputStream读取配置config文件")
public void TestInputStream() throws IOException {
String resource = "config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sessionFactory= new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session =sessionFactory.openSession();
String statement = "useraaa.selectById";
User user = session.selectOne(statement,300);
System.out.println(user);
session.close();
}
@Test(description = "通过Reader读取配置config文件")
public void Reader() throws IOException {
Reader reader =Resources.getResourceAsReader("config.xml");
SqlSessionFactory sessionFactory= new SqlSessionFactoryBuilder().build(reader);
SqlSession session =sessionFactory.openSession();
String statement = "useraaa.selectById";
User user = session.selectOne(statement,300);
System.out.println(user);
session.close();
}
@Test(description = "读取所有的对象")
public void selectAll() throws IOException {
Reader reader =Resources.getResourceAsReader("config.xml");
SqlSessionFactory sessionFactory= new SqlSessionFactoryBuilder().build(reader);
SqlSession session =sessionFactory.openSession();
String statement = "useraaa.selectAll";
List<User> user = session.selectList(statement);
System.out.println(user);
session.close();
}
}
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>mybatis01</groupId>
<artifactId>mybatis</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.14</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.testng/testng -->
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.14.3</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
mybatis使用中要注意的地方?
1. config.xml 和 Mapper.xml 中的头部分要复制正确,是不一样的,config中是configration,后者是Mapper
2. config.xml中数据的连接url,驱动,用户名和密码要全部填写正确
3.UserMapper.xml中的namespace 要用到,之后读取的是namespace.select的id的值,如下
4. 有很多报错原因是两个xml中的路径没有写对,pay attention~
标签:原因 pos sof epo nbsp doc word end 有一个
原文地址:https://www.cnblogs.com/qianjinyan/p/10346569.html