Mybatis第一篇【Mybatis入门】
快速入门
步骤:
1. 导入相关jar包
- mybatis-3.5.4.jar
- commons-logging-1.2.jar
- log4j-1.2.12.jar
- cglib-2.2.5.jar
- asm-3.3.1.jar
- mysql-connector-java-8.0.19.jar
2. 配置mybatis.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"></properties>
<!-- 开启驼峰匹配 -->
<settings>
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
<!-- 使用扫描包,扫描指定包下的所有类,扫描之后的别名就是类名(不区分大小写),建议使用的时候和类名一致。 -->
<typeAliases>
<package name="com.example.demo.entity" />
</typeAliases>
<environments default="mysql_development">
<environment id="mysql_development">
<transactionManager type="jdbc"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="${mysql.driver}"/>
<property name="url" value="${mysql.url}"/>
<property name="username" value="${mysql.username}"/>
<property name="password" value="${mysql.password}"/>
</dataSource>
</environment>
<environment id="oracle_development">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="${oracle.driver}"/>
<property name="url" value="${oracle.url}"/>
<property name="username" value="${oracle.username}"/>
<property name="password" value="${oracle.password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<!-- 配置关系映射文件路径 -->
<mapper resource="Mapper/UserMapper.xml"/>
</mappers>
</configuration>
起别名:
<typeAliases>
<!--type:实体类的全类名。alias:别名,通常首字母大写-->
<!--<typeAlias type="com.example.demo.entity.User" alias="User"/>-->
<package name="com.example.demo.entity"/>
</typeAliases>
配置映射文件的方法:
<mapper resource="mapper/UserMapper.xml"/><package name="com.example.demo.mapper"/>包扫描的方式,必须使用注解方式,即在接口方法上使用注解,如@Select("select * from tb_user ")<mapper class="com.example.demo.mapper.UserMapper"/>要求:mapper.xml文件和mapper接口的名字相同,且在同一包下(如果使用注解的话,mapper.xml的命名空间要和mapper接口的全类名相同)<mapper url="file:///F:/MyProjects/mybatis2/src/main/resources/com/example/demo/mapper/UserMapper.xml"/>
3. 创建数据库配置文件
mysql.driver=com.mysql.cj.jdbc.Driver
mysql.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC
mysql.username=root
mysql.password=12345678
4. 配置log4j.properties
log4j.rootLogger=DEBUG,A1
log4j.logger.org.apache=DEBUG
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c]-[%p] %m%n
5. 创建实体类
@Data
public class User implements Serializable {
private Integer id;
private String username;
private String password;
private Integer age;
private String sex;
public User(Integer id, String username, String password, Integer age, String sex) {
this.id = id;
this.username = username;
this.password = password;
this.age = age;
this.sex = sex;
}
}
6. 编写mapper接口
可以采用注解或xml的方式
public interface UserMapper {
int insert(User user);
@Select("select * from user")
List<User> select();
}
7. 创建关系映射文件
<?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属性是名称空间,必须唯一 -->
<mapper namespace="com.demo.mapper.UserMapper">
<!-- sql片段 -->
<sql id="userSql">
id,
username,
password,
age,
sex
</sql>
<!-- resultMap标签:实体类和表的映射
type属性:表示实体全路径名,可起别名
id属性:为实体与表的映射取一个任意的唯一的名字
-->
<resultMap type="User" id="UserMap">
<!-- id标签:映射主键属性
result标签:映射非主键属性
property属性:实体的属性名
column属性:表的字段名
-->
<id property="id" column="id"/>
<result property="username" column="username"/>
<result property="password" column="password"/>
<result property="age" column="age"/>
<result property="sex" column="sex"/>
</resultMap>
<insert id="insert" parameterType="User">
insert into user (id,username,password,age,sex) values (#{id},#{username},#{password},#{age},#{sex})
</insert>
</mapper>
8. 创建Mybatis工具类
public class MybatisUtil {
private static ThreadLocal<SqlSession> threadLocal = new ThreadLocal<>();
private static SqlSessionFactory sqlSessionFactory;
static {
try {
//加载位于src/mybatis.xml配置文件
Reader resourceAsReader = Resources.getResourceAsReader("mybatis.xml");
sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsReader);
} catch (IOException e) {
e.printStackTrace();
}
}
private MybatisUtil(){}
//获取sqlSession
public static SqlSession getSqlSession() {
SqlSession sqlSession = threadLocal.get();
if (sqlSession == null)
sqlSession=sqlSessionFactory.openSession();
threadLocal.set(sqlSession);
return sqlSession;
}
//获取mapper
public static <T> T getMapper(Class<T> clazz){
return getSqlSession().getMapper(clazz);
}
//关闭sqlSession
public static void close() {
SqlSession sqlSession = threadLocal.get();
if (sqlSession != null)
sqlSession.close();
//分开当前线程与SqlSession对象的关系,目的是让GC尽早回收
threadLocal.remove();
}
}
9. 测试
public void test(){
SqlSession sqlSession = MybatisUtil.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<User> select = mapper.select();
//开启自动提交
sqlSession.commit();
for (User user : select) {
System.out.println(user);
}
sqlSession.close();
MybatisUtil.close();
}
结果:


浙公网安备 33010602011771号