0%

3.增删改查

注意点:增删改需要提交事务

1.namespace

namespace中包名要和Dao/Mapper接口包名一致

2.select

查询语句;

  • id:就是对应的namespace中的方法名

  • resultType:SQL语句的返回值

  • parameType:参数类型

  1. 编写接口

    1
    List<User> getAllUser();
  2. 编写对应mapper中的sql语句

    1
    2
    3
    <select id="getAllUser" resultType="pojo.User">
    select * from user
    </select>
  3. 测试

    1
    2
    3
    4
    5
    6
    7
    8
    @Test
    public void test() throws Exception{
    String resource = "mybatis-config.xml";
    InputStream inputStream = Resources.getResourceAsStream(resource);
    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    SqlSession session = sqlSessionFactory.openSession();
    System.out.println(session.selectList("pojo.UserMapper.getAllUser"));
    }

3.Insert

1
2
3
4
<!--对象中的属性可以直接取出来-->
<insert id="addUser" parameterType="pojo.User" >
insert into user(id,name,pwd) value (#{id},#{name},#{pwd})
</insert>

4.Delete

1
2
3
<delete id="deleteUser" parameterType="int">
delete from user where id = #{id}
</delete>

5.Update

1
2
3
<update id="updateUser" parameterType="pojo.User">
update user set name=#{name},pwd=#{pwd} where id=#{id}
</update>

6.万能Map

假设我们的实体类或者数据库中的表,字段参数过多,我们应该考虑Map。

1
2
//万能Map
User addUser2(Map<String,Object> map);
1
2
3
4
5
    <!--Map-->
<insert id="addUser2" parameterType="map">
/*保证测试类中put的key和这里的对应即可取到值*/
insert into user(id,name,pwd) value (#{userid},#{username},#{userpwd})
</insert>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@Test
public void test4() throws Exception{
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session = sqlSessionFactory.openSession();
Map<String,Object> map =new HashMap<String, Object>();
map.put("userid","123");
map.put("username","aaaa");
map.put("userpwd","0000");
session.insert("pojo.UserMapper.addUser2",map);
session.commit();
session.close();
}

Map传递参数,直接在sql中取出key即可

对象传递参数,直接在sql取出对象属性即可

只有一个基本数据类型的情况下,可以直接在sql中取到

7.模糊查询

  1. java代码执行的时候,传递通配符 % %

    1
    session.selectList("pojo.UserMapper.getUserLike","%李%")
  1. 在sql拼接中使用通配符!

    1
    select * from user  where name like "%"#{value}"%"