基本操作流程:
在Mapper接口中添加一个方法
在Mapper.xml中添加一个xml语句与方法对应
在测试类中添加一个方法测试
注意:配置文件中namespace中的名称为对应Mapper接口的完整包名,必须一致
-
id:对应namespace中的方法名
-
parameterType:传入SQL语句的参数类型 。【万能的Map,可以多尝试使用】
-
resultType:SQL语句返回值类型。【完整的类名或者别名】
查询
查询所有数据
接口中的方法
List<User> getUserList();
UserMapper.xml中的绑定
<!--select查询语句 id绑定函数名 resultType绑定返回类型-->
<select id="getUserList" resultType="com.li.pojo.User">
select * from test_1015.student
</select>
测试
@Test
public void test() {
//获得SqlSession对象
SqlSession sqlSession = MybatisUtils.getSqlSession();
//方式一:getMapper
UserMapper userDao = sqlSession.getMapper(UserMapper.class);
List<User> userList = userDao.getUserList();
for (User user : userList) {
System.out.println(user);
}
//关闭SqlSession
sqlSession.close();
}
根据ID查询数据
User getUserById(int id);
<select id="getUserById" parameterType="int" resultType="com.li.pojo.User">
select * from test_1015.student where id = #{id}
</select>
@Test
public void getUserById(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User user = mapper.getUserById(1); //查询id为一的数据
System.out.println(user);
sqlSession.close();
}
使用map
//使用map
User getUserById2(Map<String,Object> map);
<select id="getUserById2" parameterType="map" resultType="com.li.pojo.User">
select * from test_1015.student where id = #{id} and name = #{name }
</select>
@Test
public void getUserById2(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
Map<String,Object> map = new HashMap<String,Object>();
map.put("id",1);
map.put("name","貂蝉");
User user = mapper.getUserById2(map);
System.out.println(user);
sqlSession.close();
}
模糊查询
//模糊查询
List<User> getUserLike(String value);
<select id="getUserLike" resultType="com.li.pojo.User">
select * from test_1015.student where qq_mail like #{value}
</select>
//模糊查询
@Test
public void getUserLike(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<User> userList = mapper.getUserLike("%y%");
for (User user : userList){
System.out.println(user);
}
sqlSession.close();
}
插入
常规插入
//insert一个用户
int addUser(User user);
<!--对象中的属性,可以直接取出来-->
<insert id="addUser" parameterType="com.li.pojo.User">
insert into test_1015.student(id,sn,name ,qq_mail) values (#{id},#{sn},#{name},#{qq_mail});
</insert>
//增加数据
@Test
public void addUser(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
int res = mapper.addUser(new User(7,1717,"不知火舞","bzhw@qq.com"));
if(res>0){
System.out.println("插入成功");
}
//提交事务
sqlSession.commit();
sqlSession.close();
}
使用map插入
int addUser2(Map<String,Object> map);
<!--对象中的属性,可以直接取出来传递map的key-->
<insert id="addUser2" parameterType="map">
insert into test_1015.student(id,sn,name ,qq_mail) values (#{id},#{sn},#{name},#{qq_mail});
</insert>
//map增加数据
@Test
public void addUser2(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
Map<String,Object> map = new HashMap<String,Object>();
map.put("id",9);
map.put("name","诸葛亮");
map.put("sn",1799);
map.put("qq_mail","zgl@qq.com");
mapper.addUser2(map);
sqlSession.commit();
sqlSession.close();
}
修改数据
//修改用户
int updateUser(User user);
<update id="updateUser" parameterType="com.li.pojo.User">
update test_1015.student set sn=#{sn}, name=#{name},qq_mail=#{qq_mail} where id=#{id}
</update>
//修改数据
@Test
public void updateUser(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
mapper.updateUser(new User(8,1739,"墨子","mz@qq.com"));
sqlSession.commit();
sqlSession.close();
}
删除数据
//删除用户
int deleteUser(int id);
<delete id="deleteUser" parameterType="int">
delete from test_1015.student where id = #{id}
</delete>
//删除数据
@Test
public void deleteUser(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
mapper.deleteUser(9);
sqlSession.commit();
sqlSession.close();
}
整体代码
MybatisUtils工具类
package com.li.utils;
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 java.io.IOException;
import java.io.InputStream;
public class MybatisUtils {
private static SqlSessionFactory sqlSessionFactory;
static {
String resource = "mybatis-config.xml";
try {
//使用Mybatis 第一步:获取sqlSessionFactory对象
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
//既然有了SqlSessionFactory,顾名思义,我们就可以从中获得SqlSession的实例了.
//SqlSession 完全包含了面向数据库执行SQL命令所需的方法.
public static SqlSession getSqlSession() {
return sqlSessionFactory.openSession();
}
}
UserMapper接口
package com.li.dao;
import com.li.pojo.User;
import java.util.List;
import java.util.Map;
public interface UserMapper {
//查询全部用户
List<User> getUserList();
//根据ID查询用户
User getUserById(int id);
//使用map
User getUserById2(Map<String,Object> map);
//模糊查询
List<User> getUserLike(String value);
//insert一个用户
int addUser(User user);
int addUser2(Map<String,Object> map);
//修改用户
int updateUser(User user);
//删除用户
int deleteUser(int id);
}
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">
<!--namespace用于绑定一个对应的Dao/Mapper接口-->
<mapper namespace="com.li.dao.UserMapper">
<!--select查询语句 id绑定函数名 resultType绑定返回类型-->
<select id="getUserList" resultType="com.li.pojo.User">
select * from test_1015.student
</select>
<select id="getUserById" parameterType="int" resultType="com.li.pojo.User">
select * from test_1015.student where id = #{id}
</select>
<select id="getUserById2" parameterType="map" resultType="com.li.pojo.User">
select * from test_1015.student where id = #{id} and name = #{name }
</select>
<select id="getUserLike" resultType="com.li.pojo.User">
select * from test_1015.student where qq_mail like #{value}
</select>
<!--对象中的属性,可以直接取出来-->
<insert id="addUser" parameterType="com.li.pojo.User">
insert into test_1015.student(id,sn,name ,qq_mail) values (#{id},#{sn},#{name},#{qq_mail});
</insert>
<!--对象中的属性,可以直接取出来传递map的key-->
<insert id="addUser2" parameterType="map">
insert into test_1015.student(id,sn,name ,qq_mail) values (#{id},#{sn},#{name},#{qq_mail});
</insert>
<update id="updateUser" parameterType="com.li.pojo.User">
update test_1015.student set sn=#{sn}, name=#{name},qq_mail=#{qq_mail} where id=#{id}
</update>
<delete id="deleteUser" parameterType="int">
delete from test_1015.student where id = #{id}
</delete>
</mapper>
测试类UserMapperTest
package com.li.dao;
import com.li.pojo.User;
import com.li.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class UserMapperTest {
@Test
public void test() {
//获得SqlSession对象
SqlSession sqlSession = MybatisUtils.getSqlSession();
//方式一:getMapper
UserMapper userDao = sqlSession.getMapper(UserMapper.class);
List<User> userList = userDao.getUserList();
for (User user : userList) {
System.out.println(user);
}
//关闭SqlSession
sqlSession.close();
}
//查询数据
@Test
public void getUserById(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User user = mapper.getUserById(1); //查询id为一的数据
System.out.println(user);
sqlSession.close();
}
//使用map
@Test
public void getUserById2(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
Map<String,Object> map = new HashMap<String,Object>();
map.put("id",1);
map.put("name","貂蝉");
User user = mapper.getUserById2(map);
System.out.println(user);
sqlSession.close();
}
//模糊查询
@Test
public void getUserLike(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<User> userList = mapper.getUserLike("%y%");
for (User user : userList){
System.out.println(user);
}
sqlSession.close();
}
//增加数据
@Test
public void addUser(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
int res = mapper.addUser(new User(7,1717,"不知火舞","bzhw@qq.com"));
if(res>0){
System.out.println("插入成功");
}
//提交事务
sqlSession.commit();
sqlSession.close();
}
//map增加数据
@Test
public void addUser2(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
Map<String,Object> map = new HashMap<String,Object>();
map.put("id",9);
map.put("name","诸葛亮");
map.put("sn",1799);
map.put("qq_mail","zgl@qq.com");
mapper.addUser2(map);
sqlSession.commit();
sqlSession.close();
}
//修改数据
@Test
public void updateUser(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
mapper.updateUser(new User(8,1739,"墨子","mz@qq.com"));
sqlSession.commit();
sqlSession.close();
}
//删除数据
@Test
public void deleteUser(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
mapper.deleteUser(9);
sqlSession.commit();
sqlSession.close();
}
}
最后:感谢狂神的教学!