简介
- 如何使用映射配置文件的方式完成 CRUD 操作在前面已经详细的介绍过了,本文将通过使用注解的方式完成 CRUD 操作,并演示 Java实体类变量名 和 数据库字段名 相同和不相同的两种不同的处理方法。
目录结构
- src/main
- java
- cn/water/dao
- UserDao.java(持久层接口)
- User_UserDao.java(持久层接口)
- cn/water/domain
- User.java(实体层)
- User_User.java(实体层)
- resources
- SqlMapConfig.xml(MyBatis主配置文件)
- jdbcConfig.properties(数据库连接信息文件)
- cn/water/dao
- java
- src/tese
- java
- cn/water/test
- UserTest.java(测试文件)
- UserUserTest.java(测试文件)
- cn/water/test
- java
MyBatis主配置文件
jdbcConfig.properties
1 | jdbc.driver=com.mysql.jdbc.Driver |
SqlMapConfig.xml
1 |
|
实体类
User.java
1 | package cn.water.domain; |
User_User.java
1 | package cn.water.domain; |
持久层接口
UserDao.java
1 | package cn.water.dao; |
User_UserDao.java
1 | package cn.water.dao; |
测试类
UserTest.java
1 | package cn.water; |
User_UserTest.java
1 | package cn.water; |
实现CRUD操作
- 单表的CRUD操作是最基本的操作,前面我们的学习都是基于Mybaits的映射配置文件来实现的,现在我们试着使用基于MyBatis注解的方式来实现CRUD操作。
- 本案例的情况是:Java实体类的变量名 与 数据库的字段名 相同
- 注解
- @Insert:实现新增
- @Update:实现更新
- @Delete:实现删除
- @Select:实现查询
添加用户
- 持久层接口
1 | "INSERT INTO user VALUES (#{id},#{username},#{birthday},#{sex},#{address})") ( |
更新用户
- 持久层接口
1 | "UPDATE user SET username=#{username},birthday=#{birthday},sex=#{sex},address=#{address} WHERE id=#{id}") ( |
删除用户
- 持久层接口
1 | "DELETE FROM user WHERE id=#{id}") ( |
查找所有用户
- 持久层接口
1 | "SELECT * FROM user ") ( |
查询单个用户
- 持久层接口
1 | "SELECT * FROM user WHERE id=#{id}") ( |
根据姓名模糊查询
- 持久层接口
1 | // @Select("SELECT * FROM user WHERE username LIKE #{username}") |
查询所有用户数量
- 持久层接口
1 | "SELECT COUNT(*) FROM user ") ( |
实现查询操作
- 当 Java实体类的变量名 与 数据库的字段名 不相同时,我们需要设置 @Results注解。
- 注解
- @Result:实现结果集封装
- id:是否是主键字段
- column:数据库的列名
- property:需要装配的属性名
- one:需要使用的@One注解(@Result(one=@One)()))
- many:需要使用的@Many注解(@Result(many=@many)()))
- @Results:封装多个结果集
- @ResultMap:实现引用@Results定义的封装
- @Result:实现结果集封装
查找所有用户
- 持久层接口
1 | "SELECT * FROM user ") ( |
查询单个用户
- 持久层接口
1 | "SELECT * FROM user WHERE id=#{id}") ( |
根据姓名模糊查询
- 持久层接口
1 | "SELECT * FROM user WHERE username LIKE '%${value}%' ") ( |