MyBatis-1入门
1.创建数据库
CREATE TABLE `tbuser` (
`age` int(11) NOT NULL,
`name` varchar(30) NOT NULL DEFAULT '' COMMENT '用户名',
`sex` varchar(30) NOT NULL COMMENT '密码'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
2.创建spring boot项目
1.添加依赖
<!-- mysql依赖 mybatis底层还是要用MySQL实现-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.2.8</version>
</dependency>
2.创建持久化对象(pojo)
User.java
package nuc.edu.cn.pojo;
/**
* @Author: Rwenjie
* @ProjectName: mybatis-1
* @Description:
* @Date: 2019/10/30 21:39
**/
public class User {
private String name;
private String sex;
private Integer age;
public User() {
}
public User(String name, String sex, Integer age){
super();
this.age = age;
this.name = name;
this.sex = sex;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
3.写xml文件
mybatis是通过xml文件去完成持久化类和数据表之间的映射关系的。
UserMapping.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:命名空间,随便写,一般保证命名空间唯一 -->
<mapper namespace="mapper.UserMapper"><!--为这个mapper指定唯一的一个namespace-->
<!--namespace的值一般为(包名)+ UserMapper(文件名去掉。xml后缀)-->
<!--id必须是唯一的, 不能够重复-->
<!--paramType属性指明插入时使用的参数类型-->
<!--useGeneratedKeys="true" 表面使用数据库的自动增长策略,这需要底层数据库的支持-->
<insert id="save" parameterType="nuc.edu.cn.pojo.User" useGeneratedKeys="true">
insert into tbuser(name, sex, age) values(#{name}, #{sex}, #{age})
</insert>
</mapper>
4.在 mybatis-confin.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>
<!-- 指定mybatis 所用日志的具体实现 -->
<settings>
<setting name="logImpl" value="LOG4J"/>
</settings>
<!-- 环境配置, 即连接的数据库。可以配置多个,default:指定采用哪个环境 -->
<environments default="test">
<!-- id:唯一标识 -->
<environment id="test">
<!-- 指定事务管理器类型,type="JDBC"指直接使用了JDBC的提交和回滚设置 -->
<transactionManager type="JDBC" />
<!-- 数据源,池类型的数据源 -->
<!-- dateSoure指数据源配置, POOLED是JDBC连接对象的数据源连接池的实现。 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver" />
<property name="url" value="jdbc:mysql://127.0.0.1:3306/rwenjie?serverTimezone=UTC" />
<property name="username" value="root" />
<property name="password" value="123456" />
</dataSource>
</environment>
</environments>
<!-- mappers 告诉mybatis到哪里去找持久化类的映射文件 -->
<mappers>
<mapper resource="mapper/UserMapper.xml"/>
</mappers>
</configuration>
5.编写测试类
MybatisTest.java
package nuc.edu.cn.mybatis;
import java.io.InputStream;
import nuc.edu.cn.pojo.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;
/**
* @Author: Rwenjie
* @ProjectName: mybatis-1
* @Description:
* @Date: 2019/10/31 10:23
**/
public class MyBatisTest {
/**
* 程序先创建一个User对象, 再用SQLSession的insert()方法来保存User对象
**/
public static void main(String[] args) throws Exception {
//读取mybatis-config.xml文件
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
//初始化mybatis, 创建sqlSessionFactory类实例
SqlSessionFactory sqlSessionFactory= new SqlSessionFactoryBuilder().build(inputStream);
//创建Session 实例
SqlSession session = sqlSessionFactory.openSession();
//创建User对象
User user = new User("admin", "nan", 22);
System.out.println(user);
//插入数据
session.insert("mapper.UserMapper.save", user);
//提交事务
session.commit();
//关闭session
session.close();
}
}
6.为了查看控制台输出的SQL语句, 需要加入日志框架LOG4J的相关的jar包。并在templates下添加一个log4j.properties文件
pom.xml导入依赖
<!--会自动引入log4j以及slf4j-api-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.5</version>
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