Mybatis全网最详细教程(纯注解编程),包看包会! | 您所在的位置:网站首页 › mybatis注解一对一查询 › Mybatis全网最详细教程(纯注解编程),包看包会! |
Mybatis的注解开发
说明:因为是纯注解,所以没有任何xml配置文件,只需要写一个before()方法,将配置代码放入即可,这里面的配置相当于sqlMapConfig.xml配置文件,后面直接调用即可,接口对应的xml不要,直接在接口上面注解sql语句就ok。如下 private UserMapper sm; @Before public void before() throws IOException { //建立数据源 DruidDataSource ds = new DruidDataSource(); Properties properties = new Properties(); //ds.setDriverClassName(); //ds.setUrl(); //ds.setUsername(); //ds.setPassword(); 这四行相当于properties文 //作者这里使用的properties数据文件,也可以直接走编程方式 properties.load(Resources.getResourceAsStream("jdbc.properties")); ds.setConnectProperties(properties); //相当于sql的核心配置文件 JdbcTransactionFactory jdbcTransactionFactory = new JdbcTransactionFactory(); Environment environment = new Environment("environment", jdbcTransactionFactory, ds); Configuration configuration = new Configuration(environment); configuration.addMappers("cn.seim.mapper"); //添加分页插件(可用可不用) // PageInterceptor pi = new PageInterceptor(); // configuration.addInterceptor(pi); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration); SqlSession sqlSession = sqlSessionFactory.openSession(true); //使用哪个接口就根据实际情况调用就OK sm = sqlSession.getMapper(UserMapper.class);//测试User表使用 } 1.一对一查询 1.1 MyBatis的常用注解这几年来注解开发越来越流行,Mybatis也可以使用注解开发方式,这样我们就可以减少编写Mapper 映射文件了。我们先围绕一些基本的CRUD来学习,再学习复杂映射多表操作。 @Insert:实现新增 @Update:实现更新 @Delete:实现删除 @Select:实现查询 @Result:实现结果集封装 @Results:可以与@Result 一起使用,封装多个结果集 @One:实现一对一结果集封装 @Many:实现一对多结果集封装 1.2 MyBatis的增删改查完成简单的user表的增删改查的操作 @Slf4j public class MybatisUserTest { private UserMapper sm; @Before public void before() throws IOException { //建立数据源 DruidDataSource ds = new DruidDataSource(); Properties properties = new Properties(); properties.load(Resources.getResourceAsStream("jdbc.properties")); ds.setConnectProperties(properties); //相当于sql的核心配置文件 JdbcTransactionFactory jdbcTransactionFactory = new JdbcTransactionFactory(); Environment environment = new Environment("environment", jdbcTransactionFactory, ds); Configuration configuration = new Configuration(environment); configuration.addMappers("cn.seim.mapper"); //添加分页插件(可用可不用) // PageInterceptor pi = new PageInterceptor(); // configuration.addInterceptor(pi); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration); SqlSession sqlSession = sqlSessionFactory.openSession(true); sm = sqlSession.getMapper(UserMapper.class);//测试User表使用 } //user表的相关操作 @Test public void save() { User user1 = new User(); user1.setUsername("尼古拉斯"); user1.setPassword("abc"); user1.setBirthday(LocalDateTime.now()); sm.saveUser(user1); } @Test public void update() { User user1 = new User(); user1.setId(13); user1.setUsername("尼古拉斯·赵四"); user1.setPassword("123"); user1.setBirthday(LocalDateTime.now()); sm.updateUser(user1); } @Test public void delete() { sm.deleteUser(13); } @Test public void findUserById() { User user = sm.findUserById(3); log.debug(String.valueOf(user)); } @Test public void findUserAll() { List all = sm.findUserAll(); for (User user : all) { log.debug(String.valueOf(user)); } } 1.3 MyBatis的注解实现复杂映射开发实现复杂关系映射之前我们可以在映射文件中通过配置来实现,使用注解开发后,我们可以使用@Results注解,@Result注解,@One注解,@Many注解组合完成复杂关系的配置 注解说明@Results代替的是标签该注解中可以使用单个@Result注解,也可以使用@Result集合。使用格式:@Results({@Result(),@Result()})或@Results(@Result())@Resut代替了标签和标签@Result中属性介绍:column:数据库的列名property:需要装配的属性名one:需要使用的@One 注解(@Result(one=@One)()))many:需要使用的@Many 注解(@Result(many=@many)()))@One (一对一)代替了 标签,是多表查询的关键,在注解中用来指定子查询返回单一对象。@One注解属性介绍:select: 指定用来多表查询的 sqlmapper使用格式:@Result(column=" “,property=”",one=@One(select=""))@Many (多对一)代替了标签, 是是多表查询的关键,在注解中用来指定子查询返回对象集合。使用格式:@Result(property="",column="",many=@Many(select="")) 1.4 一对一查询 1. 一对一查询的模型用户表和订单表的关系为,一个用户有多个订单,一个订单只从属于一个用户 一对一查询的需求:查询一个订单,与此同时查询出该订单所属的用户 对应的sql语句: select * from orders; select * from user where id=查询出订单的uid; 用户表和订单表的关系为,一个用户有多个订单,一个订单只从属于一个用户 一对多查询的需求:查询一个用户,与此同时查询出该用户具有的订单 对应的sql语句: select * from user; select * from orders where uid=查询出用户的id; 用户表和角色表的关系为,一个用户有多个角色,一个角色被多个用户使用 多对多查询的需求:查询用户同时查询出该用户的所有角色 对应的sql语句: select * from user; select * from role r,user_role ur where r.id=ur.role_id and ur.user_id=用户的id |
今日新闻 |
推荐新闻 |
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 |