电脑系统:macos11
开发工具:IntelliJ IDEA 2021.2.3
maven版本:apache-maven-3.8.4-bin
tomcat版本:apache-tomcat-9.0.58
mybatis版本:3.5.9
mysql版本:8.0.28
第一步:创建maven项目:https://www.jianshu.com/p/380c05c54d0d
第二步:在pom.xml中添加以下代码,管理jar包(在https://mvnrepository.com/上搜索mybatis可以选择相应的版本)
<groupId>mysql
<artifactId>mysql-connector-java
<version>8.0.28
<groupId>org.mybatis
<artifactId>mybatis
<version>3.5.9
</dependency>
//单元测试
<groupId>junit
<artifactId>junit
<version>4.12
</dependency>
第三步:配置参数
mybatis是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架。mybatis 消除 了几乎所有的 JDBC 代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML 或注解用于配置和原始映射,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java 对象)映射成数据库中的记录。
每个mybatis应用程序主要都是使用SqlSessionFactory实例的,一个SqlSessionFactory实例可以通过SqlSessionFactoryBuilder获得。SqlSessionFactoryBuilder可以从一个xml配置文件或者一个预定义的配置类的实例获得。
用xml文件构建SqlSessionFactory实例是非常简单的事情。推荐在这个配置中使用类路径资源(classpath resource),但你可以使用任何Reader实例,包括用文件路径或file://开头的url创建的实例。mybatis有一个实用类----Resources,它有很多方法,可以方便地从类路径及其它位置加载资源。
1)在resources中创建conf.xml和db.properties,不要放在java文件夹下
2)配置数据库连接信息:
<?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">
<properties resource="aaa/db.properties"/>
<package name="com.springdemo.model"/>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
userMapper.xml位于src/resources这个包下,所以resource写成aaa/userMapper.xml-->
<mapper resource="aaa/userMapper.xml"/>
</configuration>
3)在db.properties配置数据库连接信息
driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/数据库名字?useUnicode=false&characterEncoding=utf-8&useSSL=false
username=root
password=pass1234
4)创建数据库UserTable表对应的实体类
package com.springdemo.model;
public class User {
public User(String username, String password) {
this.username = username;
this.password = password;
}
@Override
public StringtoString() {
return "User{" +
"username='" +username +'\'' +
", password='" +password +'\'' +
'}';
}
private Stringusername;
private Stringpassword;
public StringgetUsername() {
return username;
}
public StringgetPassword() {
return password;
}
}
5)创建UserTable表对应的查询映射文件UserMapper.xml
<?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">
例如namespace="com.springdemo.mapping.userMapper"就是com.springdemo.mapping(包名)+userMapper(userMapper.xml文件去除后缀)
-->
<mapper namespace="com.springdemo.mapping.userMapper">
使用parameterType属性指明查询时使用的参数类型,resultType属性指明查询返回的结果集类型
resultType="com.springdemo.model.User"就表示将查询结果封装成一个User类的对象返回
User类就是users表所对应的实体类
-->
<select id="getUser" parameterType="int"
resultType="com.springdemo.model.User"> <!-- 创建对应user实体类的位置 --> select * from UserTable where userId = #{id}
</mapper>
6)使用Test.java测试连接
package com.springdemo;
import java.io.IOException;
import java.io.InputStream;
//import java.io.Reader;
//import java.util.List;
import com.springdemo.model.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;
public class Test {
public static void main(String[] args)throws IOException {
//mybatis的配置文件
String resource ="aaa/conf.xml";
//使用类加载器加载mybatis的配置文件(它也加载关联的映射文件)
InputStream is = Resources.getResourceAsStream(resource);
//构建sqlSession的工厂
SqlSessionFactory sessionFactory =new SqlSessionFactoryBuilder().build(is);
SqlSession session = sessionFactory.openSession();
/**
* 映射sql的标识字符串,
* me.gacl.mapping.userMapper是userMapper.xml文件中mapper标签的namespace属性的值,
* getUser是select标签的id属性值,通过select标签的id属性值就可以找到要执行的SQL
*/
/* 根据——key查找 */
String statement ="com.springdemo.mapping.userMapper.getUser";
//映射sql的标识字符串,getUser与映射文件中配置select标签id一致
//执行查询返回一个唯一user对象的sql
User user = session.selectOne(statement, 1000);
System.out.println(user);
}
}
执行结果:
网友评论