title | toc | date | tags | index_img | categories |
---|---|---|---|---|---|
MyBatis学习笔记01 |
true |
2021-06-30 03:20:38 -0700 |
狂神说MyBatis教学视频 P01~P08
├── Mybatis01
│ ├── mybatis-01
│ │ ├── pom.xml
│ │ └── src
│ │ ├── main
│ │ │ ├── java
│ │ │ │ └── com
│ │ │ │ └── xxxx
│ │ │ │ ├── dao
│ │ │ │ │ ├── UserMapper.java
│ │ │ │ │ └── UserMapper.xml
│ │ │ │ ├── pojo
│ │ │ │ │ └── User.java
│ │ │ │ └── utils
│ │ │ │ └── MybatisUtils.java
│ │ │ └── resources
│ │ │ ├── mybatis-config.xml
│ │ │ └── db.properties
│ │ └── test
│ │ └── java
│ │ └── com
│ │ └── xxxx
│ │ └── dao
│ │ └── UserMapperTest.java
│ ├── mybatis-02
│ ├── pom.xml
mybatis-01
和mybatis-02
是项目Mybatis01
下的两个子项目- 外层的
pom.xml
中的Maven配置会被应用到所有子项目中- 子项目中也有自己的
pom.xml
- 子项目中也有自己的
src
目录下分main
和test
两部分进行代码书写main
目录下分java
和resources
java
目录下放负责数据交互的包dao
,实体类包pojo
,工具类包utils
resources
目录下放属性配置文件db.properties
和XML配置文件mybatis-config.xml
- 外层的
dao
包下:一个Interface
文件Mapper
和它对应的Mapper.xml
Mapper
中写数据层接口Mapper.xml
中写sql语句:<mapper namespace="com.xxxx.dao.UserMapper">
:sql语句都写在mappe标签内部,namespace
的值是对应接口文件select
、update
、insert
、delete
pojo
包下:实体类设计
起码有最基本的getter()
setter()
toString()
,可以用右键->Generate(command+n)来一键生成
public class User {
private int id;
private String name;
private String pwd;
public User() {
}
public User(int id, String name, String pwd) {
this.id = id;
this.name = name;
this.pwd = pwd;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", pwd='" + pwd + '\'' +
'}';
}
}
utils
包下:工具类
例如在MybatisUtils
的类中调用mybatis-config.xml
,进行sqlSession的生成
public class MybatisUtils {
private static SqlSessionFactory sqlSessionFactory;
static {
InputStream inputStream = null;
try {
//使用Mybatis第一步:获取SqlSessionFactory对象
String resource = "mybatis-config.xml";
inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
//既然有了 SqlSessionFactory,顾名思义,我们可以从中获得 SqlSession 的实例。
//SqlSession 提供了在数据库执行 SQL 命令所需的所有方法。
//可以通过 SqlSession 实例来直接执行已映射的 SQL 语句。
public static SqlSession getSqlSession() {
return sqlSessionFactory.openSession();
}
}
mybatis-config.xml
中写对MyBatis系统的核心设置:MyBatis官方XML配置指南
- 最外层标签:
<configuration>
,配置写在其中<properties resource="db.properties">
:引入外部配置文件db.properties,可在外部配置文件中配置一些值,以在此xml文件中引用这些值,例如数据库的driver、url、username、password<typeAliases>
:在此标签下设置类型别名,可单独设置也可批量设置- 单独设置:
<typeAlias alias="你想好的别名" type="com.xxxx.pojo.要起别名的类"/>
- 批量设置:
<package name="com.xxxx.pojo"/>
自动为pojo
包下的所有类生成别名,别名设置为各实体类的名字(首字母大小写都可)
- 单独设置:
<enviroments>
:可以为项目配置多套环境,以供不同场景的使用。使用default
字段制定默认使用的环境。<enviroment id="此环境名">
<transactionManager type="JDBC"/>
:暂时就这样写<dataSource type="POOLED">
:type
表示数据源类型,下面是数据源属性的配置
属性配置可以是这样
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=false&useUnicode=false&characterEncoding=UTF-8"/>
<property name="username" value="数据用户名"/>
<property name="password" value="数据库密码"/>
如果项目配置了db.properties
,可以使用其中的值简化数据源配置:
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
db.properties
中写数据库配置:
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis?useSSL=false&useUnicode=false&characterEncoding=UTF-8
username=数据库用户名
pwd=数据库密码
- 在
\dao
中找到合适的interface,在其中定义好功能接口(设计方法) - 在
\dao
中找到对应的xml,在其中写数据库操作的实现(写sql) - 在测试文件中编写测试类
- 注解
@Test
- 在xml文件中进行属性值配置时,
&
要写成&
- 在
mybatis-config.xml
中进行dataSource
配置时,url
的属性值中useSSl
和useUnicode
的值应为false
,而不是狂神说的true
- 关于类型别名的三种方式:
- 在
java\..\pojo\User
中,在类前加注解@Alias("你想给这个类设置的别名")
- 在
resources\mybatis-config.xml
中,标签configuration\typeAliases
中,加<package name="想要设置别名的类所属的包"/>
,自动为包下所有的Java Bean设置别名。(例:为com.xxxx.User
设置别名User
和user
) - 在
resources\mybatis-config.xml
中,标签configuration\typeAliases
中,加<typeAlias type="想要设置别名的类" alias="你想给这个类设置的别名"/>
- 🗒️ Note:3存在时,1会失效;其他情况下,这几种方式的别名可以共存混用。
- 在