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

下载搭建网站软件下载网站建设案例教程试卷

下载搭建网站软件下载,网站建设案例教程试卷,室内设计网站论坛,wordpress大淘客采集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.hkea.cn/news/14462884/

相关文章:

  • 微梦网站建设外贸流程全步骤英文
  • 工业产品外观设计公司宁波网站优化建站公司
  • 中国建设工程造价管理协会网站长沙装修公司排名
  • 网站开发顶岗实践总结阿里云做淘宝客网站
  • 品牌网站设计公司哪家好国家企业信用信息公示信息查询网
  • 包头网站开发西乡做网站的公司
  • 网站没有后台登陆文件夹免费做头像网站
  • 信阳做网站推广信阳网站建设青岛市建设安全监督站网站
  • 个人网站建设心得体会公司网页制作视频教程
  • h5网站开发框架king 主题WordPress
  • 如何关闭网站 备案成都市住房和城乡建设厅官网
  • 昆明网站建设要多少钱一起装修网装修公司
  • 新乡专业做网站html电子商务网站模板
  • 高密做网站的代理有口碑的唐山网站建设
  • 南昌网站建设博客站长工具seo综合查询烟雨楼
  • 企业建设门户网站成本如何免费的查企业的网站
  • 网站筹建中外贸网站做开关的哪个好
  • 一级a做爰片凤凰网站网页开发需要学什么
  • 建设门户网站价格微信营销的技巧
  • 五金外贸网站杭州免费网站制作
  • 网站排名优化服务商济南的企业网站
  • 青岛正规品牌网站制作策划系统开发生命周期法的优点表现
  • 望京 网站建设建立个人网站的成本
  • 做网站可以抄袭别人吗免费企业网站程序asp
  • 备案网站多长时间全国知名vi设计公司
  • 中国建设银行宁波分行网站网站建设模板报价
  • 长春网站快速排名提升友妙招链接怎么弄
  • 洛阳免费提供建站方案广州高端品牌网站建设哪家公司好
  • 专门做酒的网站有哪些亿网联播
  • 夹江网站建设微信广告推广平台