02 - mybatis - crud

3 crud

注意:所有增删改都必须提交事务

提取共有代码

SqlSession session = null;

@Before
public void befor() throws IOException {
    // 加载配置文件
    InputStream stream = Resources.getResourceAsStream("mybatis.xml");
    //创建会话工厂
    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(stream);
    // 打开session
    session = sqlSessionFactory.openSession();
}

@After
public void afte(){
    if(session!=null){
        session.close();
    }
}

增加

xml配置

<!--添加-->
<insert id="add" parameterType="cn.laixueit.pojo.User">
   <selectKey keyColumn="id" keyProperty="id" resultType="int">
       select last_insert_id()
   </selectKey>
   insert into user(username)
   values(#{username})
</insert>
@Test
public void add(){
   UserMapper userMapper = session.getMapper(UserMapper.class);

   StringBuffer stringBuffer = new StringBuffer();
   for (int i = 0; i < 10; i++) {
       char c = (char) (Math.random() * 26 + 97);
       stringBuffer.append(c);
   }


   User user = new User();
   user.setUsername(stringBuffer.toString());

   int i = userMapper.add(user);

   // 必须要执行事务提交
   session.commit();
   System.out.println(user);

}

增加返回自增主键

 <selectKey keyProperty="id" keyColumn="id" resultType="int">
     select last_insert_id()
</selectKey>

删除

<delete id="delete">
       delete from user where id = #{id}
   </delete>
@Test
public void delete() throws IOException {

   // 加载配置文件
   InputStream stream = Resources.getResourceAsStream("mybatis.xml");
   //创建会话工厂
   SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(stream);

   SqlSession session = sqlSessionFactory.openSession(true);

   UserMapper userMapper = session.getMapper(UserMapper.class);

   int i = userMapper.delete(75);

   System.out.println(i);
}

修改

<update id="update" parameterType="cn.laixueit.pojo.User">
       update user set username= #{username} where id =#{id}
   </update>
@Test
public void update() throws IOException {

   // 加载配置文件
   InputStream stream = Resources.getResourceAsStream("mybatis.xml");
   //创建会话工厂
   SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(stream);

   SqlSession session = sqlSessionFactory.openSession(true);

   UserMapper userMapper = session.getMapper(UserMapper.class);

   int i = userMapper.update(new User(75, "aaa"));

   System.out.println(i);
}

查询所有/查询单条

<!--查所有-->
   <select id="findAll" resultType="cn.laixueit.pojo.User">
       select * from user
   </select>

   <!--查单个根据id-->
   <select id="findById" resultType="cn.laixueit.pojo.User" parameterType="int">
       select * from user where id = #{id}
   </select>
@Test
public void findAll() throws IOException {

   // 得到mapper的实例
   UserMapper userMapper = session.getMapper(UserMapper.class);

   List<User> users = userMapper.findAll();

   System.out.println(users);

}

@Test
public void findById(){
   UserMapper userMapper = session.getMapper(UserMapper.class);

   User user = userMapper.findById(44);

   System.out.println(user);

}

4 查询

1 多条件查询

<select id="findByNameAndSex" resultType="cn.laixueit.pojo.User" parameterType="cn.laixueit.pojo.User">
        select * from user where username=#{username} and sex = #{sex}
    </select>
@Test
    public void findByNameAndSex() throws IOException {

        // 加载配置文件
        InputStream stream = Resources.getResourceAsStream("mybatis.xml");
        //创建会话工厂
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(stream);

        SqlSession session = sqlSessionFactory.openSession(true);

        UserMapper userMapper = session.getMapper(UserMapper.class);

        List<User> byNameAndSex = userMapper.findByNameAndSex(new User("老王", "男女"));

        System.out.println(byNameAndSex);

    }

2 分页查询

两种方法

<select id="selectPage" resultType="cn.laixueit.pojo.User" parameterType="cn.laixueit.common.Page">
    select * from user limit #{startPage},#{pageSize}
</select>


<select id="selectPage2" resultType="cn.laixueit.pojo.User" parameterType="map">
    select * from user limit #{startPage1},#{pageSize2}
</select>
@Test
    public void selectPage() throws IOException {

        // 加载配置文件
        InputStream stream = Resources.getResourceAsStream("mybatis.xml");
        //创建会话工厂
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(stream);

        SqlSession session = sqlSessionFactory.openSession(true);

        UserMapper userMapper = session.getMapper(UserMapper.class);


        Page page = new Page();
        page.setStartPage((2-1)*5);
        page.setPageSize(5);

        List<User> pageList = userMapper.selectPage(page);

        for (User user : pageList) {
            System.out.println(user);
        }

    }

    @Test
    public void selectPage2() throws IOException {

        // 加载配置文件
        InputStream stream = Resources.getResourceAsStream("mybatis.xml");
        //创建会话工厂
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(stream);

        SqlSession session = sqlSessionFactory.openSession(true);

        UserMapper userMapper = session.getMapper(UserMapper.class);


        HashMap<String, Integer> map = new HashMap<String, Integer>();
        map.put("startPage1",(2-1)*5);
        map.put("pageSize2",5);

        List<User> pageList = userMapper.selectPage2(map);

        for (User user : pageList) {
            System.out.println(user);
        }

    }

3 分页条件查询

public List<User> selectPageCondition(Map map);
<select id="selectPageCondition" resultType="cn.laixueit.pojo.User" parameterType="map">
    select * from user where username  like '%${user.username}%' limit #{startPage},#{pageSize}
</select>

@Test
public void selectPageCondition() throws IOException {

    // 加载配置文件
    InputStream stream = Resources.getResourceAsStream("mybatis.xml");
    //创建会话工厂
    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(stream);

    SqlSession session = sqlSessionFactory.openSession(true);

    UserMapper userMapper = session.getMapper(UserMapper.class);


    User u = new User();u.setUsername("华硕");


    HashMap<String, Object> map = new HashMap<String, Object>();
    map.put("startPage",(1-1)*5);
    map.put("pageSize",5);
    map.put("user",u);

    List<User> pageList = userMapper.selectPageCondition(map);

    for (User user : pageList) {
        System.out.println(user);
    }

}        

4 模糊查询

<select id="findLike" resultType="cn.laixueit.pojo.Student" parameterType="string">
   select * from student where name like #{name}
</select>

<select id="findLike2" resultType="cn.laixueit.pojo.Student" parameterType="string">
   select * from student where name like "%"#{name}"%"
</select>

<select id="findLike3" resultType="cn.laixueit.pojo.Student" parameterType="string">
   select * from student where name like '%${name}%'
</select>
@Test
public void findLike() throws IOException {

   StudentMapper mapper = session.getMapper(StudentMapper.class);

   List<Student> studentList = mapper.findLike("%"+"零零"+"%");

   studentList.forEach(System.out::println);

}

@Test
public void findLike2() throws IOException {

   StudentMapper mapper = session.getMapper(StudentMapper.class);

   List<Student> studentList = mapper.findLike2("零零");

   studentList.forEach(System.out::println);

}


@Test
public void findLike3() throws IOException {

   StudentMapper mapper = session.getMapper(StudentMapper.class);

   List<Student> studentList = mapper.findLike3("零零");

   studentList.forEach(System.out::println);

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值