mysql annotations_Mybatis 框架基于注解(annotations)的方式实现增删改查(CRUD)---注解方式...

此篇文章基于上一篇Mybatis初识的基础上进行增改--请点击查看上一篇-->Mybatis框架初识

此篇文章主要写Mybatis框架基于注解的方式实现增删改查操作---基于Xml方式请点击-->Mybatis框架基于Xml方式实现增删改查

1,首先写个用到的Mybatis工具类,建个包:cm.demo.util ,包下写个MyBatisUtil类

package cm.demo.util;

import java.io.InputStream;

import org.apache.ibatis.session.SqlSession;

import org.apache.ibatis.session.SqlSessionFactory;

import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class MyBatisUtil {

/**

* 获取SqlSessionFactory

*/

public static SqlSessionFactory getSqlSessionFactory() {

String resource = "conf.xml";

InputStream is = MyBatisUtil.class.getClassLoader().getResourceAsStream(resource);

SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);

return factory;

}

/**

* 获取SqlSession

*/

public static SqlSession getSqlSession() {

return getSqlSessionFactory().openSession();

}

/**

* 获取SqlSession

* true 表示创建的SqlSession对象在执行完SQL之后会自动提交事务

* false 表示创建的SqlSession对象在执行完SQL之后不会自动提交事务,

* 这时就需要我们手动调用sqlSession.commit()提交事务

* @return SqlSession

*/

public static SqlSession getSqlSession(boolean isAutoCommit) {

return getSqlSessionFactory().openSession(isAutoCommit);

}

}

写好工具类之后,定义一个接口:

package cm.demo.mapping;

import java.util.List;

import cm.demo.main.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;

/**

* 定义sql映射的接口,使用注解指明方法要执行的SQL

*/

public interface UserMapperIF {

//使用@Insert注解指明add方法要执行的SQL

@Insert("insert into users(name, age) values(#{name}, #{age})")

public int add(User user);

//使用@Delete注解指明deleteById方法要执行的SQL

@Delete("delete from users where id=#{id}")

public int deleteById(int id);

//使用@Update注解指明update方法要执行的SQL

@Update("update users set name=#{name},age=#{age} where id=#{id}")

public int update(User user);

//使用@Select注解指明getById方法要执行的SQL

@Select("select * from users where id=#{id}")

public User getById(int id);

//使用@Select注解指明getAll方法要执行的SQL

@Select("select * from users")

public List getAll();

}

我们不需要针对UserMapperIF接口去编写具体的实现类代码,具体的实现类由MyBatis动态构建出来,只需要直接拿来使用即可!

接口定义完成后,我们在conf.xml文件中注册这个映射接口:

这个地方注意:  接口注册是  class 不是resource

单元测试类:

package cm.demo.test;

import java.util.List;

import cm.demo.main.User;

import cm.demo.mapping.UserMapperI;

import cm.demo.util.MyBatisUtil;

import org.apache.ibatis.session.SqlSession;

import org.junit.Test;

public class TestCRUDAnnotationMapper {

@Test

public void testAdd(){

SqlSession sqlSession = MyBatisUtil.getSqlSession(true);

//得到UserMapperIF接口的实现类对象,UserMapperIF接口的实现类对象由sqlSession.getMapper(UserMapperIF.class)动态构建出来

UserMapperIF mapper = sqlSession.getMapper(UserMapperIF.class);

User user = new User();

user.setName("用户xdp");

user.setAge(20);

int add = mapper.add(user);

//使用SqlSession执行完SQL之后需要关闭SqlSession

sqlSession.close();

System.out.println(add);

}

@Test

public void testUpdate(){

SqlSession sqlSession = MyBatisUtil.getSqlSession(true);

//得到UserMapperIF接口的实现类对象,UserMapperIF接口的实现类对象由sqlSession.getMapper(UserMapperIF.class)动态构建出来

UserMapperIF mapper = sqlSession.getMapper(UserMapperIF.class);

User user = new User();

user.setId(3);

user.setName("吃鸡");

user.setAge(26);

//执行修改操作

int retResult = mapper.update(user);

//关闭SqlSession

sqlSession.close();

System.out.println(retResult);

}

@Test

public void testDelete(){

SqlSession sqlSession = MyBatisUtil.getSqlSession(true);

//得到UserMapperIF接口的实现类对象,UserMapperIF接口的实现类对象由sqlSession.getMapper(UserMapperIF.class)动态构建出来

UserMapperIF mapper = sqlSession.getMapper(UserMapperIF.class);

//执行删除操作

int retResult = mapper.deleteById(7);

//关闭SqlSession

sqlSession.close();

System.out.println(retResult);

}

@Test

public void testGetUser(){

SqlSession sqlSession = MyBatisUtil.getSqlSession();

//得到UserMapperIF接口的实现类对象,UserMapperIF接口的实现类对象由sqlSession.getMapper(UserMapperIF.class)动态构建出来

UserMapperIF mapper = sqlSession.getMapper(UserMapperIF.class);

//执行查询操作,将查询结果自动封装成User返回

User user = mapper.getById(8);

//关闭SqlSession

sqlSession.close();

System.out.println(user);

}

@Test

public void testGetAll(){

SqlSession sqlSession = MyBatisUtil.getSqlSession();

//得到UserMapperIF接口的实现类对象,UserMapperIF接口的实现类对象由sqlSession.getMapper(UserMapperIF.class)动态构建出来

UserMapperIF mapper = sqlSession.getMapper(UserMapperIF.class);

//执行查询操作,将查询结果自动封装成List返回

List lstUsers = mapper.getAll();

//使用SqlSession执行完SQL之后需要关闭SqlSession

sqlSession.close();

System.out.println(lstUsers);

}

}

这就是基于注解的方式实现Mybatis增删改查方式,欢迎各大学友、神哥、神姐多多指教,共同学习!后续随着不断的深入学习,会不断进行更新。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值