面试题
https://blog.csdn.net/a745233700/article/details/80977133
目录结构
第1节课
mybatis开发
jar包下载
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<!-- <version>3.3.0</version> -->
<version>3.4.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.36</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.2</version>
</dependency>
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>org.mybatis.caches</groupId>
<artifactId>mybatis-ehcache</artifactId>
<version>1.0.2</version>
</dependency>
<dependency>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache</artifactId>
<version>2.10.1</version>
</dependency>
等待的过程讲解mybatis入门
mybatis入门
概念定义
mybatis是开源的持久层框架,是apache下的顶级项目,他的前身ibatis
原来托管在google下,后来托管在github
他是ORM(对象关系映射)框架,数据库表-java类的实体类 mapper类里
mybatis工作原理和流程
第二节课 第一个mybatis程序#
src/main/java *.java 关键代码
src/main/resource 配置文件或资源文件
src/main/test 测试文件
演示第一个项目
src/main/resource下新建config文件夹,并新建SqlMapConfig.xml
配置文件SqlMapConfig.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 加载属性文件 -->
<properties resource="db.properties">
</properties>
<!-- 和spring整合后 environments配置将废除-->
<environments default="development">
<environment id="development">
<!-- 使用jdbc事务管理,事务控制由mybatis-->
<transactionManager type="JDBC" />
<!-- 数据库连接池,由mybatis管理-->
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</dataSource>
</environment>
</environments>
<!-- 加载 映射文件 -->
<mappers>
<mapper resource="sqlmap/User.xml"/>
</mappers>
</configuration>
db.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/java16?characterEncoding=UTF-8&useUnicode=true
jdbc.username=root
jdbc.password=root
User.java
public class User {
// 主键id,自增
private int user_id;
private String user_name;
private String user_pwd;
private String user_email;
private String user_idCard;
private int user_power=0;
....
}
user.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- namespace命名空间,作用就是对sql进行分类化管理,理解sql隔离
注意:使用mapper代理方法开发,namespace有特殊重要的作用
-->
<mapper namespace="test">
<!-- 在 映射文件中配置很多sql语句 -->
<!-- 需求:通过id查询用户表的记录 -->
<!-- 通过 select执行数据库查询
id:标识 映射文件中的 sql
将sql语句封装到mappedStatement对象中,所以将id称为statement的id
parameterType:指定输入 参数的类型,这里指定int型
#{}表示一个占位符号
#{id}:其中的id表示接收输入 的参数,参数名称就是id,如果输入 参数是简单类型,#{}中的参数名可以任意,可以value或其它名称
resultType:指定sql输出结果 的所映射的java对象类型,select指定resultType表示将单条记录映射成的java对象。
-->
<select id="findUserById" parameterType="int" resultType="com.neuedu.pojo.User">
SELECT * FROM T_USER WHERE user_id=#{id}
</select>
</mapper>
MybatisTest.java
public class MybatisTest {
// 根据id查询用户信息,得到一条记录结果
@Test
public void findUserByIdTest() throws IOException {
// mybatis配置文件
String resource = "config/SqlMapConfig.xml";
// 得到配置文件流
InputStream inputStream = Resources.getResourceAsStream(resource);
// 创建会话工厂,传入mybatis的配置文件信息
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder()
.build(inputStream);
// 通过工厂得到SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
// 通过SqlSession操作数据库
// 第一个参数:映射文件中statement的id,等于=namespace+"."+statement的id
// 第二个参数:指定和映射文件中所匹配的parameterType类型的参数
// sqlSession.selectOne结果 是与映射文件中所匹配的resultType类型的对象
// selectOne查询出一条记录
User user = sqlSession.selectOne("test.findUserById", 1);
System.out.println(user);
// 释放资源
sqlSession.close();
}
}
接下来从头建立我们的第一个项目
创建mybatis项目
第一步新建maven web项目
第二步 创建依赖pom.xml,引入mybatis相关的jar(上面已完成)
第三步 创建src/main/resource下建立config文件夹
在文件夹下面建立SqlMapConfig.xml
具体操作步骤:file-new-other-xml file输入文件名字SqlMapConfig.xml
打开mybatis 开发指南中文版第5页复制以下内容
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="org/mybatis/example/BlogMapper.xml"/>
</mappers>
</configuration>
第四步:引入数据库配置的资源文件
拷贝db.properties到src/main/resource下
第五步:SqlMapConfig.xml里引用资源文件
<!-- 引入资源文件 -->
<properties resource="db.properties"></properties>
第六步:修改SqlMapConfig.xml里
<mapper resource="sqlmap/User.xml"/>
第七步:有resource下建立sqlmap文件夹
第八步:在文件夹下建立User.xml
拷贝手册第7页如下内容并修改为正确的路径
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="user">
<select id="findUserById" parameterType="int" resultType="com.neuedu.pojo.User">
select * from t_user where user_id = #{user_id}
</select>
</mapper>
第九步:src/main/java下新建com.neuedu.pojo包
并在包下建立User.java
package com.neuedu.pojo;
public class User {
// 主键id,自增
private int user_id;
private String user_name;
private String user_pwd;
private String user_email;
private String user_idCard;
private int user_power = 0;
}
第三节
在src/test/java下编写测试程序
MybatisTest.java
@Test
public void findTest() throws IOException{
//第一步读取SqlMapConfig
//指定文件位置
String resource="config/SqlMapConfig.xml";
//读取资源文件
InputStream input=Resources.getResourceAsStream(resource);
//获取SqlSessionFactory
SqlSessionFactory factory= new SqlSessionFactoryBuilder().build(input);
//获取SqlSession
SqlSession session=factory.openSession();
//执行查询
User u=session.selectOne("user.findUserById", 1);
System.out.println(u.getUser_name());
//关闭连接
session.close();
}
删除功能
User.xml
<delete id="delUser" parameterType="int">
delete from t_user where user_id = #{user_id}
</delete>
测试类:
@Test
public void delTest() throws IOException{
//第一步读取SqlMapConfig
//指定文件位置
String resource="config/SqlMapConfig.xml";
//读取资源文件
InputStream input=Resources.getResourceAsStream(resource);
//获取SqlSessionFactory
SqlSessionFactory factory= new SqlSessionFactoryBuilder().build(input);
//获取SqlSession
SqlSession session=factory.openSession();
//执行查询
int count=session.delete("user.delUser",6);
System.out.println(count);
session.commit();
//关闭连接
session.close();
}
sqlSessionFactory.openSession(); 默认不自动提交
sqlSessionFactory.openSession(true); 自动提交,不用写 session.commit();
作业:
做用户的添加和修改功能