05.Mybatis入门程序(用户增删改查)

1. 映射文件

  • 映射文件命名:User.xml
  • mapper代理开发映射文件名:XXXMapper.xml (UserMapper.xml、ItemsMapper.xml)
  • 在映射文件中配置sql语句。

2. 映射文件具体配置

  • 我们需要将查询得到的结果映射为一个对象,创建一个包(com.chinglee.mybatis.pojo)里面存放所有的对象类型。
  • 在pojo包中创建User类对应User表
package com.chinglee.mybatis.pojo;

import java.util.Date;

/**
 * Created by Administrator on 2017/10/18 0018.
 */
public class User {
    private int id;
    private String username;
    private Date birthday;
    private String sex;
    private String address;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }
}

  • 在sqlmap中创建User.xml






    
    
    
    

  • 在SqlMapConfig.xml中加载映射文件
   
    
        
    

3. 根据id查询用户代码实现

package com.chinglee.mybatis.first;

import com.chinglee.mybatis.pojo.User;
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.Test;

import java.io.IOException;
import java.io.InputStream;

/**
 * Created by Administrator on 2017/10/19 0019.
 */
public class MybatisFirst {
   //根据id查询用户信息,得到一条记录结果
   @Test
   public void findUerByIdTest() throws IOException {
      //mybatis配置文件
      String resource="SqlMapConfig.xml";
      InputStream inputStream=Resources.getResourceAsStream(resource);
      //创建会话工厂
      SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
      //通过会化工厂得到sqlSession
      SqlSession sqlSession=sqlSessionFactory.openSession();
      //通过sqlSession操作数据库
      //第一个参数:映射文件中statement的id,等于namespace+"."+statement的id
      //第二个参数:指定和映射文件中所匹配的parameterType类型的参数
      //sqlSession.selectOne()结果就是与映射文件中所匹配的resultType类型的对象
      User user=sqlSession.selectOne("user.findUserById",1);
      System.out.println(user);
      //释放资源
      sqlSession.close();
   }

}

4. 根据用户名模糊查询

  • 在User.xml中添加查询
  

    

  • 在MybatatisFirst.java类中添加方法
 //根据用户名称模糊查询用户列表
   @Test
   public void findUserByNameTest() throws IOException {
      //获取mybatis配置文件
      String resource="SqlMapConfig.xml";
      InputStream inputStream=Resources.getResourceAsStream(resource);
      //创建会话工厂
      SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
      //通过会话工厂得到会话sqlsession
      SqlSession sqlSession=sqlSessionFactory.openSession();
      List list=sqlSession.selectList("user.findUserByName","小明");
      System.out.println(list);
      sqlSession.close();

   }
05.Mybatis入门程序(用户增删改查)_第1张图片
查询结果.png

5. 添加用户

  • 自增主键返回
    User.xml添加statement
 
    
        
        
             SELECT LAST_INSERT_ID()
        
        INSERT INTO user(username,birthday,sex,address) VALUE (#{username},#{birthday},#{sex},#{address})
    

在MybatisFirst类中加入addUserTest方法

//添加用户信息
   @Test
   public void addUserTest() throws IOException {
      //获取mybatis配置文件
      String resource="SqlMapConfig.xml";
      InputStream inputStream=Resources.getResourceAsStream(resource);
      //创建会话工厂
      SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
      //通过会话工厂得到会话sqlsession
      SqlSession sqlSession=sqlSessionFactory.openSession();
      //插入用户对象
      User user=new User();
      user.setUsername("王小军");
      user.setBirthday(new Date());
      user.setSex("1");
      user.setAddress("河南郑州");
      sqlSession.insert("user.insertUser",user);
      //提交事务
      sqlSession.commit();
      System.out.println(user.getId());
      //关闭会话
      sqlSession.close();

   }

  • 非自增主键返回(使用uuid)
    使用mysql的uuid()函数生成主键,需要修改id字段类型为String,长度设置为35

6. 删除用户

  • 映射文件User.xml
 
    
        DELETE FROM user WHERE id=#{id};
    
  • 测试类MybatisFirst.java

   @Test
   public void deleteUserTest() throws IOException {
      String resource="SqlMapConfig.xml";
      InputStream inputStream=Resources.getResourceAsStream(resource);
      SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
      SqlSession sqlSession=sqlSessionFactory.openSession();
      sqlSession.delete("user.deleteUser",28);
      //提交事务
      sqlSession.commit();
      //关闭会话
      sqlSession.close();
   }

7. 更新用户

  • 映射文件User.xml
 
    
        UPDATE user SET username=#{username},birthday=#{birthday},sex=#{sex},address=#{address}WHERE id=#{id}
    
  • java类
 @Test
   public void updateUserTest() throws IOException {
      String resouce="SqlMapConfig.xml";
      InputStream inputStream=Resources.getResourceAsStream(resouce);
      SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
      SqlSession sqlSession=sqlSessionFactory.openSession();
      User user=new User();
      user.setId(29);
      user.setUsername("王大军");
      user.setBirthday(new Date());
      user.setSex("1");
      user.setAddress("河南郑州");
      sqlSession.update("user.updateUser", user );
      //提交事务
      sqlSession.commit();
      //关闭会话
      sqlSession.close();
   }

8. 入门总结

  • parameterType:指定输入参数类型

  • resultType:指定查询结果映射的java对象类型

  • .#{}表示一个占位符,接收输入参数,类型可以是简单类型,pojo、hashmap。

    • 如果接收简单类型,#{}中可以写成value或其他名称。
    • .#{}接收pojo对象值,通过UGNL读取对象中的属性值。
  • ${}表示一个拼接符号,会引用sql注入,所以不建议使用${}。

    • ${}接收输入参数,类型可以是简单类型,pojo,hashmap。
    • 如果接收简单类型,${}中只能写成value
  • selectOne表示查询出的一条记录。如果使用selectone可以实现,使用selectList也可以实现。

  • selectList查询一个列表(多条记录)进行映射

你可能感兴趣的:(05.Mybatis入门程序(用户增删改查))