namespace中的包名要和Dao/Mapper接口的包名一致
根据id查询用户
id:namespace中的方法名
resultType:sql语句执行的返回值类型
parameterType:参数类型
UserMapper中添加对应方法
public interface UserMapper {
//全查询
List<user> GetList();
//按名称查询
List<user> GetList2(String value);
//按id查询
user GetUserById(int id);
}
UserMapper.xml中添加select语句
<?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.mosang.dao.UserMapper">
//配置SQL语句,id必须与设置的方法名一致
<select id="GetList" resultType="user">
select * from mybatis.user;
</select>
<select id="GetList2" resultType="com.mosang.pojo.user">
select * from user where name like #{values}
</select>
<select id="GetUserById" resultType="com.mosang.pojo.user" parameterType="int">
select * from mybatis.user where id=#{id}
</select>
</mapper>
测试
@Test
public void test()
{
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<user> users=mapper.GetList();
for (user user:users)
{
System.out.println(user);
}
sqlSession.close();
}
@Test
public void test2()
{
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<user> users=mapper.GetList2("%李%");
for(user user:users)
{
System.out.println(user);
}
sqlSession.close();
}
@Test
public void test3(){
SqlSession sqlSession=MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
user user = mapper.GetUserById(3);
System.out.println(user.toString());
}
模糊查询
第1种:在Java代码中添加sql通配符。
string wildcardname = “%smi%”;
list<name> names = mapper.selectlike(wildcardname);
<select id=”selectlike”>
select * from foo where bar like #{value}
</select>
第2种:在sql语句中拼接通配符,会引起sql注入
string wildcardname = “smi”;
list<name> names = mapper.selectlike(wildcardname);
<select id=”selectlike”>
select * from foo where bar like "%"#{value}"%"
</select>
1、Mapper添加方法
public interface UserMapper {
int InsertValue(user user);
}
2、xml配置
<insert id="InsertValue" parameterType="com.mosang.pojo.user">
insert user values (#{id},#{name},#{password})
</insert>
3、测试
@Test
public void test4(){
SqlSession sqlSession=MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
user user=new user(8,"默默","132456");
mapper.InsertValue(user);
/*Map<String,String> map=new HashMap<>();
map.put("id","7");
map.put("name","呼呼");
map.put("password","1111111");
int i=mapper.InsertValue(map);
System.out.println(i);*/
sqlSession.commit();
sqlSession.close();
}
1、定义以Map对象为参数的插入方法
public interface UserMapper {
int InsertValue(Map<String,String> map);
}
2、在xml中配置SQL语句
<insert id="InsertValue" parameterType="map">
insert user values (#{id},#{name},#{password})
</insert>
3、测试
@Test
public void test4(){
SqlSession sqlSession=MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
Map<String,String> map=new HashMap<>();
map.put("id","7");
map.put("name","呼呼");
map.put("password","1111111");
int i=mapper.InsertValue(map);
System.out.println(i);
sqlSession.commit();//提交事务,重点!不写的话不会提交到数据库
sqlSession.close();
}
1、Mapper类
public interface UserMapper {
int UpdateUser(user user);
int UpdateUser1(Map<String,String> map);
}
2、xml配置
<update id="UpdateUser" parameterType="com.mosang.pojo.user">
update user set name =#{name},password=#{password} where id=#{id}
</update>
<update id="UpdateUser1" parameterType="map">
update user set name =#{name},password=#{password} where id=#{id}
</update>
3、测试
@Test
public void test5(){
SqlSession sqlSession=MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
/*user user=mapper.GetUserById(3);
user.setPassword("abcdefg");
System.out.println(mapper.UpdateUser(user));*/
Map<String, String> map=new HashMap<>();
map.put("id","3");
map.put("password","666666");
map.put("name","李四");
mapper.UpdateUser1(map);
sqlSession.commit();
sqlSession.close();
}
1、Mapper
public interface UserMapper {
int DeleteUser(int id);
}
2、xml配置
<delete id="DeleteUser" parameterType="int">
delete from user where id=#{id}
</delete>
3、测试
@Test
public void test6(){
SqlSession sqlSession=MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
mapper.DeleteUser(3);
sqlSession.commit();
sqlSession.close();
}
注意:
所有的增、删、改操作需要提交事务!
sqlSession.commit();
为了规范操作,在SQL的配置文件中,我们尽量将Parameter参数和resultType都写上!
有时候根据业务的需求,可以考虑使用map传递参数!
接口所有的普通参数,尽量都写上@Param参数,尤其是多个参数时,必须写上!