mybatis对数据库的增删改查
程序员文章站
2022-05-06 20:57:22
...
1.查询
重点看一下查询
创建一个接口
Student是一个封装类,(注意的是 属性名最好与数据库字段名一一对应,去掉一些麻烦)
public interface StudentDao{
List<Student> queryALl();
}
然后配置StudentMapper.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">
<!-- 上面是xml头文件-->
<!-- namespace对应空Dao接口的全名 -->
<mapper namespace="com.aaa.mybatis.dao.StudentDao">
<!-- 此处的id是查询语句的名称,对应接口中的方法名 -->
<select id="queryAll" resultType="Student">
select * from student;
</select>
这时需要把这个映射好的xml文件配置到配置文件mybatis_conf.xml文件中
<mappers>
<mapper class="com.aaa.mybatis.dao.StudentDao" />
<mapper resource="mapper/StudentMapper.xml" />
</mappers>
然后再main方法中测试一下
// 1. 读入配置文件
String confPath = "mybatis_con.xml";
InputStream in = Resources.getResourceAsStream(confPath);
// 2. 构建SqlSessionFactory(用于获取sqlSession)
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(in);
// 3. 获取sqlSession对象(用于具体的CRUD)
SqlSession sqlSession = sessionFactory.openSession();
StudentDao studentDao = sqlSession.getMapper(StudentDao.class);
List<Student> studentList = studentDao.queryAll();
log.info("studentList: " + studentList);
这里就是查询如果要根据哪个字段查询的时候在StudentMapper.xml这样配置
这里条件用#{}写法
<select id="queryById" parameterType="int" resultType="Student">
select * from teacher where id = #{id};
</select>
,这里是一个字段的,由于这个编译机制,不会把属性名编译进去,是按照类型来识别的当只有一个字段的时候这样写不会出现什么问题
public interface StudentDao{
Student queryById(int id);
}
但如果是两个字段是不可以这样写的
这里给出的解决方式是这样的,也有其他的这里只介绍这一种
是小于号,因为<这个在xml中是关键符号
<select id="queryByIdAndAge" resultType="Student">
select * from teacher where id = #{id} and age <= #{age};
</select>
注意的是@param()里面的值是与#{}这里的值是对应的
public interface StudentDao{
List<Student> queryByIdAndAge(@Param("id") int id, @Param("age") int age);
}
2.添加
前面都是差不多的就是需要在StudentMapper.xml配置一个插入语句
<insert id="insertTeacher" parameterType="Teacher">
insert into teacher(tname) values (#{tname});
</insert>
public interface StudentDao{
int insertTeacher(Teacher teacher);
}
查询会写了剩下的应该都可以举一反三,加油.主要就是sql语句的区别
*当然注意一下,添加,修改,删除的返回值都是int类型的,因为返回的是影响了几条数据