创建工程:
MyBatis可以在接口中直接添加MyBatis注解,完成CRUD。
但注解模式属于硬编码到.java文件中,失去了使用配置文件外部修改的优势,可结合需求选用。
public interface UserDao {
/**
* 查询所有用户
* @return
*/
@Select("select * from user")
public List<User> findAll();
/**
* 保存操作
* @param user
* @return
*/
@Insert("insert into user(username,sex,birthday,address)values(#{username},“+
"#{sex},#{birthday},#{address})")
@SelectKey(keyColumn="id",keyProperty="id",resultType=Integer.class,before =
false,statement = { "select last_insert_id()" })
int saveUser(User user);
/**
* 更新操作
* @param user
* @return
*/
@Update("update user set username=#{username},address=#{address}," +
"sex=#{sex},birthday=#{birthday} where id =#{id} ")
void updateUser(User user);
/**
* 删除用户
* @param id
* @return
*/
@Delete("delete from user where id = #{id} ")
void deleteUser(Integer id);
/**
* 查询使用聚合函数
* @return
*/
@Select("select count(*) from user ")
int findTotal();
/**
* 根据id查询用户
* @return
*/
@Select("select * from user where id = #{id} ")
public User findById(Integer id);
/**
* 一对多
* @return
*/
@Results(id="resultMap",
value= {
@Result(id=true,column="id",property="id"),
@Result(column="username",property="username"),
@Result(column="sex",property="sex"),
@Result(column="address",property="address"),
@Result(column="birthday",property="birthday"),
@Result(column="id",property="accounts",
many=@Many(
select="com.by.dao.AccountDao.findByuId",
fetchType= FetchType.LAZY
)
)
})
@Select("select * from user")
public List<User> findAll2();
}
public interface AccountDao {
@Results(id="accountMap",
value= {
@Result(id=true,column="id",property="id"),
@Result(column="uid",property="uid"),
@Result(column="money",property="money"),
@Result(column="uid",
property="user",
one=@One(select="com.by.dao.UserDao.findById",
fetchType= FetchType.LAZY)
)
})
@Select("select * from account")
List<Account> findAll();
@Select("select * from account where uid = #{uid} ")
List<Account> findByuId(Integer id);
}
public class User implements Serializable {
private Integer id;
private String username;
private String password;
private Date birthday;
private String sex;
private String address;
private List<Account> accounts;
//一对多关系映射
private List<Account> accounts;
// get set toString方法省略
}
public class Account implements Serializable {
private Integer id;
private Integer uid;
private Double money;
//一对一关系映射
private User user;
// get set toString方法省略
}
@Test
public void testFindAll() throws Exception{
UserDao userDao = sqlSession.getMapper(UserDao.class);
List<User> userList = userDao.findAll2();
for(User user : userList){
System.out.println(user);
}
}