1.写pojo实体类CarInfo,保持属性名和Mysql中字段名一致
2.编写Mapper接口,CarMapper
public interface CarMapper {
List<CarInfo> selectAll();
CarInfo selectByCar(@Param("car1") String car);
int addInfo(CarInfo info);
int updateInfo(CarInfo info);
int deleteByNum(@Param("num") int number);
}
3.编写xml文件,CarMapper.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">
<mapper namespace="com.shida.Mapper.CarMapper">
<select id="selectAll" resultType="com.shida.pojo.CarInfo">
select * from carsystem;
</select>
<select id="selectByCar" resultType="carInfo">
select *from carsystem where car=#{car1}
</select>
<insert id="addInfo" parameterType="carInfo">
insert into carsystem(number, car, leadname, profession) values (#{number},#{car},#{leadname},#{profession})
</insert>
<update id="updateInfo" parameterType="carInfo">
update carsystem set car=#{car},leadname=#{leadname},profession=#{profession} where number=#{number}
</update>
<delete id="deleteByNum" parameterType="int">
delete from carsystem where number=#{num}
</delete>
</mapper>
返回类型为carInfo,原因:
在mybatis-config.xml中配置类别名
<typeAliases>
<typeAlias type="com.shida.pojo.CarInfo" alias="carInfo"/>
</typeAliases>
4.编写测试类
package main.com.shida.dao;
import com.shida.Mapper.CarMapper;
import com.shida.Mapper.UserMapper;
import com.shida.pojo.CarInfo;
import com.shida.pojo.User;
import com.shida.utils.MybatisUtils;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import java.util.List;
public class CarTest {
@Test
public void selectAll() {
SqlSession session = MybatisUtils.getSession();
//方法一:
//List<User> users = session.selectList("com.kuang.mapper.UserMapper.selectUser");
//方法二:
CarMapper mapper = session.getMapper(CarMapper.class);
List<CarInfo> cars = mapper.selectAll();
for (CarInfo car: cars){
System.out.println(car);
}
session.close();
}
@Test
public void selectByCar(){
SqlSession sqlSession = MybatisUtils.getSession();
CarMapper mapper=sqlSession.getMapper(CarMapper.class);
CarInfo carInfo=mapper.selectByCar("苏AL33H1");
System.out.println(carInfo);
sqlSession.close();;
}
@Test
public void testAddCar(){
SqlSession sqlSession = MybatisUtils.getSession();
CarMapper mapper=sqlSession.getMapper(CarMapper.class);
CarInfo carInfo =new CarInfo(4,"苏A7A8V7","公车3,领导","1234");
int i =mapper.addInfo(carInfo);
System.out.println(i);
sqlSession.commit();
sqlSession.close();
}
@Test
public void testUpdateCar(){
SqlSession sqlSession = MybatisUtils.getSession();
CarMapper mapper =sqlSession.getMapper(CarMapper.class);
CarInfo carInfo = new CarInfo(2,"苏AL33H5","公车2,领导","12345");
int i= mapper.updateInfo(carInfo);
System.out.println(i);
sqlSession.commit();
sqlSession.close();
}
@Test
public void testDeleteCar(){
SqlSession sqlSession = MybatisUtils.getSession();
CarMapper mapper =sqlSession.getMapper(CarMapper.class);
int i = mapper.deleteByNum(4);
System.out.println(i);
sqlSession.commit();
sqlSession.close();
}
}
思路一:直接在方法中传递参数
1、在接口方法的参数前加 @Param属性
2、Sql语句编写的时候,直接取@Param中设置的值即可,不需要单独设置参数类型
思路二:使用万能的Map
总结:如果参数过多,我们可以考虑直接使用Map实现,如果参数比较少,直接传递参数即可
注意点:增、删、改操作需要提交事务!
小结:
所有的增删改操作都需要提交事务!
接口所有的普通参数,尽量都写上@Param参数,尤其是多个参数时,必须写上!
有时候根据业务的需求,可以考虑使用map传递参数!
为了规范操作,在SQL的配置文件中,我们尽量将Parameter参数和resultType都写上!