spring的IOC有注解来协助完成,spring的AOP有注解来协助完成,springmvc也有注解来协助完成,自从java支持 注解以来,注解一直是所有开发者比较喜欢的选择。mybatis也有注解来代替冗杂的xml配置来达到简化开发的目的,今天我们一起来学习一下mybatis的注解吧!
1、如何使用注解添加一条数据?
我们使用@Insert注解来添加一条数据,使用注解的时候,我们仍然不能省去mybatis-config.xml配置文件的配置,也不能不去创建映射文件mapper,因为我们需要从mapper中指定命名空间到映射接口,我们来看一下如何添加一条user的数据吧:
mybatis-config.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<properties resource="database.properties"></properties>
<typeAliases>
<typeAlias alias="user" type="com.mybatis.pojo.User"/>
</typeAliases>
<environments default="mysql">
<environment id="mysql">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/mybatis/mapper/UserMapper.xml"/>
</mappers>
</configuration>
User.java
package com.mybatis.pojo;
/**
* 就是一个简单的pojo,不需要继承任何类或者接口
* 这就是mybatis为什么被称为低侵入式
*
*/
public class User {
private int id;
private String name;
private int age;
private String address;
private int orderid;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getOrderid() {
return orderid;
}
public void setOrderid(int orderid) {
this.orderid = orderid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
UserMapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- 我们只需要写个mapper来指定命名空间即可 -->
<mapper namespace="com.mybatis.mapper.UserMapper"></mapper>
UserMapper.java
package com.mybatis.mapper;
import org.apache.ibatis.annotations.Insert;
import com.mybatis.pojo.User;
public interface UserMapper {
@Insert("INSERT INTO user(name,age,address,orderid) VALUES(#{name},#{age},#{address},#{orderid})")
public void addUser(User user);
}
MybatisTest.java
package com.mybatis.test;
import java.io.IOException;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import com.mybatis.mapper.UserMapper;
import com.mybatis.pojo.User;
public class MybatisTest {
public static void main(String[] args) throws IOException {
// 获取sqlSession
SqlSession sqlSession = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis-config.xml")).openSession();
// 使用getMapper获取到接口对象,然后再调用接口的方法
// 代替了原来的sqlSession中的select、insert、update、delete方法
UserMapper um = sqlSession.getMapper(UserMapper.class);
User user = new User();
user.setName("caixiaobai");
user.setAge(18);
user.setAddress("Beijing");
user.setOrderid(1);
um.addUser(user);
// 提交并关闭
sqlSession.commit();
sqlSession.close();
}
}
2、如何使用注解删除数据?
我们使用注解@Delete来删除一条数据,我们只看映射接口的注解如何使用就可以了,其他地方和上面问题中相差无几:
UserMapper.java
package com.mybatis.mapper;
import org.apache.ibatis.annotations.Delete;
import com.mybatis.pojo.User;
public interface UserMapper {
@Delete("DELETE FROM user WHERE id = #{id}")
public void deleteUser(User user);
}
3、如何使用注解修改数据?
修改数据使用注解@Update,我们来看一下映射接口的代码:
UserMapper.java
package com.mybatis.mapper;
import org.apache.ibatis.annotations.Update;
import com.mybatis.pojo.User;
public interface UserMapper {
@Update("UPDATE user SET name = #{name} WHERE id = #{id}")
public void updateUser(User user);
}
4、如何使用注解查询数据?
查询数据使用标签@Select,代码如下:
UserMapper.java
package com.mybatis.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Select;
import com.mybatis.pojo.User;
public interface UserMapper {
@Select("SELECT * FROM user")
public List<User> findUser();
}