相关文件:
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接口代理实现编写规则:
1. 映射文件中namespace要等于接口的全路径
2. 映射文件中sql语句id要等于接口的方法名
3. 映射文件中传入参数类型要等于接口方法的传入参数类型
4. 映射文件中返回结果集类型要等于接口方法的返回值类型
-->
<mapper namespace="com.jadan.mapper.UserMapper">
<!-- 根据id查询用户 -->
<select id="findUserById" parameterType="java.lang.Integer" resultType="com.jadan.po.User">
select * from user where id = #{id}
</select>
<!-- 根据用户名模糊查询用户 -->
<select id="findUserByUsername" parameterType="java.lang.String" resultType="com.jadan.po.User">
select * from user where username like '%${value}%'
</select>
<!-- 插入用户 -->
<insert id="insertUser" parameterType="com.jadan.po.User">
<selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
select LAST_INSERT_ID()
</selectKey>
insert into user(username, sex, birthday, address)
value(#{username},#{sex},#{birthday},#{address})
</insert>
<!-- 更新用户信息 -->
<update id="updateUserById" parameterType="com.jadan.po.User">
update user set sex = #{sex} where id = #{id}
</update>
<!-- 删除用户信息 -->
<delete id="delUserById" parameterType="java.lang.Integer">
delete from user where id = #{id}
</delete>
</mapper>
UserMapper.java 接口文件:
package com.jadan.mapper;
import java.util.List;
import com.jadan.po.User;
public interface UserMapper {
// 根据id查询用户
public User findUserById(Integer id);
// 根据用户名模糊查询用户
public List<User> findUserByUsername(String username);
// 插入用户
public void insertUser(User user);
// 更新用户
public void updateUserById(User user);
// 删除用户
public void delUserById(Integer id);
}
SqlMapConfig.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>
<!-- 和Spring整合后 environments配置将废除 -->
<environments default="development">
<environment id="development">
<!-- 使用jdbc事务管理 -->
<transactionManager type="JDBC" />
<!-- 数据库连接池 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis01?characterEncoding=utf-8"/>
<property name="username" value="root"/>
<property name="password" value="1234"/>
</dataSource>
</environment>
</environments>
<!-- 配置映射文件 -->
<mappers>
<!--
使用class属性引入接口的全路径名称:
使用规则:
1. 接口的名称和映射文件名称除扩展名外要完全相同
2. 接口和映射文件要放在同一个目录下
-->
<mapper class="com.jadan.mapper.UserMapper"/>
</mappers>
</configuration>
UserMapperTest 测试文件:
package mybatis_day01;
import java.io.InputStream;
import java.util.Date;
import java.util.List;
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.Before;
import org.junit.Test;
import com.jadan.mapper.UserMapper;
import com.jadan.po.User;
public class UserMapperTest {
private SqlSessionFactory factory;
// 作用: 在测试方法前执行这个初始化方法
@Before
public void setUp() throws Exception {
// 核心配置文件名
String resource = "SqlMapConfig.xml";
// 通过流将核心配置文件读取进来
InputStream inputStream = Resources.getResourceAsStream(resource);
// 通过核心配置文件输入流来创建会话工厂
factory = new SqlSessionFactoryBuilder().build(inputStream);
}
// 测试: 通过id查用户
@Test
public void testFindUserById() {
SqlSession openSession = factory.openSession();
// 通过getMapper方法来实例化接口
UserMapper mapper = openSession.getMapper(UserMapper.class);
User user = mapper.findUserById(1);
System.out.println(user);
}
// 测试: 通过用户名模糊查询用户
@Test
public void testFindUserByUsername() {
SqlSession openSession = factory.openSession();
// 通过getMapper方法来实例化接口
UserMapper mapper = openSession.getMapper(UserMapper.class);
List<User> list = mapper.findUserByUsername("王");
System.out.println(list);
}
// 测试: 插入用户
@Test
public void testInsertUser() {
SqlSession openSession = factory.openSession();
// 通过getMapper方法来实例化接口
UserMapper mapper = openSession.getMapper(UserMapper.class);
User user = new User();
user.setUsername("Jadan");
user.setBirthday(new Date());
user.setSex("男");
user.setAddress("China");
mapper.insertUser(user);
// 提交事务
openSession.commit();
}
// 测试: 更新
@Test
public void testUpdate() {
SqlSession openSession = factory.openSession();
// 通过getMapper方法来实例化接口
UserMapper mapper = openSession.getMapper(UserMapper.class);
User user = new User();
user.setId(42);
user.setSex("男");
mapper.updateUserById(user);
openSession.commit();
}
// 测试: 删除
@Test
public void testDelUserById() {
SqlSession openSession = factory.openSession();
// 通过getMapper方法来实例化接口
UserMapper mapper = openSession.getMapper(UserMapper.class);
mapper.delUserById(42);
openSession.commit();
}
}
下一篇: