Mybatis——dao的编写

第一种方法:一般不用

完整的映射文件

<?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="user">
    <!--根据id查询-->
    <!--
		[id]:statement的id,要求在命名空间内唯一
		[parameterType]:入参的java类型
		[resultType]:查询出的单条结果集对应的java类型
		[#{}]: 表示一个占位符?
		[#{id}]:表示该占位符待接收参数的名称为id。
		注意:如果参数为简单类型时,#{}里面的参数名称可以是任意定义
	 -->

    <select id="findUserById" parameterType="int" resultType="com.szl.model.User">

        SELECT * from user where id=#{id}
    </select>


    <!--插入数据-->
    <!--这里的占位写的是模型的属性-->
    <insert id="insertUser" parameterType="com.szl.model.User">
        insert  into user (username,sex,birthday,address)
        values (#{username},#{sex},#{birthday},#{address});
    </insert>

    <!--删除数据-->
    <delete id="deleteUser" parameterType="int">
        delete from user where id=#{ids}
    </delete>

    <!--修改数据-->
    <update id="updateUser" parameterType="com.szl.model.User">
        update  user set address=#{address},sex=#{sex}
        where  id=#{id};
    </update>

    <!--插入返回id-->
    <insert id="insertUser2" parameterType="com.szl.model.User">
        <selectKey keyProperty="id" resultType="int" order="AFTER">
            select last_insert_id()
        </selectKey>
        insert  into user (username,sex,birthday,address)
        values (#{username},#{sex},#{birthday},#{address});
    </insert>
</mapper>

1创建dao接口

package com.szl.dao;

import com.szl.model.User;

public interface UserDao {
    /*
    保存
     */
    public void save(User user);
    /*
    * 查找
    * */
    public User findUserById(int id);
}

2实现dao类

package com.szl.dao;

import com.szl.model.User;

public interface UserDao {
    /*
    保存
     */
    public void save(User user);
    /*
    * 查找
    * */
    public User findUserById(int id);
}

3测试

package com.szl.test;

import com.szl.dao.UserDao;
import com.szl.dao.UserDaoImpi;
import com.szl.model.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.After;
import org.junit.Before;
import org.junit.Test;

import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
import java.util.List;

public class Demo3 {

    SqlSessionFactory factory;
   @Before
    public void before() throws IOException {
       System.out.println("before......获取session");
//      *  a)	读取配置文件;
       InputStream is= Resources.getResourceAsStream("SqlMapConfig.xml");
//        *  b)	通过SqlSessionFactoryBuilder创建SqlSessionFactory会话工厂。
        factory= new SqlSessionFactoryBuilder().build(is);

    }


    /*
    * 查询多条记录
    * */
    @Test
    public void test1() throws IOException {

//    调用dao
//        创建dao

        UserDao userDao=new UserDaoImpi(factory);
        //查询
        User user=userDao.findUserById(1);
        System.out.println(user);
        //插入
        User user1=new User("ccc","w",new Date(),"ddedd");
        userDao.save(user1);

    }


}

注:这两个方法的效果同前边查询添加效果一样

第二种:用mapper代理方式实现,就不用谢dao这个包了,写Mapper包

mapper代理的方式,程序员只需要编写mapper接口(相当于dao接口)即可,mybatis会自动的为mapper接口生成动态的代理实现类。(需要遵循一些规范)
规范:
1、mapper接口的全限定名要和mapper映射文件的namespace的值相同。
2、mapper接口的方法名称要和mapper映射文件中的statement的id相同。
3、mapper接口的方法参数只能有一个,且类型要和mapper映射文件中statement的parameterType的值保持一致。
4、mapper接口的返回值类型要和mapper映射文件中statement的resultType值或resultMap中的type值保持一致。

第一步

在这里插入图片描述
创建usermapper接口:

public interface UserMapper {
    /*
   保存
    */

    /**
     *
     * @param user
     * @return 受影响的行数
     */
    public int  save(User user);
    /*
     * 查找
     * */
    public User findUserById(int id);
}

创建UserMapper.xml映射文件

<?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.szl.mapper.UserMapper">
    <insert id="save" parameterType="com.szl.model.User">
        insert  into user (username,sex,birthday,address)
        values (#{username},#{sex},#{birthday},#{address})
    </insert>
    <select id="findUserById" parameterType="int" resultType="com.szl.model.User">
           SELECT * from user where id=#{id}
    </select>
</mapper>

第二步

配置mybatis主配置文件SqlMapConfig.xml:

 <mappers>
        <mapper resource="com/szl/mapper/UserMapper.xml"></mapper>

    </mappers>

第三步

创建测试类:

public class Demo4 {

    SqlSession session;
   @Before
    public void before() throws IOException {
       System.out.println("before......获取session");
//      *  a)	读取配置文件;
       InputStream is= Resources.getResourceAsStream("SqlMapConfig.xml");
//        *  b)	通过SqlSessionFactoryBuilder创建SqlSessionFactory会话工厂。
        SqlSessionFactory factory= new SqlSessionFactoryBuilder().build(is);
        session=factory.openSession();
    }
    @After
    public void after(){
       session.close();
    }

    /*
    * 查询多条记录
    * */
    @Test
    public void test1() throws IOException {
        //查找
  //返回的是代理
    UserMapper userMapper= session.getMapper(UserMapper.class);
    System.out.println(userMapper.findUserById(1));

  //保存
      User user=new User("aaaaaab","2",new Date(),"xxx") ;
      userMapper.save(user);
      session.commit();;
    }


}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值