当前位置: 首页 > news >正文

海淀区网站搭建网站信息化建设方案

海淀区网站搭建,网站信息化建设方案,重庆建设教育协会网站首页,网站推广目标关键词怎么选MyBatis 注解开发详解 MyBatis 支持使用注解来进行数据库操作。注解方式将 SQL 语句直接写在 Java 接口中#xff0c;通过注解来完成 CRUD#xff08;增删改查#xff09;操作#xff0c;省去了使用 XML 配置的繁琐步骤。这种方式适合简单项目或快速原型开发#xff0c;因…MyBatis 注解开发详解 MyBatis 支持使用注解来进行数据库操作。注解方式将 SQL 语句直接写在 Java 接口中通过注解来完成 CRUD增删改查操作省去了使用 XML 配置的繁琐步骤。这种方式适合简单项目或快速原型开发因为它更直观可以直接在代码中查看和修改 SQL 语句。 然而在实际开发中更推荐使用 XML 配置的方式进行 MyBatis 开发。这样做的主要好处是当需要修改 SQL 语句时不需要更改 Java 代码避免频繁修改源代码带来的风险。此外XML 配置文件的形式更有利于 SQL 语句的管理和维护尤其是在项目复杂度较高、SQL 语句较多的情况下。 以下是使用注解方式进行 MyBatis 开发的详细说明。 一、使用注解完成 CRUD 操作 1. 配置文件 SqlMapConfig.xml 在 SqlMapConfig.xml 中注册 Mapper 接口有两种常见方式 第一种方式直接引入单个 Mapper 接口类。这种方式适用于小型项目或接口数量较少的情况。第二种方式引入整个包下的所有接口。这种方式更为灵活可以自动扫描指定包中的所有接口适用于较大项目。 mappers!-- 第一种方式class 引入单个接口 --mapper classcom.qcby.dao.UserAnnoDao/!-- 第二种方式引入整个包下的所有接口 --package namecom.qcby.dao/ /mappers2. UserDao 接口及注解 在 UserDao 接口中通过注解实现对数据库的增删改查操作。常用注解包括 Select用于查询操作。Insert用于插入数据。Update用于更新数据。Delete用于删除数据。Results 和 Result用于映射查询结果到 Java 对象属性。 import com.qcby.entity.User; import org.apache.ibatis.annotations.*;import java.util.List;public interface UserDao {// 查询所有用户Select(SELECT * FROM user)Results(id userMap, value {Result(property id, column id),Result(property username, column username),Result(property birthday, column birthday),Result(property sex, column sex),Result(property address, column address)})ListUser findAll();// 根据 ID 查询用户Select(SELECT * FROM user WHERE id #{id})ResultMap(userMap)User findById(int id);// 插入新用户Insert(INSERT INTO user(username, birthday, sex, address) VALUES(#{username}, #{birthday}, #{sex}, #{address}))SelectKey(statement SELECT last_insert_id(), keyProperty id, before false, resultType Integer.class)int insert(User user);// 更新用户Update(UPDATE user SET username #{username}, birthday #{birthday}, sex #{sex}, address #{address} WHERE id #{id})int update(User user);// 删除用户Delete(DELETE FROM user WHERE id #{id})int delete(int id);// 查询用户数量Select(SELECT COUNT(*) FROM user)int findCount();// 模糊查询Select(SELECT * FROM user WHERE username LIKE #{username})ListUser findByName(String username); }3. UserTest 测试方法 为了验证 UserDao 接口的正确性可以通过单元测试进行测试。在测试类 UserTest 中主要步骤包括 初始化 MyBatis 配置创建 SqlSession。通过 SqlSession 获取 UserDao 接口的代理对象。使用代理对象调用接口方法执行数据库操作。在测试方法执行前后分别进行资源的初始化和销毁。 import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.junit.After; import org.junit.Before; import org.junit.Test;import java.io.IOException; import java.io.InputStream; import java.util.Date; import java.util.List;public class UserTest {private InputStream in;private SqlSession session;private UserDao mapper;Beforepublic void init() throws IOException {in Resources.getResourceAsStream(SqlMapConfig.xml);SqlSessionFactory factory new SqlSessionFactoryBuilder().build(in);session factory.openSession();mapper session.getMapper(UserDao.class);}Afterpublic void destroy() throws IOException {session.close();in.close();}Testpublic void findAll() {ListUser users mapper.findAll();users.forEach(System.out::println);}Testpublic void findById() {User user mapper.findById(4);System.out.println(user);}Testpublic void insert() {User user new User();user.setUsername(小美);user.setSex(女);user.setBirthday(new Date());user.setAddress(保定);mapper.insert(user);session.commit();}Testpublic void update() {User user new User();user.setId(22);user.setUsername(小美);user.setSex(女);user.setBirthday(new Date());user.setAddress(上海);mapper.update(user);session.commit();}Testpublic void delete() {mapper.delete(22);session.commit();}Testpublic void findCount() {int count mapper.findCount();System.out.println(count);}Testpublic void findByName() {ListUser users mapper.findByName(%a%);users.forEach(System.out::println);} }二、使用注解完成多对一查询 在多对一的关系中可以通过注解配置查询结果的映射关系直接将查询结果映射到关联的 Java 对象中。 1. 多对一立即加载 立即加载的方式在查询主表数据时会同时加载关联表的数据适合数据量较小的情况。 StudentDao 接口 Select(SELECT student.*, teacher.Tname FROM student LEFT JOIN teacher ON student.t_id teacher.id) Results(value {Result(property id, column id),Result(property Sname, column Sname),Result(property sex, column sex),Result(property age, column age),Result(property t_id, column t_id),Result(property teacher.Tname, column Tname) }) ListStudent getStudent();2. 多对一延迟加载 延迟加载的方式只有在需要访问关联数据时才会查询关联表的数据适合数据量较大的情况可以提高查询性能。 StudentDao 接口 Select(SELECT * FROM student) Results(value {Result(property id, column id),Result(property Sname, column Sname),Result(property sex, column sex),Result(property age, column age),Result(property teacher, column t_id, one One(select com.qcby.dao.TeacherDao.getTeacher, fetchType FetchType.LAZY)) }) ListStudent getStudent();TeacherDao 接口 Select(SELECT * FROM teacher WHERE id #{t_id}) Teacher getTeacher(Integer id);三、使用注解完成一对多查询 在一对多的关系中可以通过注解配置关联表的数据映射直接将关联的数据映射到集合属性中。 TeacherDao 接口 Select(SELECT * FROM Teacher) Results(value {Result(property id, column id),Result(property Tname, column Tname),Result(property students, column id, many Many(select com.qcby.dao.StudentDao.findByUid, fetchType FetchType.LAZY)) }) ListTeacher findAllLazy();StudentDao 接口 Select(SELECT * FROM student WHERE t_id #{t_id}) Student findByUid(int uid);总结 MyBatis 注解开发的方式通过将 SQL 语句直接嵌入到 Java 代码中省去了 XML 配置的繁琐步骤适合快速开发和简单项目。然而对于复杂项目建议使用 XML 配置的方式进行 SQL 语句的管理以提高代码的可维护性和可扩展性。
http://www.w-s-a.com/news/48811/

相关文章:

  • 南昌知名的网站建设公司南京网站开发选南京乐识赞
  • 外贸网站建设 深圳seo怎么提升关键词的排名
  • 网站推广效果的评价google关键词
  • 模板网站建站哪家好做微信充值网站
  • 抽奖的网站怎么做的广州小程序定制开发
  • 网站的文件夹建设企业网站公积金
  • 做网站的的价位网站建设 考试题目
  • 深圳比邻网站建设北京优化服务
  • 菏泽网站建设哪家好电子商务网络安全
  • 仿一个网站广州网站建设正规公司
  • 网站建设 目的seo网站关键词排名快速
  • 什么叫做响应式网站自媒体全平台发布
  • 企业网站 案例哪里需要人做钓鱼网站
  • 厚街东莞网站建设网站开发者调试模式
  • 网站推广营销联系方式wordpress adminlte
  • 哪些网站可以做文字链广告卖水果网站建设的策划书
  • 雕刻业务网站怎么做企业qq官网
  • 新华书店的做的数字阅读网站wordpress编辑器格式
  • jq做6个网站做什么好广西临桂建设局网站
  • 网站新闻图片尺寸南京网站设计公司
  • 重庆seo建站网站服务器 安全
  • 咸宁做网站的公司桂林网站建设兼职
  • 教做网站网站开发行业分析
  • 忻州网站建设培训友情链接交换形式有哪些
  • 佛山做外贸网站渠道外贸常用网站
  • 文章收录网站网站及新媒体建设办法
  • 招聘网站排行榜2021找建网站公司
  • 网站建设制作宝塔面板活动宣传推广的形式有哪些
  • 掉关键词网站敏捷软件开发流程
  • 微信小程序格泰网站建设新闻采编与制作专业简历