MyBatis学习笔记(二)

MyBatis学习笔记(二)

mybatis的curd(基于代理dao的方式)

1、实体类

public class User implements Serializable {

    private Integer cid;
    private Integer age;
    private String username;
    private String address;
    private String sex;
    private Date birthday;

    public Integer getCid() {
        return cid;
    }

    public void setCid(Integer cid) {
        this.cid = cid;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getUsername() {
        return username;
    }

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

    public String getAddress() {
        return address;
    }

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

    public String getSex() {
        return sex;
    }

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

    public Date getBirthday() {
        return birthday;
    }

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

    @Override
    public String toString() {
        return "User{" +
                "age=" + age +
                ", name='" + username + '\'' +
                ", address='" + address + '\'' +
                ", sex='" + sex + '\'' +
                ", birthday=" + birthday +
                '}';
    }
}

2、持久层接口

public interface IUserDao {

    //  查询所有
    List findAll();

    //保存用户
    void saveUser(User user);

    //更新用户
    void updataUser(User user);

    //删除用户
    void deleteUser(int id);

    //根据id找到用户
    User findById(int id);

    //模糊查询用户信息
    List findByName(String username);

    ////获取用户的总记录条数
    int findTotal();

}

3、mybatis配置






    
    

        
        

            
            

            
            

                
                
                
                

            
        
    

    
    
        
    



4、mapper映射文件

public interface IUserDao {

    //  查询所有
    List findAll();

    //保存用户
    void saveUser(User user);

    //更新用户
    void updataUser(User user);

    //删除用户
    void deleteUser(int id);

    //根据id找到用户
    User findById(int id);

    //模糊查询用户信息
    List findByName(String username);

    ////获取用户的总记录条数
    int findTotal();

}

5、测试类

public class mybatis  {

    private  InputStream in;
    private SqlSession sqlSession;
    private  IUserDao userDao;

    @Before //用于在测试方法之前执行
    public void init() throws Exception{
        in = Resources.getResourceAsStream("SqlMapConfig.xml");
        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
        SqlSessionFactory sqlSessionFactory = builder.build(in);
        sqlSession = sqlSessionFactory.openSession();
        userDao = sqlSession.getMapper(IUserDao.class);
    }

    @Test
    public void testSave() throws Exception{

        User user = new User();
        user.setUsername("华晨宇");
        user.setAge(30);
        user.setSex("男");
        user.setBirthday(new Date());
        userDao.saveUser(user);

        sqlSession.commit();

    }

    @Test
    public void updateUser(){
        User user = new User();
        user.setCid(1);
        user.setUsername("李晨2");
        user.setAge(35);
        user.setSex("女");
        user.setBirthday(new Date());
        userDao.updateUser(user);
        sqlSession.commit();
    }

    @After //用于在测试方法之后执行
    public void destoryIn() throws Exception{
        sqlSession.close();
        in.close();
    }
}

mybatis中的参数深入及结果集深入

  1. parameterType
    传递简单类型
    传递pojo对象
    Mybatis使用ognl表达式解析对象字段的值,#{}或者${}括号中的值为pojo属性名称 ognl表达式:Object Graphic Navigation Language对象图导航语言,它是通过对象的取值方法来获取数据据,在写法上把get省略。mybatis在parameterType中已经提供了属性所属类。
    传递pojo包装对象

2、returnType(输出类型)
简单类型
pojo对象
pojo列表
当数据库中列名与实体类的属性名不一致时,查询的结果都不能封装到查询的对象中,此时有两种方式
1、在sql语句中使用as别名
2、在mapper配置文件中进行配置

    
    

        
        
        
        

    

mybatis中基于传统dao的方式

mybatis中的配置(主配置文件:SqlMapConfig.xml)

  • properties标签
    使用外部配置有两种:1、url 2、resource
  

  • typeAliases标签:使用别名
    只能配置实体类中别名,type指定实体类全限定类名,不限定大小写 package标签:用于指定要使用别名的包,类名就是别名,不在区分大小写
  • mappers标签
    package标签:用于指定dao接口要使用别名的包,类名就是别名,不在区分大小写

待解决:Proxy(动态代理)

你可能感兴趣的:(MyBatis学习笔记(二))