resources目录:
放在这个目录当中的,一般都是资源文件,配置文件,直接放到resources目录下的资源,等同于放到了类的根路径。
开发步骤:
创建maven模块
打包方式jar
引入依赖:
1. mybatis依赖
2. MySQL驱动
编写mybatis核心配置文件,mybatis-config.xml
- 注意:1.这个文件不是必须叫mybatis-config.xml 2. 这个文件的存放位置也不是固定的
- mybatis-config.xml文件中先把数据库的信息修改一下
编写xxxMapper.xml文件,编写sql语句
在mybatis—config.xml文件中指定XxxNapper.xml文件的路径
- 注意:resource属性会自动从类的根目录下开始查找资源
编写mybatis程序(使用mybatis的类库,编写mybatis程序,连接数据库,做增删改查)
- 在MyBatis当中,负责执行SQL语句的对象叫做SqlSession
- SqlSession是专门用来执行SQL语句的,是一个java程序和数据库之间的一次会话
- 要想获取SqlSession对象,需要先获取SqlSessionFactory对象,通过SqlSessionFactory工厂来生产SqlSession对象。
- 怎么获取SqlSessionFactory对象?
- mybatis的核心对象包括:
SqlSessionFactoryBuilder -->SqlSessionFactory --> SqlSession
关于mybatis集成日志组件
mybatis常见的集成的日志组件
1. SLF4J
2. LOG4J
3. LOG4J2
4. STDOUT_LOGGING:是标准日志,mybatis已经实现了这种标准日志,只许在配置文件中开启即可
```xml
```
.......
1. 引入logback的依赖
```xml
ch.qos.logback
logback-classic
1.2.11
```
2. 创建logback所必须的xml配置文件,
- 名字必须为:logback.xml或logback-test.xml,
- 位置必须为:类的根路径下
```xml
[%thread] %-5level %logger{50} - %msg%n
```
```xml
<!--insert语句-->
<insert id="insertCar">
insert into t_car(id,car_num,brand,guide_price,produce_time,car_type)
value(null,'1003','丰田霸道',30.0,'2000-10-11','燃油车')
</insert>
上面这样写的问题是?
值 不能写在配置文件中,一定是前端的form表单提交过来的数据,然后将值传给sql语句。
JDBC的代码怎么写?
String sql = "insert into t_car(id,car,num,brand,guide_price,
produce_time,car_type)value (null,?,?,?,?,?)";
ps.setString(1,xxx);
ps.setString(2,yyy);
正确规范
<insert id="insertCar"> insert into t_car(id,car_num,brand,guide_price,produce_time,car_type)
value(null,#{k1},#{k2},#{k3},#{k4},#{k5}) </insert>
注意:#{}里面写map集合的key,
<insert id="insertCar">
insert into t_car(id,car_num,brand,guide_price,produce_time,car_type)
value(null,#{carNum},#{brand},#{guidePrice},#{produceTime},#{carType})
insert>
// 这个对象我们先使用Map集合进行数据的封装
Map<String,Object> map = new HashMap<>();
map.put("carNum","1111");
map.put("brand","比亚迪汉");
map.put("guidePrice",10.0);
map.put("produceTime","2020-11-11");
map.put("carType","电车");
// 执行sql语句
// insert方法的参数:
// 第一个参数:sqlId,从CarMapper.xml文件中复制。
// 第二个参数:封装数据的对象。
int count = sqlSession.insert("insertCar",map);
<insert id="insertCar">
insert into t_car(id,car_num,brand,guide_price,produce_time,car_type)
value(null,#{carNum},#{brand},#{guidePrice},#{produceTime},#{carType})
insert>
# 注意:严格意义上来说,#{}中写的是get方法的方法名去掉前面get三个字母
eg:getUsername --> #{Username+}
public void testMapperCarByPojo(){
SqlSession sqlSession = SqlSessionUtil.openSession();
// 封装数据
Car car = new Car(null,"2223","比亚迪秦",30.0,"2020-11-11","新能源");
// 执行Sql语句
int count = sqlSession.insert("insertCar", car);
System.out.println(count);
sqlSession.commit();
sqlSession.close();
}