每周总结(补)【2020/11/15】——自主学习

  本周的一大难点任务是老师布置的调研任务:3人一组设计一份调查问卷,找非本院学生填写并合影。男生要求20张与女生合照,10张与男生合照,女生反之。我周六和周日两个晚上都出去做这个调研,感谢组里的“交际星”。

  补了一下设计模式的作业,复习了几个模式;大数据学习内容为Mapreduce,按照老师提供的实验做了一下巩固;软件构造课程学习了SLR文法。

  重点学习:MyBatis

第一个MyBatis程序:

一,Maven配置:三个核心:mysql,mybatis,junit

 

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <project xmlns="http://maven.apache.org/POM/4.0.0"
 3          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 5     <modelVersion>4.0.0</modelVersion>
 6     <!--父工程-->
 7     <groupId>org.example</groupId>
 8     <artifactId>MybatisStudy</artifactId>
 9     <packaging>pom</packaging>
10     <version>1.0-SNAPSHOT</version>
11     <modules>
12         <module>mybatis01</module>
13     </modules>
14 
15     <dependencies>
16         <!--MySQL驱动-->
17         <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
18         <dependency>
19             <groupId>mysql</groupId>
20             <artifactId>mysql-connector-java</artifactId>
21             <version>5.1.47</version>
22         </dependency>
23         <!--MyBatis-->
24         <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
25         <dependency>
26             <groupId>org.mybatis</groupId>
27             <artifactId>mybatis</artifactId>
28             <version>3.5.2</version>
29         </dependency>
30         <!--Junit-->
31         <dependency>
32             <groupId>junit</groupId>
33             <artifactId>junit</artifactId>
34             <version>4.12</version>
35         </dependency>
36     </dependencies>
37 <!--资源导出失败的问题解决-->
38     <properties>
39         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
40     </properties>
41     <build>
42         <resources>
43             <resource>
44                 <directory>src/main/resources</directory>
45                 <includes>
46                     <include>**/*.properties</include>
47                     <include>**/*.xml</include>
48                 </includes>
49                 <filtering>true</filtering>
50             </resource>
51             <resource>
52                 <directory>src/main/java</directory>
53                 <includes>
54                     <include>**/*.properties</include>
55                     <include>**/*.xml</include>
56                 </includes>
57                 <filtering>true</filtering>
58             </resource>
59         </resources>
60     </build>
61 </project>

build标签内为手动配置resources,避免资源导出失败问题,如果项目配置使用的xml文件放在了resources目录下,build可不用配置,properties注释内的UTF-8是解决xml文件中中文注释的问题(别的同学使用中文注释运行程序都没问题,不知道为什么到我这里就出事了,最佳解决方法是注释不写中文)

二,配置mybatis-config.xml。前提条件是IDEA连接上了数据库

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE configuration
 3         PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 4         "http://mybatis.org/dtd/mybatis-3-config.dtd">
 5 <configuration>
 6     <environments default="development">
 7         <environment id="development">
 8             <transactionManager type="JDBC"/>
 9             <dataSource type="POOLED">
10                 <property name="driver" value="com.mysql.jdbc.Driver"/>
11                 <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8"/>
12                 <property name="username" value="root"/>
13                 <property name="password" value="Inazuma"/>
14             </dataSource>
15         </environment>
16     </environments>
17     <mappers>
18         <mapper resource="com/pyd/dao/UserMapper.xml"/>
19     </mappers>
20 </configuration>

dataSource内的参数与JDBC类似。mappers必要,它起到了一个注册作用,没有这个的话会报错。

三,针对SQL命令操作的xml配置文件:UserMapper.xml(预先构建了一个表,这个名字方便记)

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE mapper
 3         PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 4         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 5 <!-- namespace=Dao/Mapper-->
 6 <mapper namespace="com.pyd.dao.UserDao">
 7 
 8     <select id="getUserList" resultType="com.pyd.pojo.User">
 9         select * from mybatis.try
10     </select>
11     
12 </mapper>

select就是查询语句,这里的标签与SQL对应的命令一样,看了就明白是什么操作了。内部写入SQL语句,我写的是查询所有信息

四,utils文件,获取SqlSessionFactory对象,创建好连接之后返回一个SqlSession对象,所有的SQL命令操作都需要靠这个对象来执行

 1 package com.pyd.utils;
 2 
 3 import org.apache.ibatis.io.Resources;
 4 import org.apache.ibatis.session.SqlSession;
 5 import org.apache.ibatis.session.SqlSessionFactory;
 6 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
 7 
 8 import java.io.IOException;
 9 import java.io.InputStream;
10 
11 //sqlSessionFactory-->sqlSession
12 public class MybatisUtils {
13     private static SqlSessionFactory sqlSessionFactory;
14 
15     static{
16         try{
17             //获取sqlSessionFactory对象
18             String resource = "mybatis-config.xml";
19             InputStream inputStream= Resources.getResourceAsStream(resource);
20             sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
21         }catch (IOException e){
22             e.printStackTrace();
23         }
24     }
25     //SqlSession包含了面向数据库执行SQL命令所需的所有方法
26     public static SqlSession getSqlSession(){
27         return sqlSessionFactory.openSession();
28     }
29 
30 }

五,bean

 1 package com.pyd.pojo;
 2 
 3 //实体类
 4 public class User {
 5     private int id;
 6     private String name;
 7     private String pwd;
 8 
 9     public User(){
10     }
11     public User(int id, String name, String pwd) {
12         this.id = id;
13         this.name = name;
14         this.pwd = pwd;
15     }
16 
17     public int getId() {
18         return id;
19     }
20 
21     public void setId(int id) {
22         this.id = id;
23     }
24 
25     public String getName() {
26         return name;
27     }
28 
29     public void setName(String name) {
30         this.name = name;
31     }
32 
33     public String getPwd() {
34         return pwd;
35     }
36 
37     public void setPwd(String pwd) {
38         this.pwd = pwd;
39     }
40 
41     @Override
42     public String toString() {
43         return "User{" +
44                 "id=" + id +
45                 ", name='" + name + '\'' +
46                 ", pwd='" + pwd + '\'' +
47                 '}';
48     }
49 }

六,接口文件:UserDao(interface)

1 package com.pyd.dao;
2 
3 import com.pyd.pojo.User;
4 
5 import java.util.List;
6 
7 public interface UserDao {
8     List<User> getUserList();
9 }

七,测试:

 1 package com.pyd.dao;
 2 
 3 import com.pyd.pojo.User;
 4 import com.pyd.utils.MybatisUtils;
 5 import org.apache.ibatis.session.SqlSession;
 6 import org.junit.Test;
 7 
 8 import java.util.List;
 9 
10 public class UserDaoTest {
11     @Test
12     public void test(){
13         SqlSession sqlSession=MybatisUtils.getSqlSession();
14         //执行SQL
15         UserDao mapper=sqlSession.getMapper(UserDao.class);
16         List<User> userList=mapper.getUserList();
17         for (User user : userList) {
18             System.out.println(user);
19         }
20         sqlSession.close();
21     }
22 }

运行截图:

 

   总结:

本周在完成老师布置的任务的基础上,接触了一下MyBatis,这些代码是结合视频和MyBatis的中文文档编写的。接下来会继续熟悉Mybatis操作。

posted @ 2020-11-16 21:40  千幽行  阅读(52)  评论(0编辑  收藏  举报