一、什么是mybatis
一直以来我都觉得,我们要学习一样新的知识的时候,不能盲目的学习,最起码我们要知道这个东西是什么,有什么用,怎么用。
MyBatis 是一款优秀的持久层框架。它是支持定制化 SQL、存储过程和高级映射的。它能够使用简单的xml或者是注解来配置和映射原生信息。将接口和Java的pojos映射成数据库中的记录。使用mybatis可以让sql语句和程序代码解耦。提高可维护性。
二、mybatis的使用
1、导入jar包
因为我是用的maven,所以在pom.xml文件里添加,要是用别的框架就要手动导入一下jar包。
<!-- mybatis -->
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
2、我们要创建一个mybatis-config.xml来配置mybatis
<?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="default"> <!-- 默认环境-->
<environment id="default">
<transactionManager type="JDBC"></transactionManager> <!--JDBC表示自己控制sql语句-->
<dataSource type="POOLED"> <!--配置数据源,POOLED表示用C3P0-->
<property name="driver" value="com.mysql.cj.jdbc.Driver"></property>
<property name="url"
value="jdbc:mysql://localhost:3306/spring?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true"></property>
<property name="username" value="root"></property>
<property name="password" value="000000"></property>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="mappers/UserMapper.xml"/> <!--关联相关映射文件-->
</mappers>
</configuration>
3、我们要创建一个相关映射文件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"> <!--这个头部和mybatis-config.xml的头部是不同的-->
<mapper namespace="test">
<select id="queryAllUser"
resultType="net.seehope.spring.project.pojo.User"> <!-- resultType返回的数据结果类型,用实体类的全限定名 -->
select * from user
</select>
</mapper>
4、测试
import java.io.IOException;
import java.util.Date;
import java.util.List;
import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
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 net.seehope.spring.project.pojo.UUIDUser;
import net.seehope.spring.project.pojo.User;
public class MybatisMain {
public static void main(String[] args) throws IOException {
try {
System.out.println("進入MybatisMain");
//导入配置文件
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis-config.xml"));
//打开一个会话
SqlSession session = sessionFactory.openSession();
//查询全部
// List<User> users = session.selectList("queryAllUser");
// for (User user : users) {
// System.out.println(ReflectionToStringBuilder.toString(user,ToStringStyle.MULTI_LINE_STYLE));
// }
//根据id查询
// User user= session.selectOne("queryUserById",1);
//根据用户名模糊查询
User user=session.selectOne("queryUserByUsername","李四");
//插入
// session.insert("insertUser",user);
//更改
// session.update("updateUser",3);
//刪除
// session.delete("delUserById",3);
//输出
System.out.println(ReflectionToStringBuilder.toString(user,ToStringStyle.MULTI_LINE_STYLE));
//uuid插入
UUIDUser uuidUser = new UUIDUser("uuidId", new Date().toString());
session.insert("insertUUIDUser",uuidUser);
session.commit();//提交会话
session.close();//关闭会话
} catch (IOException e) {
e.printStackTrace();
}
}
}