目录
1、环境搭建
搭建环境,创建 Maven 工程,pom.xml 引入相关依赖。
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.48</version>
</dependency>
</dependencies>
2、新建数据表
create table t_user(
id int primary key auto_increment,
username varchar(11),
password varhcar(11),
age int
);
3、创建对应的实体类 User
package com.spring.entity;
public class User {
private int id;
private String username;
private String password;
private int age;
public int getId() {
return id;
}
public void setId(int 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 int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
", age=" + age +
'}';
}
}
4、创建 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>
<!-- 配置 MyBatis 的运行环境 -->
<environments default="development">
<environment id="development">
<!-- 配置 JDBC 事务管理 -->
<transactionManager type="JDBC"></transactionManager>
<!-- 配置数据库连接信息 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=UTF-8"></property>
<property name="username" value="root"></property>
<property name="password" value="root"></property>
</dataSource>
</environment>
</environments>
</configuration>
5、自定义接口(Mapper 代理的形式实现)
package com.spring.repository;
import com.spring.entity.User;
import java.util.List;
public interface UserRepository {
/**
* 新增用户
* @param user
* @return
*/
public int save(User user);
/**
* 删除用户
* @param id
* @return
*/
public int deleteById(int id);
/**
* 修改用户
* @param user
* @return
*/
public int update(User user);
/**
* 通过 id 查询用户
* @param id
* @return
*/
public User findById(int id);
/**
* 查询全部用户
* @return
*/
public List<User> findAll();
}
MyBatis 框架会根据规则自动创建 UserRepository 接口实现类的代理对象。
规则如下:
- UserRepository.xml 中的 namespace 为接口的全类名。
- UserRepository.xml 中的 statement 的 id 为接口中对应的方法名。
- UserRepository.xml 中的 statement 的 parameterType 和接口中对应方法的参数类型一致。
- UserRepository.xml 中的 statement 的 resultType 和接口中对应方法的返回值类型一致。
<?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.spring.repository.UserRepository">
<insert id="save" parameterType="com.spring.entity.User">
insert into t_user(username,password,age) values(#{username},#{password},#{age});
</insert>
<select id="findById" parameterType="int" resultType="com.spring.entity.User">
select * from t_user where id = #{id}
</select>
<select id="findAll" resultType="com.southwind.entity.User">
select * from t_user
</select>
<delete id="deleteById" parameterType="int">
delete from t_user where id = #{id}
</delete>
<update id="update" parameterType="com.southwind.entity.User">
update t_user set username = #{username},password = #{password},age = #{age} where id = #{id}
</update>
</mapper>
<?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 的运行环境 -->
<environments default="development">
<environment id="development">
<!-- 配置 JDBC 事务管理 -->
<transactionManager type="JDBC"></transactionManager>
<!-- 配置数据库连接信息 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=UTF-8"></property>
<property name="username" value="root"></property>
<property name="password" value="root"></property>
</dataSource>
</environment>
</environments>
<!-- 注册 UserMapper.xml -->
<mappers>
<mapper resource="com/spring/repository/UserRepository.xml"></mapper>
</mappers>
</configuration>
package com.spring.test;
import com.spring.entity.User;
import com.spring.repository.UserRepository;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.InputStream;
public class Test {
public static void main(String[] args) {
//加载 MyBatis 配置文件
InputStream inputStream = Test.class.getClassLoader().getResourceAsStream("config.xml");
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream);
//获取 SqlSession 对象
SqlSession sqlSession = sqlSessionFactory.openSession();
//调用自定义的 UserRepository 接口
//获取实现接口的代理对象
UserRepository userRepository = sqlSession.getMapper(UserRepository.class);
// 新增用户
User user = new User();
user.setUsername("yonghu");
user.setPassword("123123");
user.setAge(23);
int result = userRepository.save(user);
System.out.println(result);
// 查询用户
User user = userRepository.findById(1);
System.out.println(user.toString());
// 查询所有用户
List<User> users = userRepository.findAll();
System.out.println(users.toString());
// 更新用户
User user = new User();
user.setId(2);
user.setUsername("lisi");
user.setPassword("123456");
user.setAge(13);
int result = userRepository.update(user);
System.out.println(result);
// 删除用户
int result = userRepository.deleteById(1);
System.out.println(result);
sqlSession.commit();
}
}