1、新建maven项目
File-->New-->Project
![](https://img.haomeiwen.com/i6618542/d8654be9073d7619.jpg)
左侧选择maven,然后点击Next
![](https://img.haomeiwen.com/i6618542/ccc4ddc2cfc19ff1.jpg)
输入项目名和包名,然后点击Next
![](https://img.haomeiwen.com/i6618542/6f370b283b09e6fb.jpg)
点击finish,完成搭建maven项目
![](https://img.haomeiwen.com/i6618542/ffee86669ca2cf92.jpg)
2、添加maven依赖
pom.xml
<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>com.ljessie</groupId>
<artifactId>mybatis-demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.16</version>
</dependency>
</dependencies>
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
</build>
</project>
3、mybatis-config配置文件
src\main\resources文件夹下,新建dbconfig.properties
jdbc.driver = com.mysql.cj.jdbc.Driver
jdbc.url = jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT
jdbc.username = root
jdbc.password = 123456
还是在resources文件夹下,新建mybatis-config.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>
<properties resource="dbconfig.properties"></properties>
<!--
settings包含了很多重要的设置项
mapUnderscoreToCamelCase:开启驼峰命名
logImpl:开启控制台打印sql语句
-->
<settings>
<setting name="mapUnderscoreToCamelCase" value="true"/>
<setting name="logImpl" value="STDOUT_LOGGING" />
<!-- 开启延迟加载-->
<setting name="lazyLoadingEnabled" value="true"/>
<setting name="aggressiveLazyLoading" value="false"/>
<!-- 开启二级缓存-->
<setting name="cacheEnabled" value="true"/>
</settings>
<!--
别名处理器,可以为Java类型取别名,别名不区分大小写
1、typeAlias:为每个类起一个别名
2、package:为包下的所有类批量起别名
name:指定包名,当前包下的所有类都起一个默认名(类名首字母小写)
3、@Alias注解给某个类起别名
-->
<typeAliases>
<package name="com.ljessie.mybatisdemo"/>
<!-- <typeAlias type="com.ljessie.mybatisdemo.entity.Student" alias="Student"/>-->
<!-- <typeAlias type="java.lang.Integer" alias="Integer"/>-->
<!-- <typeAlias type="java.lang.Long" alias="Long"/>-->
<!-- <typeAlias type="java.util.HashMap" alias="HashMap"/>-->
<!-- <typeAlias type="java.util.LinkedHashMap" alias="LinkedHashMap"/>-->
<!-- <typeAlias type="java.util.ArrayList" alias="ArrayList"/>-->
<!-- <typeAlias type="java.util.LinkedList" alias="LinkedList"/>-->
</typeAliases>
<!--
mybatis可以配置多个环境
environment:配置一个具体的环境信息,transactionManager和dataSource必须有,default指定使用哪种环境,可以达到快速切换
transactionManager:配置事务管理器,type:事务管理器的类型
dataSource:数据源
type:UNPOOLED,不适用连接池;POOLED,使用连接池;JNDI。
自定义数据源:实现DataSourceFactory接口,type是全类名。
-->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<!-- 将sql映射注册到全局配置中-->
<mappers>
<!--
注册一个sql映射
resource:引用类路径下的资源
class:直接引用接口
推荐比较重要的Dao接口,来写sql映射文件;不重要的Dao接口,使用注解
-->
<!-- package:批量注册-->
<package name="com.ljessie.mybatisdemo.dao"/>
</mappers>
</configuration>
4、数据准备
新建表student
CREATE TABLE `student` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
`department_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
)
5、SqlSession工具类
src\main\java文件夹下,新建com.ljessie.mybatisdemo包,然后新建SqlSessionUtil.java
package com.ljessie.mybatisdemo;
import java.io.IOException;
import java.io.InputStream;
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 SqlSessionUtil {
private static SqlSessionFactory factory;
static {
String resource = "mybatis-config.xml";
InputStream inputStream;
try {
inputStream = Resources.getResourceAsStream(resource);
factory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
public static SqlSession getSqlSession() {
return factory.openSession();
}
}
6、数据库访问接口及映射文件
新建com.ljessie.mybatisdemo.entity包
新建实体类Student.java
package com.ljessie.mybatisdemo.entity;
import java.io.Serializable;
public class Student implements Serializable {
private int id;
private String name;
private int age;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Student() {
}
public Student(int id,String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Student{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
'}';
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
新建com.ljessie.mybatisdemo.dao包
新建StudentDao.java
public interface StudentDao {
Student findStudentByID(int id);
}
com.ljessie.mybatisdemo.dao包下新建StudentDao.xml。
这里xml文件和上面定义的接口文件的文件名必须一样,mapper标签下namespace属性必须是接口的全类名。
<?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="com.ljessie.mybatisdemo.dao.StudentDao">
<!-- Student findStudentByID(String ID);-->
<select id="findStudentByID" resultType="Student">
select * from student where id = #{ID}
</select>
</mapper>
7、新建测试类
StudentTest.java
package com.ljessie.mybatisdemo;
import com.ljessie.mybatisdemo.dao.StudentDao;
import com.ljessie.mybatisdemo.entity.Student;
import org.apache.ibatis.session.SqlSession;
public class StudentTest {
public static void main(String[] args) {
SqlSession sqlSession = null;
try {
sqlSession = SqlSessionUtil.getSqlSession();
StudentDao mapper = sqlSession.getMapper(StudentDao.class);
Student student = mapper.findStudentByID(4);
System.out.println(student);
sqlSession.commit();
} catch(Exception e) {
e.printStackTrace();
}
finally {
sqlSession.close();
}
}
}
控制台输出
C:\develop_tools\Java\jdk1.8.0_201\bin\java.exe -Dvisualvm.id=481201014905700 -javaagent:C:\develop_tools\idea\lib\idea_rt.jar=64858:C:\develop_tools\idea\bin -Dfile.encoding=UTF-8 -classpath C:\develop_tools\Java\jdk1.8.0_201\jre\lib\charsets.jar;C:\develop_tools\Java\jdk1.8.0_201\jre\lib\deploy.jar;C:\develop_tools\Java\jdk1.8.0_201\jre\lib\ext\access-bridge-64.jar;C:\develop_tools\Java\jdk1.8.0_201\jre\lib\ext\cldrdata.jar;C:\develop_tools\Java\jdk1.8.0_201\jre\lib\ext\dnsns.jar;C:\develop_tools\Java\jdk1.8.0_201\jre\lib\ext\jaccess.jar;C:\develop_tools\Java\jdk1.8.0_201\jre\lib\ext\jfxrt.jar;C:\develop_tools\Java\jdk1.8.0_201\jre\lib\ext\localedata.jar;C:\develop_tools\Java\jdk1.8.0_201\jre\lib\ext\nashorn.jar;C:\develop_tools\Java\jdk1.8.0_201\jre\lib\ext\sunec.jar;C:\develop_tools\Java\jdk1.8.0_201\jre\lib\ext\sunjce_provider.jar;C:\develop_tools\Java\jdk1.8.0_201\jre\lib\ext\sunmscapi.jar;C:\develop_tools\Java\jdk1.8.0_201\jre\lib\ext\sunpkcs11.jar;C:\develop_tools\Java\jdk1.8.0_201\jre\lib\ext\zipfs.jar;C:\develop_tools\Java\jdk1.8.0_201\jre\lib\javaws.jar;C:\develop_tools\Java\jdk1.8.0_201\jre\lib\jce.jar;C:\develop_tools\Java\jdk1.8.0_201\jre\lib\jfr.jar;C:\develop_tools\Java\jdk1.8.0_201\jre\lib\jfxswt.jar;C:\develop_tools\Java\jdk1.8.0_201\jre\lib\jsse.jar;C:\develop_tools\Java\jdk1.8.0_201\jre\lib\management-agent.jar;C:\develop_tools\Java\jdk1.8.0_201\jre\lib\plugin.jar;C:\develop_tools\Java\jdk1.8.0_201\jre\lib\resources.jar;C:\develop_tools\Java\jdk1.8.0_201\jre\lib\rt.jar;C:\workspace\mybatis-demo\target\classes;C:\Users\zbw\.m2\repository\org\mybatis\mybatis\3.4.6\mybatis-3.4.6.jar;C:\Users\zbw\.m2\repository\mysql\mysql-connector-java\8.0.16\mysql-connector-java-8.0.16.jar;C:\Users\zbw\.m2\repository\com\google\protobuf\protobuf-java\3.6.1\protobuf-java-3.6.1.jar com.ljessie.mybatisdemo.StudentTest
Logging initialized using 'class org.apache.ibatis.logging.stdout.StdOutImpl' adapter.
PooledDataSource forcefully closed/removed all connections.
PooledDataSource forcefully closed/removed all connections.
PooledDataSource forcefully closed/removed all connections.
PooledDataSource forcefully closed/removed all connections.
Created connection 1863932867.
Returned connection 1863932867 to pool.
Cache Hit Ratio [com.ljessie.mybatisdemo.dao.StudentDao]: 0.0
Opening JDBC Connection
Checked out connection 1863932867 from pool.
Setting autocommit to false on JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@6f195bc3]
==> Preparing: select * from student where id = ?
==> Parameters: 4(Integer)
<== Columns: id, name, age, department_id
<== Row: 4, 张三, 25, 2
<== Total: 1
Student{id=4, name='张三', age=25, department=null}
Resetting autocommit to true on JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@6f195bc3]
Closing JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@6f195bc3]
Returned connection 1863932867 to pool.
Process finished with exit code 0
网友评论