# mybatis-study
**Repository Path**: xiyounote/mybatis-study
## Basic Information
- **Project Name**: mybatis-study
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2021-07-12
- **Last Updated**: 2021-07-15
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
## 1、准备数据库环境
```sql
CREATE DATABASE `mybatis`;
USE `mybatis`;
CREATE TABLE `user` (
`id` INT(20) NOT NULL PRIMARY KEY,
`name` VARCHAR(30) DEFAULT NULL,
`pwd` VARCHAR(30) DEFAULT NULL
)ENGINE=INNODB DEFAULT CHARSET=utf8;
INSERT INTO `user`(`id`, `name`, `pwd`) VALUES
(1, '张三', '1235'),
(2, '里斯', '1232'),
(3, '王武', '1237')
```
## 2、创建项目
### 2.1 导入依赖
```xml
mysql
mysql-connector-java
8.0.25
org.mybatis
mybatis
3.5.7
junit
junit
4.13
```
- Dao接口
- 接口实现类由原来的Impl转换为一个Mapper配置文件
- 测试
```xml
mapper-->
src/main/resources
**/*.properties
**/*.xml
true
src/main/java
**/*.properties
**/*.xml
true
```
## 3. CRUD
### 3.1 namespace
包名要和mapper中的包名一致
### 3.2 select
- id: 对应namespce中的方法名
- resultType: sql执行的返回值
- paramType: 参数类型
根据id查用户 select * from mybatis.user where id = #{id}
1, 接口添加方法 2,xml写sql; 3, 测试
插入 int addUser(User user);
insert into
对象中的属性取: #{id}, #{name}, #{pwd}
//**增、删改需要提交事务**; if(res >0){} sqlsession.commit();
```xml
INSERT INTO mybatis.user (id, name, pwd) VALUES (#{id},#{name}, #{pwd})
DELETE from mybatis.user WHERE id = #{id}
update mybatis.user set name=#{name}, pwd=#{pwd} where id=#{id};
```
### 3.3 map
```java
int updateUserByMap(Map map);
```
```xml
int updateUserByMap(Map map);
```
```java
@Test
public void updateByMap(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
Map map = new HashMap();
map.put("userName", "张五");
map.put("passWord", "111111");
map.put("id",1);
userMapper.updateUserByMap(map);
sqlSession.commit();
sqlSession.close();
}
```
### 3.4 like模糊查询
```xml
List getUserLike(Map map);
public void getUserLike(){
//1,获取sqlSession
SqlSession sqlSession = MybatisUtils.getSqlSession();
//2,执行SQL
UserMapper userDao = sqlSession.getMapper(UserMapper.class);
Map map = new HashMap();
map.put("userName","%李%");
List userList = userDao.getUserLike(map);
for (User user : userList) {
System.out.println(user.toString());
}
//3,关闭sqlSession
sqlSession.close();
}
```
模糊查询防止sql注入
``sql
like "%"#{value}xx% //sql中使用通配符会导致sql注入
``
## 4,配置
```xml
properties(属性)
settings(设置)
typeAliases(类型别名)
typeHandlers(类型处理器)
objectFactory(对象工厂)
plugins(插件)
environments(环境配置)
environment(环境变量)
transactionManager(事务管理器)
dataSource(数据源)
databaseIdProvider(数据库厂商标识)
mappers(映射器)
```
新建项目步骤:1,复制mybatis配置文件;2,拷贝工具类,3,实体类,接口
### 4.2 环境配置(environments)
可配置多种环境,尽管可以配置多个环境,但每个 SqlSessionFactory 实例只能选择一种环境。
默认事务管理器是JDBC, 连接池: POOLED
### 4.3 属性(properties)
db.properties
1,编写 db.properties
```properties
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis
username=root
password=root
```
2,在核心配置文件中引入,顺序要求
### 4.4 类型别名(typeAliases)
设置一个缩写名字,意在降低冗余的全限定类名书写
1, 给实体类起别名,可以自定义别名
```xml
```
2,给包起别名, 类别为首字母小xie直接用,使用注解给类写别名 @Alias("helloUser")
_int为int, int为Integer别名
```xml
```