注意 : MySQL 的 版本
Mybatis创建基本流程
Mybatis核心类和接口
1 基础配置
pom.xml
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.3</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.48</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.6</version>
<scope>provided</scope>
</dependency>
<!-- 读取Java的配置文件 -->
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
<include>**/*.properties</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.xml</include>
<include>**/*.properties</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>
</dependencies>
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>
<!-- 配置环境 -->
<environments default="mysql">
<!-- 配置MySQL环境 -->
<environment id="mysql">
<!--配置事务的类型 -->
<transactionManager type="JDBC"/>
<!-- 配置数据源(连接池) -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3366/user?useSSL=true&useUnicode=true&characterEncoding=UTF-8"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<!-- 指定映射配置文件的位置 -->
<mappers>
<mapper resource="com/jsl/mapper/IUserMapper.xml"/>
</mappers>
</configuration>
SqlSession工具类
package com.jsl.utils;
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 java.io.IOException;
import java.io.InputStream;
public class CreateSqlSession {
private static SqlSessionFactory sqlSessionFactory;
static {
try {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
public static SqlSession getSqlSeesion(){
return sqlSessionFactory.openSession();
}
}
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">
<mapper namespace="com.jsl.mapper.IUserMapper">
<select id="getAllUser" resultType="com.jsl.pojo.User">
select * from user.users
</select>
</mapper>
2 优化配置
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="db.properties">
<!-- <property name="username" value="root"></property>
<property name="password" value="111111"></property>
-->
</properties>
<environments default="mysql">
<environment id="mysql">
<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}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/jsl/mapper/userMapper.xml"/>
</mappers>
</configuration>
db.properties
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3366/user?useSSL=true&useUnicode=true&characterEncoding=UTF-8
username=root
password=123456
username 和 password 优先使用 db.properties文件
类型别名
typeAliases 降低冗余的全限定类名
-
mybatis-config.xml中配置 typeAlias
<typeAliases> <typeAlias alias="User" type="com.jsl.pojo.User"></typeAlias> </typeAliases>
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"> <mapper namespace="com.jsl.mapper.IUserMapper"> <select id="getAllUser" resultType="User"> select * from user.users </select> </mapper>
-
mybatis-config.xml中配置 package
MyBatis 会在包名下面搜索需要的 Java Bean
<typeAliases> <package name="com.jsl.pojo"></package> </typeAliases>
xml映射文件中resultType值,需要和 Java Bean类名相同(建议首字母小写)
<?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.jsl.mapper.IUserMapper"> <select id="getAllUser" resultType="user"> select * from user.users </select> </mapper>
Java Bean 注解 @Alias("###")
为解决mybatis-config.xml配置中 package 造成resultType值的固定,加入了@Alias("#")
通过注解 赋值 resultType 。 注解不写也行,但要保证resultType的值与实体类名相同
@Alias("user")
public class User {
private int id;
private String username;
}
日志实现
mybatis-config.xml文件 中配置 settings
<settings>
<setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>
XML映射语句文件
注解 ,映射SQL语句
mybatis-config.xml文件
<mappers>
<mapper class="com.jsl.mapper.IUserMapper"/>
</mappers>
接口IUserMapper
public interface IUserMapper {
@Select("select * from user.users")
List<User> getAllUser();
@Select("select * from user.users where id = #{userId}")
User getUserById(@Param("userId") int id);
}