首先导入相关Maven相关坐标依赖
<dependencies>
<!-- Mysql数据库-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.10</version>
</dependency>
<!-- Mybatis 持久层ORM框架 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.7</version>
</dependency>
<!-- Lombok简化实体类-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
<scope>provided</scope>
</dependency>
<!-- 集成Junit单元测试查看运行结果-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!-- log4j日志 -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
</dependencies>
然后用Sqlyog创建一张简单的User表,有id,username,password,age,sex,email相关字段
接着创建实体类属性
实体类要跟User表成为映射关系一一对应,类名——表名,字段名——列名,属性名——属性值
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class User {
private Integer id;
private String username;
private String password;
private Integer age;
private String sex;
private String email;
}
在resources目录下创建Mybatis核心配置文件.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="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/how2java?characterEncoding=utf8"/>
<property name="username" value="root"/>
<property name="password" value="admin"/>
</dataSource>
</environment>
</environments>
<!-- 引入映射文件-->
<mappers>
<mapper resource="mapper/UserMapper.xml"/>
</mappers>
</configuration>
创建Mapper接口!!!这里说一句Mybaits是面向接口编程,底层采用动态代理来实例化UserMapper接口,所以不用去创建它的实现类。
我写的这增删改的方式是基于Mapper.xml 所以接口中的方法参数中没有写入参数。
public interface UserMapper {
//插入用户数据
int insertUser();
//修改用户数据
void UpdateUser();
//
int deleteUser();
}
下面我们来创建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">
<mapper namespace="com.mapper.UserMapper">
<select id="getUserById" parameterType="int" resultType="com.pojo.User">
SELECT * FROM t_user where id=#{id};
</select>
<!-- 这种Sql写法是在接口上传参 然后参数类型就是实体类,最后在测试方法中用set方法进行传值编译-->
<insert id="insert" parameterType="com.pojo.User">
INSERT INTO t_user (id,username,password,age,sex,email) VALUES (null,#{username},#{password},#{age},#{sex},#{email});
</insert>
<!-- 这种方法是直接调用接口中的方法就能够对表中进行值的插入-->
<insert id="insertUser" parameterType="com.pojo.User">
INSERT INTO t_user values (null,'lisi','3322252',25,'男','54321@qq.com');
</insert>
<update id="UpdateUser" parameterType="com.pojo.User">
update t_user set username='李四' where id=3;
</update>
<delete id="deleteUser" parameterType="com.pojo.User">
delete from t_user where id=4;
</delete>
</mapper>
<mapper namespace="com.mapper.UserMapper">对应的是UserMapper接口,这里必须要一一映射
<insert id="insert" parameterType="com.pojo.User">
id是接口中的方法名,parameterType 传入参数是指表中对应的字段
写完相关SQL
去写测试方法
public class Test {
@org.junit.Test
public void insertUserTest() throws IOException {
//加载配置文件 读取mybatis-config.xml
InputStream resource = Resources.getResourceAsStream("mybatis-config.xml");
//创建SqlSessionFactoryBuilder会话 与Mysql创建连接
SqlSessionFactoryBuilder sessionFactoryBuilder=new SqlSessionFactoryBuilder();
//创建SqlSessionFactory工厂 用来创建SqlSession
SqlSessionFactory sessionFactory= sessionFactoryBuilder.build(resource);
//创建SqlSession与Mysql数据库进行连接
SqlSession session = sessionFactory.openSession(true);
//实例化UserMapper接口对象,底层采用了动态代理自动帮我们创建了这个对象
UserMapper mapper = session.getMapper(UserMapper.class);
int result = mapper.insertUser();
System.out.println(result);
session.close();
}
最终执行成功 一条简单的插入语句完成。
User表新增一条数据