Mybatis注解入门实例

之前写了一个关于mybatis基于xml文件配置的小实例,现在对使用注解使用mybatis的操作进行一个总结
基于xml的配置在这里->https://blog.csdn.net/qq_45147812/article/details/105202001

  • 首先还是配置依赖
 <dependencies>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.5</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.6</version>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.12</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
  • 然后开始我们的项目,开始之前要有数据库哦,使用注解就不需要配置配置文件了
  • 首先编写与数据库对用的实体类
public class User implements Serializable {
    private int id;
    private String name;
    private String phone;
    private String department;
    private char regionCode;
    private String address;
    private int postCode;

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", phone='" + phone + '\'' +
                ", department='" + department + '\'' +
                ", regoinCode=" + regionCode +
                ", address='" + address + '\'' +
                ", postCode=" + postCode +
                '}';
    }

    public int getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

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

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public String getDepartment() {
        return department;
    }

    public void setDepartment(String department) {
        this.department = department;
    }

    public char getRegionCode() {
        return regionCode;
    }

    public void setRegionCode(char regoioCode) {
        this.regionCode = regionCode;
    }

    public String getAddress() {
        return address;
    }

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

    public int getPostCode() {
        return postCode;
    }

    public void setPostCode(int postCode) {
        this.postCode = postCode;
    }
}

  • 编写接口,并在接口方法前加上注解
public interface IUserDao {
    @Select("select *from customerinfo")
    @Results(id="userMap",value = {
            @Result(column = "telphone",property = "phone")
    })
    List<User> findAll();

    @Insert("insert into customerinfo( name,telphone,department,regioncode,address,postcode)values(#{name},#{phone},#{department},#{regionCode},#{address},#{postCode})")
    void saveUser(User user);

    @Update("update customerinfo set name=#{name},telphone=#{phone},regioncode=#{regionCode},address=#{address},postcode=#{postCode} where id=#{id}")
    void updateUser(User user);

    @Delete("delete from customerinfo where id=#{id}")
    void deleteUser(int id);

    @Select(" select * from customerinfo where id=#{id};")
    @ResultMap(value = {"userMap"})
    User findById(int id);

    //实现模糊查询
    @Select("select * from customerinfo where name like #{name}")
    @ResultMap(value = {"userMap"})
    List<User> findByName(String name);

    @Select("select count(*) from customerinfo")
    int findTotal();

    //通过user的某一属性或某几个属性查找
    @Select("select * from customerinfo where name=#{name} and address=#{address}")
    @ResultMap(value = {"userMap"})
    List<User> findByCondition(User user);
}

这样就完成咯,感觉要比配置文件要简单一点,只需要在写接口的时候加上对应的注解就可以,基于注解在学完spring以后一起使用可以更直观的看到与数据库的对应关系,但是在实际开发中好像使用注解的比较少,更多的人还是会选择使用xml进行配置

  • 附上测试类
public class MybatisTest {

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

    @Before//用于在运行test之前执行
    public void init() throws Exception{
        //1. 从classpath路径去加载MyBatis全局配置文件
        in = Resources.getResourceAsStream("SqlMapConfig.xml");
        //2. 创建sqlSessionFactory对象,好比是DataSource
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
        //3. 创建sqlSession对象,好比是Connection
        sqlSession = factory.openSession();
        //4.获取dao的代理对象
        userDao = sqlSession.getMapper(IUserDao.class);
    }

    @After//用于在运行test之后执行
    public void destroy() throws Exception{
        sqlSession.close();
        in.close();
    }

   @Test
    public void testFindAll() throws Exception{

        //4. 具体操作
        List<User> users = userDao.findAll();
        for (User user : users) {
            System.out.println(user);
        }

    }
    @Test
    public void testSaveUser() throws Exception{
       User user=new User();
       user.setName("AnnotationTest");
       user.setPhone("65432");
       user.setDepartment("河南省开封市");
       user.setRegionCode((char)12345);
       user.setAddress("哈哈哈");
       user.setPostCode(12345);
       userDao.saveUser(user);
       sqlSession.commit();
    }
    @Test
    public void testUpdateUser(){
        User user=new User();
        user.setId(12);
        user.setName("Testupdate");
        user.setPhone("123456");
        user.setDepartment("河南省郑州市");
        user.setRegionCode('c');
        user.setAddress("zzu");
        user.setPostCode(15612);
        userDao.updateUser(user);
        sqlSession.commit();
    }
    @Test
    public void testDeleteUser(){

        userDao.deleteUser(12);
        sqlSession.commit();
    }
    @Test
    public void testFindByID(){

        User user=userDao.findById(12);
        System.out.println(user);
    }
    @Test
    public void testFindByName(){

        List<User> users=userDao.findByName("%张%");
        System.out.println(users);
    }
    @Test
    public void testFindTotal(){

        int count=userDao.findTotal();
        System.out.println(count);
    }
    @Test
    public void testFindByCondition(){

        User user=new User();
        user.setName("哈哈");
        user.setAddress("北京");
        List<User> users =userDao.findByCondition(user);
        System.out.println(users);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值