ssm学习笔记23001-mybatis接入和数据库连接实现一个插入数据的操作
mybatis:
是什么,用来干嘛的,同类竞品中有何种优势?
mybatis在idea中的引入:
1、创建一个空工程
2、创建一个空的maven文件:
会自动生成一个pox文件,打包类型配置为jar,添加 mybatis的依赖,mysql驱动依赖,junit依赖并配置好对应的版本号。
<?xml version="1.0" encoding="UTF-8"?>
<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>org.example</groupId>
<artifactId>mybatis_helloword</artifactId>
<version>1.0-SNAPSHOT</version>
<!-- 只打jar 包-->
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.7</version>
</dependency>
<!-- junit测试-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!-- mysql 驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.30</version>
</dependency>
</dependencies>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
</project>
3、创建mysql数据库和对应的user表
这一步用navicat界面创建即可。
create table t_user(id int not null auto_increment, username varchar(20) not null default '', primary key(id));
4、创建pojo类和mybatis映射关系
在main-java文件夹下:
创建接pojo类放置的包com.wjw.mybatis.pojo:
创建User类
User,私有成员要和表中的数据一一对应,
package com.wjw.mybatis.pojo;
/**
* @Author wjwdive
* @Date 2023/2/19 22:40
* @Description:
*/
public class User {
private Integer id;
private String username;
private String password;
private Integer age;
private String gender;
private String email;
//必须要有
public User() {
}
public User(Integer id, String username, String password, Integer age, String gender, String email) {
this.id = id;
this.username = username;
this.password = password;
this.age = age;
this.gender = gender;
this.email = email;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
", age=" + age +
", gender='" + gender + '\'' +
", email='" + email + '\'' +
'}';
}
}
创建mybatis映射文件放置的包com.wjw.mybatis.mapper:
创建接口类:UserMapper
1)映射文件的命名规则:
表所对应的实体类的类名+Mapper.xml
例如:表t_user对应的实体类为User,所对应的映射文件为UserMapper.xml
因此一个映射文件对应一个实体类,对应一张表的操作
MyBatis映射文件用于编写SQL,访问数据库以及操作表中的数据。
MyBatis映射文件存放的位置是src/main/resources/mappers目录下
2)MyBatis中可以面向接口操作数据,要保证两个一致:
a>mapper接口的全类名和映射文件的命名空间(namespace)保持一致。
b>mapper接口中方法的方法名和映射文件中编写SQL的标签的id属性保持一致。
里面定义插入用户的一个接口: int insertUser();
package com.wjw.mybatis.mapper;
/**
* @Author wjwdive
* @Date 2023/2/19 22:54
* @Description:
*/
public interface UserMapper {
int insertUser();
}
在数据库中建表t_user共这几个字段:
id,username,password,gender,age,email:
主键为id,自增,自动填充0,无符号。
我们此时要配置数据库连接:
创建文件,jdbc.properities文件 用来保存数据库连接信息
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/ssm?serverTimezone=UTC
jdbc.username=root
jdbc.password=0000
创建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">
<!-- mybatis 的核心配置文件 -->
<configuration>
<properties resource="jdbc.properties"/>
<settings>
<!-- 自动将下划线 映射为驼峰 -->
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
<typeAliases>
<package name=""/>
</typeAliases>
<!-- 配置连接数据库的环境-->
<environments default="test">
<environment id="test">
<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>
<!-- 引入mybatis的映射文件-->
<mappers>
<!-- <package name=""/>-->
<mapper resource="UserMapper.xml"></mapper>
</mappers>
</configuration>
然后就可以写测试类了
在src/test/java/下,创建包com.wjw.mybatis.test
package com.wjw.mybatis.test;
import com.wjw.mybatis.mapper.UserMapper;
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 org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
/**
* @Author wjwdive
* @Date 2023/2/19 23:32
* @Description:
*/
public class MyBatisTest {
@Test
public void testInsert() throws IOException {
//获取核心配置文件的输入流
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
//获取SqlSessionFactoryBuilder对象
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
//获取sqlSessionFactory对象
SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);
//获取sql的会话对象SqlSession,是mybatis提供的操作数据库对象的方法
SqlSession sqlSession = sqlSessionFactory.openSession(true);//自动提交事务,需设置参数 为true
//获取UserMapper的代理实现类对象
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
//调用 mapper接口中的方法,实现添加用户信息的功能
int result = mapper.insertUser();
//提交事务【不提交事务,会自动回滚执行的脚本】
sqlSession.commit();
System.out.println("结果:"+result);
//关闭连接
sqlSession.close();
}
}
运行测试用例,就可以插入数据了;