Mybatis注解配置
俩pojo类
package top.yibobo.pojo;
import java.sql.Date;
public class Article {
private Integer id;
private String title;
private String content;
private Date publishTime;
private Author author;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public Date getPublishTime() {
return publishTime;
}
public void setPublishTime(Date publishTime) {
this.publishTime = publishTime;
}
public Author getAuthor() {
return author;
}
public void setAuthor(Author author) {
this.author = author;
}
@Override
public String toString() {
return "Article{" +
"id=" + id +
", title='" + title + '\'' +
", content='" + content + '\'' +
", publishTime=" + publishTime +
", author=" + author +
'}';
}
}
package top.yibobo.pojo;
import java.sql.Date;
public class Author {
private int id;
private String name;
private String sex;
private Date birthday;
private String address;
private String phone;
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 getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
@Override
public String toString() {
return "Author{" +
"id=" + id +
", name='" + name + '\'' +
", sex='" + sex + '\'' +
", birthday=" + birthday +
", address='" + address + '\'' +
", phone='" + phone + '\'' +
'}';
}
}
俩pojo的接口
这个文章类写了两个查所有方法,其中一个是纯注解配置,还有一个是XML配置
package top.yibobo.dao;
import org.apache.ibatis.annotations.*;
import top.yibobo.pojo.Article;
import java.util.List;
public interface ArticleMapper {
@Insert("insert into article values(null,#{title}," +
"#{content},#{publishTime},#{author.id})")
int addArticle(Article article);
@Update("update article set title=#{title} where id=#{id}")
int updateArticle(Article article);
@Delete("DELETE FROM article WHERE id=#{arid}")
int deleteArticle(@Param("arid") int arid);
@Select("SELECT * FROM article WHERE id=#{arid}")
Article findById(@Param("arid") int arid);
@Results(value = {@Result(id = true,property = "id",column = "id"),//子查询嵌套
@Result(property = "title",column = "title"),
@Result (property = "content",column = "content"),
@Result(property = "publishTime",column = "publish_time"),
@Result(property = "author",column = "au_id",
javaType = top.yibobo.pojo.Author.class,
one = @One(select = "top.yibobo.dao.AuthorMapper.findById"))})
@Select("SELECT * FROM article")
List<Article> findAll();
@ResultMap(value = "top.yibobo.dao.ArticleMapper.arList")
@Select("SELECT ar.id arid,title,content,publish_time,au.id auid,name " +
"FROM article ar LEFT JOIN author au ON ar.id=au.id")//表连接
List<Article> findAll2();
}
package top.yibobo.dao;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import top.yibobo.pojo.Author;
public interface AuthorMapper {
@Select("SELECT * FROM author WHERE id=#{auid}")
Author findById(@Param("auid") int auid);
}
mapper文件
<?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">
<!--ArticleMapper接口的映射文件-->
<mapper namespace="top.yibobo.dao.ArticleMapper">
<resultMap id="arList" type="top.yibobo.pojo.Article">
<id property = "id" column = "arid"/>
<result property = "title" column = "title"/>
<result property = "content" column = "content"/>
<result property = "publishTime" column = "publish_time"/>
<association property="author" javaType="top.yibobo.pojo.Author">
<id property="id" column="auid" />
<result property="name" column="name"/>
</association>
</resultMap>
</mapper>
