每周总结(补)【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&useUnicode=true&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操作。