之前写了一个关于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);
}
}