哪个网站可以做试卷,阿里云oss做视频网站,wordpress 首页幻灯,网站 毕业设计代做Mybatis的注解开发
MyBatis的常用注解
这几年来注解开发越来越流行#xff0c;Mybatis也可以使用注解开发方式#xff0c;这样我们就可以减少编写Mapper映射文件了。
Insert#xff1a;实现新增
Update#xff1a;实现更新
Delete#xff1a;实现删除
Select#x…Mybatis的注解开发
MyBatis的常用注解
这几年来注解开发越来越流行Mybatis也可以使用注解开发方式这样我们就可以减少编写Mapper映射文件了。
Insert实现新增
Update实现更新
Delete实现删除
Select实现查询
Result实现结果集封装
Results可以与Result 一起使用封装多个结果集
One实现一对一结果集封装
Many实现一对多结果集封装
MyBatis的增删改查
我们完成简单的user表的增删改查的操作 修改MyBatis的核心配置文件我们使用了注解替代的映射文件所以我们只需要加载使用了注解的Mapper接口即可
mappers!--扫描使用注解的类--mapper classcom.itheima.mapper.UserMapper/mapper
/mappers或者指定扫描包含映射关系的接口所在的包也可以
mappers!--扫描使用注解的类所在的包--package namecom.itheima.mapper/package
/mappersuserMapper mapper;Beforepublic void before(){InputStream resourceAsStream null;try {resourceAsStream Resources.getResourceAsStream(SqlMapConfig.xml);} catch (IOException ioException) {ioException.printStackTrace();}SqlSessionFactory sqlSessionFactorynew SqlSessionFactoryBuilder().build(resourceAsStream);SqlSession sqlSession sqlSessionFactory.openSession(true);mapper sqlSession.getMapper(userMapper.class);}Testpublic void tset4() {User user new User();user.setUsername(cx);user.setPassword(159);mapper.add(user);}Testpublic void tset5() {mapper.delete(5);}Testpublic void tset6() {User user new User();user.setId(4);user.setPassword(159);mapper.update(user);}Testpublic void tset7() {System.out.println(mapper.findById(1));}public interface userMapper {Select( select * from user)public ListUser findAll();Select(select * from user where id#{id})public User findById(int i);Insert( insert into user values (#{id},#{username},#{password},#{birthday}))public void add(User user);Update( update user set password#{password} where id#{id})public void update(User user);Delete(delete from user where id#{id})public void delete(int i);}MyBatis的注解实现复杂映射开发
实现复杂关系映射之前我们可以在映射文件中通过配置来实现使用注解开发后我们可以使用Results注解Result注解One注解Many注解组合完成复杂关系的配置
一对一查询
一对一查询的模型
用户表和订单表的关系为一个用户有多个订单一个订单只从属于一个用户
一对一查询的需求查询一个订单与此同时查询出该订单所属的用户
创建Order和User实体
public class Order {private int id;private Date ordertime;private double total;//代表当前订单从属于哪一个客户private User user;
}public class User {private int id;private String username;private String password;private Date birthday;}创建OrderMapper接口
public interface OrderMapper {ListOrder findAll();
}使用注解配置Mapper
public interface OrderMapper {Select(select * from orders)Results({Result(property id,column id),Result(property ordertime,column ordertime),Result(property total,column total),Result(property user,column uid,javaType User.class,one One(select com.controller.userMapper.findById))})ListOrder findAll();
}
测试结果 Testpublic void tset3() {InputStream resourceAsStream null;try {resourceAsStream Resources.getResourceAsStream(SqlMapConfig.xml);} catch (IOException ioException) {ioException.printStackTrace();}SqlSessionFactory sqlSessionFactorynew SqlSessionFactoryBuilder().build(resourceAsStream);SqlSession sqlSession sqlSessionFactory.openSession(true);OrderMapper mapper sqlSession.getMapper(OrderMapper.class);System.out.println(mapper.findAll());}一对多查询
一对多查询的模型
用户表和订单表的关系为一个用户有多个订单一个订单只从属于一个用户
一对多查询的需求查询一个用户与此同时查询出该用户具有的订单
修改User实体
public class Order {private int id;private Date ordertime;private double total;//代表当前订单从属于哪一个客户private User user;
}public class User {private int id;private String username;private String password;private Date birthday;//代表当前用户具备哪些订单private ListOrder orderList;
}创建UserMapper接口
ListUser findAllUserAndOrder();使用注解配置Mapper Select( select * from user)Results({Result(property username ,column username),Result(property password,column password),Result(property birthday ,column birthday),Result(idtrue,property id,column id),Result(property orderList,column id,javaType List.class,many Many(select com.controller.OrderMapper.findByUid))})public ListUser findAllUserAndOrder();Select(select * from orders where uid#{uid})Order findByUid(int i);测试结果 userMapper mapper;Beforepublic void before(){InputStream resourceAsStream null;try {resourceAsStream Resources.getResourceAsStream(SqlMapConfig.xml);} catch (IOException ioException) {ioException.printStackTrace();}SqlSessionFactory sqlSessionFactorynew SqlSessionFactoryBuilder().build(resourceAsStream);SqlSession sqlSession sqlSessionFactory.openSession(true);mapper sqlSession.getMapper(userMapper.class);} Testpublic void tset7() {System.out.println(mapper.findAllUserAndOrder());}多对多查询
多对多查询的模型
用户表和角色表的关系为一个用户有多个角色一个角色被多个用户使用
多对多查询的需求查询用户同时查询出该用户的所有角色
public class User {private int id;private String username;private String password;private Date birthday;//代表当前用户具备哪些订单private ListOrder orderList;//代表当前用户具备哪些角色private ListRole roleList;
}public class Role {private int id;private String rolename;}添加UserMapper接口方法
ListUser findAllUserAndRole();使用注解配置Mapper Select( select * from user)Results({Result(property username ,column username),Result(property password,column password),Result(property birthday ,column birthday),Result(idtrue,property id,column id),Result(property roleList,column id,javaType List.class,many Many(select com.controller.RoleMapper.findById))})public ListUser findAllUserAndRole();public interface RoleMapper {Select(select r.* from sys_user_role ur,sys_role r where ur.roleidr.id and #{id}ur.userid)ListRole findById(int i);
}
测试结果 Beforepublic void before(){InputStream resourceAsStream null;try {resourceAsStream Resources.getResourceAsStream(SqlMapConfig.xml);} catch (IOException ioException) {ioException.printStackTrace();}SqlSessionFactory sqlSessionFactorynew SqlSessionFactoryBuilder().build(resourceAsStream);SqlSession sqlSession sqlSessionFactory.openSession(true);mapper sqlSession.getMapper(userMapper.class);}Testpublic void tset7() {System.out.println(mapper.findAllUserAndRole());}