引言MyBatis插入数据
1 插入一条数据使用自定义类型Student MyBatis更新数据
1更新一条数据传入自定义类型Student MyBatis查找数据
1 查询一条记录通过主键基本类型2 查询所有记录3 分页查询使用Map类型也可以使用自定义类型 MyBatis删除数据
1 删除一条数据 代码下载
本博客代码下载地址为MyBatis之增删改查
1.引言
在上一篇博客中,我们介绍了MyBatis最简单的使用(只是向数据库插入了一条数据),但是在上一篇博客中还存在一些问题,比如:
SQL语句是写死的,我们不可以给SQL语句传入参数虽然我们定义了Student类和student表的映射关系,但是我们没有用到
在本篇博客中我们就解决上一篇博客中遗留的这两个问题。
2.MyBatis插入数据
2.1 插入一条数据(使用自定义类型Student)
编写我们的语句
<insert id="add" parameterType="com.Student">
insert into student(id,name,sal) values(#{id},#{name},#{sal})
</insert>
编写测试类
@Test
public void testStudent()
{
SqlSession sqlSession = MyBatisUtil.getSqlSession();
try{
Student s=
new Student();
s.setId(
2);
s.setName(
"wpx");
s.setSal(
1000D);
sqlSession.insert(
"mynamespace.add", s);
}
catch(Exception e){
e.printStackTrace();
sqlSession.rollback();
}
finally{
sqlSession.commit();
}
MyBatisUtil.closeSqlSession();
}
运行结果
SQL语句参数解释
parameterType:代表sql传入的参数类型
如果传入的参数是自定义类型,比如我们这里的Student
那么我们在SQL中使用#{
}来读取自定义类型的值,括号里面写自定义类型的属性,比如#{
id}读取id属性
虽然我们括号里面写的是属性,但是还是通过get方法得到的参数,比如#{
id},调用的是getId方法
3 MyBatis更新数据
3.1更新一条数据(传入自定义类型Student)
编写我们的语句
<update id="update" parameterType="com.Student">
update student set name=#{name},sal=#{sal} where id=#{id}
</update>
编写我们的测试类
@Test
public void testStudent()
{
SqlSession sqlSession = MyBatisUtil.getSqlSession();
try{
Student s=
new Student();
s.setId(
2);
s.setName(
"zlr");
s.setSal(
1000D);
sqlSession.update(
"mynamespace.update", s);
}
catch(Exception e){
e.printStackTrace();
sqlSession.rollback();
}
finally{
sqlSession.commit();
}
MyBatisUtil.closeSqlSession();
}
运行结果
3 MyBatis查找数据
3.1 查询一条记录(通过主键:基本类型)
编写我们的SQL语句
<select id="selectOne" parameterType="java.lang.Integer" resultMap="studentMap">
select id,name,sal from student where id=#{id}
</select>
编写我们的测试类
@Test
public void testSelectOne()
{
SqlSession sqlSession = MyBatisUtil.getSqlSession();
try{
Student student=sqlSession.selectOne(
"mynamespace.selectOne",
1);
System.
out.print(student);
}
catch(Exception e){
e.printStackTrace();
sqlSession.rollback();
}
finally{
sqlSession.commit();
}
MyBatisUtil.closeSqlSession();
}
运行结果
代码解释
注意第一点:
这里我们传入的参数是基本数据类型:int类型
我们同样使用#{
}来取得参数,就好比例子中的#{
id}
但是需要注意的是括号里面的值随便填,这个例子也可以写成#{
xxx},程序照样可以运行
注意第二点:
因为select语句有返回值,所以设置resultMap属性,我们通过这个属性设置映射关系,也就是告诉mybatis,我们查询到的是一个什么样子的对象
3.2 查询所有记录
编写我们的SQL语句
<select id="selectAll" parameterType="com.Student" resultMap="studentMap">
select id,name,sal from student
</select>编写测试类
@Test
public void testSelectAll()
{
SqlSession sqlSession = MyBatisUtil.getSqlSession();
try{
List<Student> students=sqlSession.selectList(
"mynamespace.selectAll");
System.out.print(students);
}
catch(Exception e){
e.printStackTrace();
sqlSession.rollback();
}
finally{
sqlSession.commit();
}
MyBatisUtil.closeSqlSession();
}
运行结果
代码解释
在本次事例中只需要注意一个地方:
我们需要的类型是:
List<Student>
但是我们设置的类型是:parameterType=
"com.Student"
3.3 分页查询(使用Map类型,也可以使用自定义类型)
编写SQL语句
<
select id=
"findAllWithFy" parameterType=
"map" resultType=
"com.Student">
select id,name,sal
from student limit
#{pstart},#{psize}
</
select>
编写测试类
@Test
public void testFindAllWithFy()
{
SqlSession sqlSession = MyBatisUtil.getSqlSession();
try{
Map map=
new HashMap();
map.put(
"pstart",
1);
map.put(
"psize",
1);
List<Student> students=sqlSession.selectList(
"mynamespace.findAllWithFy",map);
System.out.print(students);
}
catch(Exception e){
e.printStackTrace();
sqlSession.rollback();
}
finally{
sqlSession.commit();
}
MyBatisUtil.closeSqlSession();
}
运行结果
代码解释
这个代码需要注意一个地方:
#{
}表达式,括号里面需要填写map的key值
4.MyBatis删除数据
4.1 删除一条数据
编写SQL语句
<delete id="delete" parameterType="java.lang.Integer">
delete from student where id = #{id}
</delete>
编写测试类
@Test
public void testDelete()
{
SqlSession sqlSession = MyBatisUtil.getSqlSession();
try{
sqlSession.delete(
"mynamespace.delete",
2);
}
catch(Exception e){
e.printStackTrace();
sqlSession.rollback();
}
finally{
sqlSession.commit();
}
MyBatisUtil.closeSqlSession();
}
运行结果
代码下载
本博客代码下载地址为:MyBatis之增删改查
转载请注明原文地址: https://ju.6miu.com/read-12269.html