本章学习MyBatis的基本crud操作。
java程序如下:
①使用map集合传参
@Test
public void testInsertCar(){
SqlSession sqlSession = SqlSessionUtil.openSession();
//先将数据放到Map集合中,在sql语句中使用 #{map集合的key} 来完成传值,#{} 等同于JDBC中的 ? ,#{}就是占位符
Map map = new HashMap<>();
map.put("carNum", "1029");
map.put("brand", "马自达");
map.put("guidePrice", 50.3);
map.put("produceTime", "2023-10-29");
map.put("carType", "燃油车");
// 执行SQL语句(使用map集合给sql语句传递数据)
int count = sqlSession.insert("insertCar", map);
System.out.println("插入了几条记录:" + count);
sqlSession.commit();
sqlSession.close();
}
②使用pojo传参
@Test
public void testInsertCarByPOJO(){
SqlSession sqlSession = SqlSessionUtil.openSession();
Car car = new Car(null,"1029","马自达",50.3,"2023-10-29","燃油车");
int count = sqlSession.insert("insertCar",car);
System.out.println(count);
sqlSession.commit();
sqlSession.close();
}
SQL语句如下:
insert into t_car(id,car_num,brand,guide_price,produce_time,car_type) values (null,#{carNum},#{brand},#{guidePrice},#{produceTime},#{carType});
运行结果:
ps:如果采用map集合传参,#{} 里写的是map集合的key,如果key不存在不会报错,数据库表中会插入NULL。
ps:如果采用POJO传参,#{} 里写的是POJO类中get方法的方法名去掉get之后将剩下的单词首字母变小写(例如:getAge对应的是#{age},getUserName对应的是#{userName}),如果这样的get方法不存在会报错。
需求:根据car_num进行删除。
java程序如下:
@Test
public void testDeleteById(){
SqlSession sqlSession = SqlSessionUtil.openSession();
int count = sqlSession.delete("deleteById",2);
sqlSession.commit();
sqlSession.close();
}
sql语句如下:
delete from t_car where id = #{id}
运行结果:
ps:当占位符只有一个的时候,${} 里面的内容可以随便写。
java代码如下:
@Test
public void testUpdateById(){
SqlSession sqlSession = SqlSessionUtil.openSession();
Car car = new Car(21L,"1029","宝马7系",66.6,"1999-11-23","燃油车");
int count = sqlSession.update("updateById",car);
System.out.println(count);
sqlSession.commit();
sqlSession.close();
}
sql语句如下:
update t_car set
car_num = #{carNum}, brand = #{brand},
guide_price = #{guidePrice}, produce_time = #{produceTime},
car_type = #{carType}
where id = #{id}
运行结果:
需求:查询id为21的Car信息
java代码如下:
@Test
public void testSelectCarById(){
// 获取SqlSession对象
SqlSession sqlSession = SqlSessionUtil.openSession();
// 执行SQL语句
Object car = sqlSession.selectOne("selectCarById", 21);
System.out.println(car);
}
sql语句如下:
运行结果:
ps:当查询结果的字段名和java类的属性名对应不上的话,可以采用as关键字起别名 。
java代码如下:
@Test
public void testSelectCarAll(){
// 获取SqlSession对象
SqlSession sqlSession = SqlSessionUtil.openSession();
// 执行SQL语句
List
sql语句如下:
由于我数据库只有一条记录,先手动添加几条记录:
运行查询语句,结果为:
ps:在SQL Mapper配置文件中