0
点赞
收藏
分享

微信扫一扫

MyBatis学习笔记--02--入门的增删改查

Go_Viola 2022-01-16 阅读 99
java

文章目录

3、CRUD – 入门的增删改查

3.1、命名空间 namespace

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

3.2 、select

选择,查询语句;

  • id:就是对应的namespace中的方法名
  • resultType:sql语句执行的返回值!
  • parameterType: 参数类型!

1.编写接口

/**
 * 根据id查询用户
 * @param i 用户id
 * @return
 */
User getUserById(int i);

2.编写对应的mapper中的sql语句

<select id="getUserById" parameterType="int" resultType="com.seig.pojo.User">
    select * from mybatis.user where id = #{id}
</select>

3.测试

@Test
public void testgetUserById(){
    //第一步:获得sqlSession
    SqlSession sqlSession = MyBatisUtils.getSqlSession();
    //第二步:执行sql
    UserMapper mapper = sqlSession.getMapper(UserMapper.class);
    User user = mapper.getUserById(1);
    System.out.println(user);
    //第三步:关闭sqlSession
    sqlSession.close();

3.3、insert

<insert id="addUser" parameterType="com.seig.pojo.User">
    insert into mybatis.user(id, name, pwd) values (#{id},#{name},#{pwd})
</insert>

3.4、update

<update id="updateUser" parameterType="com.seig.pojo.User">
    update mybatis.user set name=#{name},pwd=#{pwd} where id=#{id}
</update>

3.5、delete

<delete id="deleteUser" parameterType="int">
    delete from mybatis.user where id=#{id}
</delete>

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

3.6、万能的Map

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

Mapper.java 中的接口

int addUser2(Map<String,Object> map);

Mapper.xml

<!--对象中的属性,可以直接取出来 传递map的key-->
<insert id="addUser2" parameterType="map">
    insert into mybatis.user(id, name, pwd) values (#{userid},#{username},#{password})
</insert>

测试代码:

@Test
public void testaddUser2(){
    SqlSession sqlSession = MyBatisUtils.getSqlSession();

    UserMapper mapper = sqlSession.getMapper(UserMapper.class);

    Map<String, Object> map = new HashMap<String, Object>();
    map.put("userid",5);
    map.put("username","小莫");
    map.put("password","123456");

    mapper.addUser2(map);

    sqlSession.commit();
    sqlSession.close();

Map传递参数,直接在sql中取出key即可!【parameterType=“map”】

对象传递参数,直接在sql中取对象的属性即可!【parameterType=“Object”】

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

多个参数用Map,或者注解

3.7、模糊查询

  • java代码执行的时候,传递通配符% %
  • 在sql拼接中使用通配符!
/**
 * 根据名字模糊查询
 * @param value
 * @return
 */
List<User> getUserLike(String value);
<select id="getUserLike" resultType="com.seig.pojo.User">
    select * from mybatis.user where name like "%"#{value}"%"
</select>

测试:

@Test
public void testgetUserLike(){
    //第一步:获得sqlSession
    SqlSession sqlSession = MyBatisUtils.getSqlSession();
    //第二步:执行sql
    UserMapper mapper = sqlSession.getMapper(UserMapper.class);

    List<User> userList = mapper.getUserLike("钟");
    for (User user : userList) {
        System.out.println(user);
    }

    //第三步:关闭sqlSession
    sqlSession.close();
}
举报

相关推荐

0 条评论