依靠注解来开发MyBatis并且使用CRUD

MyBatis中注解开发

MyBatis也可以依靠注解开发,不使用mapper.xml,但只适合那些简单的sql语句,复杂和数据量大的还是推荐xml开发。

使用注解开发本质上是利用了jvm的动态代理机制

且使用注解开发会使程序耦合性提高,维护和管理较为麻烦

session工具类

 //获取SqlSession连接
  public static SqlSession getSession(){
      return getSession(true); //事务自动提交
  }
 
  public static SqlSession getSession(){
      return sqlSessionFactory.openSession(true);
      //当我们给openSession传入true参数时,
      //我们就不需要再进行session.commit来提交增删改等操作
      //Mybatis可以帮助我们自动提交操作
  }

sql类型的注解有:@select ()@update ()@Insert ()@delete ()

//查询全部用户
@Select("select * password from user")
public List<User> getAll();

我们虽不需要了mapper的映射文件,但我们还是需要在mapper核心配置文件中为这个注入,需要使用class属性

<mappers>
   <mapper class="com.nicht.mapper.UserMapper"/>
</mappers>

测试

public void test() {
   SqlSession session = MybatisUtils.getSession();
   UserMapper mapper = session.getMapper(UserMapper.class);
   List<User> users = mapper.getAll();
   for (User user : users){
       System.out.println(user);
  }
   session.close();
}

用注解开发MyBatis中CRUD

1 查询

依靠**@select ()**注解来进行查询操作

//查询用户
@Select("select * from user where id = #{id}")
public User getUser(@Parma("id") int id);

其中 @Parma 可以解决属性和数据库列的名称不匹配

<mappers>
   <mapper class="com.nicht.mapper.UserMapper"/>
</mappers>

测试

public void test() {
   SqlSession session = MybatisUtils.getSession();
   UserMapper mapper = session.getMapper(UserMapper.class);
   User users = mapper.getUser(1);
   System.out.println(user);
   session.close();
}

2 增加

依靠**@Insert ()**注解来进行查询操作

//插入用户
@Insert("insert into user(id,name,year) values (#{id},#{name},#{year})")
int addUser(User user);
<mappers>
   <mapper class="com.nicht.mapper.UserMapper"/>
</mappers>

测试

public void test() {
   SqlSession session = MybatisUtils.getSession();
   UserMapper mapper = session.getMapper(UserMapper.class);
   User user1 = new User(4, "孙笑川", "18");
   int i = mapper.addUser(user1);
   System.out.println(i);
   //因为我们进行给openSession()传入了true参数
   //就不再需要session.commit()来提交;
   session.close();
}

3 修改

依靠**@update ()**注解来进行查询操作

@Update("update user set name=#{name},pwd=#{pwd} where id = #{id}")
int updateUser(User user);
<mappers>
   <mapper class="com.nicht.mapper.UserMapper"/>
</mappers>

测试

public void test() {
   SqlSession session = MybatisUtils.getSession();
   UserMapper mapper = session.getMapper(UserMapper.class);
   User user2 = new User(4, "孙笑川", "18");
   int i = mapper.updateUser(user2);
   System.out.println(i);
   //因为我们进行给openSession()传入了true参数
   //就不再需要session.commit()来提交;
   session.close();
}

4 删除

依靠**@delete ()**注解来进行查询操作

@Delete("delete from user where id = #{id}")
int deleteUser(@Param("id")int id);
<mappers>
   <mapper class="com.nicht.mapper.UserMapper"/>
</mappers>

测试

public void test() {
   SqlSession session = MybatisUtils.getSession();
   UserMapper mapper = session.getMapper(UserMapper.class);
   int i = mapper.deleteUser(1);
   System.out.println(i);
   session.close();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值