栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

jy-10-SPRINGMYBATIS01——MyBatis-程祖红/刘苍松

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

jy-10-SPRINGMYBATIS01——MyBatis-程祖红/刘苍松

目录: 1、day01-MyBatis-程祖红 2、day07-MyBatis-刘苍松 文件已上传分享 3、day08-SSM-刘苍松

文件已上传分享


@程祖红

1、day01-MyBatis

(1)MyBatis是什么? 开源的持久层框架,底层仍然是jdbc。 (了解) jdbc: 需要写sql,易掌握、性能好,代码繁琐,易出错。 hibernate: 难掌握,性能不好(复杂的查询经常需要优化sql),代码简洁,可以不写sql。 MyBatis:比较容易掌握,性能一般,代码简洁,需要写sql。
(2)编程步骤 step1. 导包。     mybatis,ojdbc,junit step2. 添加MyBatis配置文件(SqlMapConfig.xml)。   文件已上传分享 step3. 添加实体类。         注:实体类的属性名要和表的字段名一样(大小写可以忽略) step4. 添加映射文件。         注:存放sql语句。         不要忘记修改MyBatis配置文件,指定映射文件的位置。 文件已上传分享

 step5. 调用MyBatis的api访问数据库。


(3)原理 (了解)   
(4)返回Map类型的结果

(5)解决实体类的属性名与表的字段名不一致的情况 1)方式一 使用别名 比如 SELECt id empNo,ename name,salary,age ... 2)方式二 使用resultMap元素 day02

1.Mapper映射器

(1)什么是Mapper映射器? 符合映射文件要求的接口。
(2)如何写Mapper映射器? a.方法名必须与sqlId一样。 b.参数类型必须与parameterType一样。 c.返回类型必须与resultType一样。 d.映射文件中的namespace必须与Mapper映射器全限定名一样. 全限定名:包名加类名。
(3)如何使用Mapper映射器? SqlSession.getMapper()会返回符合Mapper映射器要求的对象, 我们只需要调用该对象的方法,即可访问数据库。
2.Spring集成MyBatis (使用Mapper映射器)

1)编程步骤 step1.导包。 spring-webmvc,mybatis,mybatis-spring,spring-jdbc ojdbc,dbcp,junit step2.添加Spring配置文件。     注: mybatis配置信息使用一个bean     (SqlSessionFactoryBean)来代替。 step3.配置SqlSessionFactoryBean。       作用: 整合应用提供SqlSession对象资源         该bean的作用是用来代替MyBatis配置文件  还可以定义一些属性来指定Mybatis框架的配置信息 step4.实体类 step5.映射文件 step6.Mapper映射器  step7.配置MapperScannerConfigurer。      作用:  根据指定包批量扫描Mapper接口并生成实列     注:         该bean会扫描指定包及其子包下面的所有的         Mapper映射器,然后调用SqlSession的getMapper         方法,并把方法的返回值(即实现了Mapper映射器         接口要求的对象)放到Spring容器里面(默认的id         是首字母小写之后的接口名)。 2)只扫描带有特定注解的Mapper映射器 step1.开发一个注解。 step2.将该注解添加到Mapper映射器前面。 step3.配置MapperScannerConfigurer,指定注解。 练习:     使用Spring + MyBatis 完成部门表的增删改查操作。
3.Spring集成MyBatis(不使用Mapper映射器 old)

(1)编程步骤 step1.导包。(同上) step2.添加Spring配置文件。 step3.配置SqlSessionFactoryBean。(同上) step4.实体类。 step5.映射文件。     注: 映射文件的namespace不作要求。 step6.DAO接口。     注: 不要求与映射文件一致。 step7.DAO实现类。     注:  注入SqlSessionTemplate     (封装了SqlSession的一些方法,这样,我们不用考虑如何获取     SqlSession,如何关闭SqlSession,也不用关注事务提交)。 step8.配置SqlSessionTemplate。 使用SpringMVC + Spring + MyBatis完成登录 step1.导包。     增加  mybatis,mybatis-spring,spring-jdbc step2.添加SqlSessionFactoryBean。 step3.实体类     注: 不用写了,直接用以前的,但是注意属性名与表的字段     名不一致,建议使用别名来解决。 step4.添加UserMapper.xml     注:
namespace="cn.tedu.login.dao.UserDAO"

step5.Mapper映射器 

    注: 不用写了( UserDAO就是)。 step6.配置MapperScannerConfigurer。 step7.测试UserDAO。
@刘苍松版 2、day07-MyBatis 用于解决软件持久化层的问题,可以实现持久化层0编码。 MyBatis底层封装的JDBC,所以在使用MyBatis时候需要导入JDBC驱动。 MyBatis 参考文件: tctm-art-student-fe

MyBatis 结构 MyBatis封装了jdbc,提供了核心操作接口SqlSession,利用SqlSession就可以操作MyBatis提供的一切功能。使用MyBatis需要提供两个配置文件,分别用于管理数据库连接,和管理数据访问接口的和SQL的映射关系。 MyBatis的使用步骤: 1.在pom.xml文件中 导包 文件已上传分享


commons-dbcp
commons-dbcp
1.4 


org.springframework
spring-webmvc
3.2.8.RELEASE


org.mybatis
mybatis-spring
1.2.3

  
org.mybatis
mybatis
3.2.8


junit
junit
4.12


mysql
mysql-connector-java
5.1.37


org.springframework
spring-jdbc
3.2.8.RELEASE

2.编写数据库配置文件用于链接数据库-db.properties

文件已上传分享

url=jdbc:mysql://localhost:3306/springmvc
driver=com.mysql.jdbc.Driver
username=root
password=
initsize=1
maxsize=5
3.编写配置文件用于构建 构建出 SqlSessionFactory 的实例- config.xml 文件已上传分享

 
 
 

   
  
    
  
   
    
 
  
 


 


4.配置映射文件用语编写sql-mapper/userMapper.xml 文件已上传分享







select
id, username, password, salary
from
user
resultType 用于声明返回值类型,其类型与返回的List中元素类型一致。
  • 测试:
    @Test
    public void testFindAllUsers(){
    
    SqlSession session=factory.openSession();
    IUserDao dao=
    session.getMapper(IUserDao.class);
    List list=dao.findAllUsers();
    for (User user : list) {
    System.out.println(user);
    }
    session.close();
    }

  • SqlSession 接口也可以直接执行SQL 案例:
    @Test
    public void testInsert(){
    
    SqlSession session=factory.openSession();
    //session.insert("SQL ID", 参数对象)
    User user=new User();
    user.setUsername("Andy");
    user.setPassword("123");
    user.setSalary(200);
    System.out.println(user);//id=null
    Integer n=session.insert("insertUser", user);
    System.out.println(user);//id=?
    System.out.println(n);
    session.commit();
    session.close();
    }

    MyBatis实现更新和删除功能
    1. 添加 接口方法
      public Integer updateUser(User user);
      
      public User findUserById(Integer id);
      
      public Integer deleteUserById(Integer id);
    2. 添加SQL
      
      update
      user
      set
      username=#{username},
      password=#{password},
      salary=#{salary}
      where
      id=#{id}
      
      
      select
      id, username, password, salary
      from
      user
      where
      username like #{name} and
      salary >= #{salary}
      
    3. 测试
      @Test
      public void testFindUserByParam(){
      
      String name="%a%";
      Integer salary = 200;
      SqlSession session=factory.openSession();
      IUserDao dao=session.getMapper(IUserDao.class);
      List list=
      dao.findUsersByParam(salary, name);
      for (User user : list) {
      System.out.println(user);
      }
      session.close();
      }

    利用Map封装返回部分列 如果需要返回部分列,可以利用Map封装查询结果。 原理: 案例:
    1. 声明接口方法
      public List> findUsersByMap();
    2. 声明 SQL
      
      select
      id, username, password, salary
      from
      user
      where
      ${where} #{param}
      
    3. 测试
      @Test
      public void testFindUsers(){
      String where="username like ";
      Object param="%a%";
      SqlSession session=factory.openSession();
      IUserDao dao=session.getMapper(IUserDao.class);
      List list=dao.findUsers(where, param);
      for (User user : list) {
      System.out.println(user);
      }
      session.close();
      }

    整合 MyBatis和Spring MyBatis 提供了Spring 整合包:
    
    org.mybatis
    mybatis-spring
    1.3.1
    
    
    org.springframework
    spring-webmvc
    3.2.8.RELEASE
    
    
    org.springframework
    spring-jdbc
    3.2.8.RELEASE
    
    
    commons-dbcp
    commons-dbcp
    1.4
    
    整合步骤:
    1. 导入相关包
    2. 添加数据库连接参数文件 db.properties
      url=jdbc:mysql://localhost:3306/springmvc
      driver=com.mysql.jdbc.Driver
      username=root
      password=
      initsize=1
      maxsize=5
    3. 添加Spring 配置文件 applocationContext.xml
    文件已上传分享
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
     list =dao.findAllUsers();
    System.out.println(dao);
    for(User user : list) {
    System.out.println(user);
    }
    }
    }

    3、day08-SSM SSM应用搭建 1.部署Spring + Spring MVC
    1. 导入包
      
      org.mybatis
      mybatis
      3.2.8
      
      
      mysql-connector-java
      mysql-connector-java
      5.1.37
      
      
      junit
      junit
      4.12
      
      
      org.mybatis
      mybatis-spring
      1.3.1
      
      
      org.springframework
      spring-webmvc
      3.2.8.RELEASE
      
      
      org.springframework
      spring-jdbc
      3.2.8.RELEASE
      
      
      commons-dbcp
      commons-dbcp
      1.4
      
    2. 配置Spring MVC的前端控制器web.xml:
      
      
      DispatcherServlet
      DispatcherServlet
      org.springframework.web.servlet.DispatcherServlet
      
      contextConfigLocation
      classpath:conf/spring-*.xml
      
      1
      
      
      DispatcherServlet
      *.do
      
      Spring配置文件村存在conf文件夹中,并且其文件名符合spring - *。xml规则。
    3. 添加数据库连接参数文件conf / db.properties
      url=jdbc:mysql://localhost:3306/tedustore
      driver=com.mysql.jdbc.Driver
      user=root
      password=root
      initsize=1
      maxsize=5
    4. 添加数据库连接池配置文件spring-db.xml
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    5. 添加Spring MVC配置文件spring-mvc.xml:
      
      
      
      
      
      
      
      
      
      
    6. 部署测试...

    2.部署Spring MyBatis
    1. 导入包(略)
    2. 添加Spring MyBatis配置文件spring-mybatis.xml
      
      
      
      
      
      
      
      
      select
      id,
      username,
      password,
      mobile,
      email,
      create_time as createTime
      from
      user
      limit #{start},#{size}
      
      
      SQL语句需要使用resultType =“int”声明返回值,DML语句不需要声明返回值类型,会自动返回int值。
    3. 测试
    @Test
    public void testFindAllUsers(){
    List list=dao.findAllUsers(4,4);
    for (User user : list) {
    System.out.println(user);
    }
    }
    
    @Test
    public void testCountUsers(){
    int n = dao.countUsers();
    System.out.println(n);
    }

    2.重构业务层
    1. 重构业务层方法UserService
      List list(Integer page);
      
      
      int listPages();
    2. 实现方法UserServiceImpl
      public List list(Integer page) {
      if(page==null){
      page=1;
      }
      //计算页面范围
      int size = 8;
      int start = (page-1)*size;
      
      //调用数据层处理业务
      return userDao.findAllUsers(start, size);
      }
      public int listPages() {
      int rows = userDao.countUsers();
      int size = 8;
      int pages = rows/size;
      if(rows%size==0){
      return pages;
      }
      return pages+1;
      }
    3. 测试
      @Test
      public void testList(){
      List list=service.list(null);
      for (User user : list) {
      System.out.println(user);
      }
      }
      
      @Test
      public void testListPages(){
      int n = service.listPages();
      System.out.println(n);
      }

    3.重构控制器
    1. 重构控制器
      @RequestMapping("/users.do")
      public String users(ModelMap map,
      @RequestParam(
      required=false,
      value="page") Integer page){
      //访问业务层获取全部用户信息
      List list=userService.list(page);
      int pages = userService.listPages();
      map.put("users", list);
      map.put("pages", pages);
      //System.out.println(list);
      //转发到JSP页面,显示结果
      return "user/list";
      }
    2. JSP页面重用即可
    3. 测试...

    实现添加用户功能 原理:  

    1.显示添加界面
    1. 在控制器中添加方法,显示添加页面
      @RequestMapping("/add.do")
      public String add(){
      return "user/add";
      }
    2. 测试

    2.实现保存功能
    1. 添加DAO方法
      int insertUser(User user);
    2. 添加SQL
      
      insert into user(
      id,
      username,
      password,
      mobile,
      email,
      create_time
      )values(
      null,
      #{username},
      #{password},
      #{mobile},
      #{email},
      #{createTime}
      )
      
    3. 测试
      @Test
      public void testInsertUser(){
      User user=new User(null, "Andy",
      "123", "119", "110@tom.com", new Date());
      int n = dao.insertUser(user);
      System.out.println(n);
      }

    3.业务层
    1. 添加业务层方法
      User save(String usernane, String password,
      String mobile, String email);
    2. 实现业务层方法
      public User save(String username,
      String password, String mobile,
      String email) {
      User user=new User(null,
      username, password, mobile,
      email, new Date());
      int n = userDao.insertUser(user);
      if(n!=1){
      throw new RuntimeException("添加失败!");
      }
      return user;
      }
    3. 测试
      @Test
      public void testSave(){
      User user=service.save("Wang",
      "123", "12345678", "wang@tom.com");
      System.out.println(user);
      }

    4.控制器
    1. 添加控制器方法
      @RequestMapping("/save.do")
      public String save(String username,
      String password, String mobile,
      String email){
      User user=userService.save(
      username, password, mobile, email);
      return "redirect:users.do";
      }
    2. 测试

    作业
    1. 利用SSM实现用户信息的管理。

    作者:Darren 电话:15110448224 QQ:603026148 以上内容归靳烨所有,如果有什么错误或者不足的地方请联系我,希望我们共同进步。

    转载请注明:文章转载自 www.mshxw.com
    本文地址:https://www.mshxw.com/it/301843.html
    我们一直用心在做
    关于我们 文章归档 网站地图 联系我们

    版权所有 (c)2021-2022 MSHXW.COM

    ICP备案号:晋ICP备2021003244-6号