zoukankan      html  css  js  c++  java
  • Mybatis 系列10-注解CRUD

    mybatis常用注解

    @Insert:实现新增
    @Update:实现更新
    @Delete:实现删除
    @Select:实现查询
    @Result:实现结果集封装
    @Results:可以与@Result 一起使用,封装多个结果集
    @ResultMap:实现引用@Results 定义的封装
    @One:实现一对一结果集封装
    @Many:实现一对多结果集封装
    @SelectProvider: 实现动态 SQL 映射
    @CacheNamespace:实现注解二级缓存的使用

    在resources下不再创建持久层对应的xml配置文件了,改为在持久层接口中包含sql语句:

    package com.mantishell.dao;
    
    import com.mantishell.domain.User;
    import org.apache.ibatis.annotations.Delete;
    import org.apache.ibatis.annotations.Insert;
    import org.apache.ibatis.annotations.Select;
    import org.apache.ibatis.annotations.Update;
    
    import java.util.List;
    
    public interface IUserDao {
        /**
         * 查询所有用户
         * @return
         */
        @Select("select * from user")
        List<User> findAll();
    
        /**
         * 保存用户
         * @param user
         */
        @Insert("insert into user(username,address,sex,birthday)values(#{username},#{address},#{sex},#{birthday})")
        void saveUser(User user);
    
        /**
         * 更新用户
         * @param user
         */
        @Update("update user set username=#{username},sex=#{sex},birthday=#{birthday},address=#{address} where id=#{id}")
        void updateUser(User user);
    
        /**
         * 删除用户
         * @param userId
         */
        @Delete("delete from user where id=#{id} ")
        void deleteUser(Integer userId);
    
        /**
         * 根据id查询用户
         * @param userId
         * @return
         */
        @Select("select * from user  where id=#{id} ")
        User findById(Integer userId);
    
        /**
         * 根据用户名称模糊查询
         * @param username
         * @return
         */
    //    @Select("select * from user where username like #{username} ")
        @Select("select * from user where username like '%${value}%' ")
        List<User> findUserByName(String username);
    
        /**
         * 查询总用户数量
         * @return
         */
        @Select("select count(*) from user ")
        int findTotalUser();
    }
    
    

    jdbcConfig.properties中有个地方需要注意:

    jdbc.driver=com.mysql.jdbc.Driver
    jdbc.url=jdbc:mysql://localhost:3306/db2?useUnicode=true&characterEncoding=utf8
    jdbc.username=root
    jdbc.password=123456
    

    加上这么两个参数?useUnicode=true&characterEncoding=utf8,是为了正确传输中文字符。
    测试:

    package com.mantishell.test;
    
    import com.mantishell.dao.IUserDao;
    import com.mantishell.domain.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.InputStream;
    import java.util.Date;
    import java.util.List;
    
    public class MybatisAnnoTest {
        private InputStream in;
        private SqlSessionFactory factory;
        private SqlSession session;
        private IUserDao userDao;
    
        @Before
        public  void init()throws Exception{
            in = Resources.getResourceAsStream("SqlMapConfig.xml");
            factory = new SqlSessionFactoryBuilder().build(in);
            session = factory.openSession();
            userDao = session.getMapper(IUserDao.class);
        }
    
        @After
        public  void destroy()throws  Exception{
            session.commit();
            session.close();
            in.close();
        }
    
    
        @Test
        public void testSave(){
            User user = new User();
            user.setUsername("mybatis annotation");
            user.setAddress("江苏省南京市");
    
            userDao.saveUser(user);
            System.out.println(user);
        }
    
        @Test
        public void testUpdate(){
            User user = new User();
            user.setId(57);
            user.setUsername("mybatis annotation update");
            user.setAddress("江苏省南京市");
            user.setSex("男");
            user.setBirthday(new Date());
    
            userDao.updateUser(user);
        }
    
    
        @Test
        public void testDelete(){
            userDao.deleteUser(51);
        }
    
        @Test
        public void testFindOne(){
            User user = userDao.findById(57);
            System.out.println(user);
        }
    
    
        @Test
        public  void testFindByName(){
    //        List<User> users = userDao.findUserByName("%mybatis%");
            List<User> users = userDao.findUserByName("mybatis");
            for(User user : users){
                System.out.println(user);
            }
        }
    
        @Test
        public  void testFindTotal(){
            int total = userDao.findTotalUser();
            System.out.println(total);
        }
    }
    
    
  • 相关阅读:
    springIOC 原理
    jeesite异步分页
    yum
    乐观锁原理
    equlas(),hashcode(),hashset,hashmap
    链接收藏
    java单词
    jeesite优化
    SailingEase .NET Resources Tool (.NET 多语言资源编辑器)转
    C#基本语法
  • 原文地址:https://www.cnblogs.com/mantishell/p/12512519.html
Copyright © 2011-2022 走看看