增删改查实现
大约 4 分钟数据库技术Mybatis
1、namespace
namespace中的包名要和Dao/Mapper接口的包名一致!
<?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">
<!--绑定一个对应的dao/mapper接口-->
<!--包名要和Dao/Mapper接口的包名一致-->
<mapper namespace="com.kuang.dao.UserMapper">
<select id="getUserList" resultType="com.kuang.pojo.User">
select * from user
</select>
</mapper>
UserMapper接口
public interface UserMapper {
/**
* 获取所有用户
* @return
*/
List<User> getUserList();
}
2、select
查询语句。
<?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">
<!--绑定一个对应的dao/mapper接口-->
<mapper namespace="com.kuang.dao.UserMapper">
<select id="getUserList" resultType="com.kuang.pojo.User">
select * from user
</select>
</mapper>
id
对应namespace接口中的方法名。必须完全一致。在命名空间中唯一的标识符,可以被用来引用这条语句。
resultType
sql语句执行的返回值类型。class,基本类型。期望从这条语句中返回结果的类全限定名或别名。 注意,如果返回的是集合,那应该设置为集合包含的类型,而不是集合本身的类型。 resultType 和 resultMap 之间只能同时使用一个。
parameterType
查询传入的参数类型
UserMapper.java接口中新增方法
public interface UserMapper {
/**
* 获取所有用户
* @return
*/
List<User> getUserList();
/**
* 根据传入ID查用户
* @param id
* @return
*/
User getUserById(int id);
}
UserMapper.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">
<!--绑定一个对应的dao/mapper接口-->
<mapper namespace="com.kuang.dao.UserMapper">
<!--查询所有用户-->
<select id="getUserList" resultType="com.kuang.pojo.User">
select * from user
</select>
<!--根据传入ID查询用户-->
<select id="getUserById" resultType="com.kuang.pojo.User" parameterType="int">
select * from user where id = #{id}
</select>
</mapper>
测试
@Test
public void test02(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
User user = userMapper.getUserById(2);
System.out.println(user);
sqlSession.close();
}
结果
User{id=2, name='张三', pwd='222333'}
Process finished with exit code 0
3、insert
插入数据
UserMapper.java接口中新增一个方法
public interface UserMapper {
/**
* 获取所有用户
* @return
*/
List<User> getUserList();
/**
* 根据传入ID查用户
* @param id
* @return
*/
User getUserById(int id);
/**
* 插入一个用户
* @param user
* @return
*/
int addUser(User user);
}
UserMapper.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">
<!--绑定一个对应的dao/mapper接口-->
<mapper namespace="com.kuang.dao.UserMapper">
<!--查询所有用户-->
<select id="getUserList" resultType="com.kuang.pojo.User">
select * from user
</select>
<!--根据传入ID查询用户-->
<select id="getUserById" resultType="com.kuang.pojo.User" parameterType="int">
select * from user where id = #{id}
</select>
<!--插入用户-->
<insert id="addUser" parameterType="com.kuang.pojo.User">
insert into user (id,name,pwd) values (#{id},#{name},#{pwd})
</insert>
</mapper>
测试
@Test
public void test03(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
userMapper.addUser(new User(10,"王五","555555"));
// 提交事务
sqlSession.commit();
sqlSession.close();
}
注意点
增删改必须提交事务,否则sql执行不成功。
4、update
UserMapper.java接口中新增一个方法
public interface UserMapper {
/**
* 获取所有用户
* @return
*/
List<User> getUserList();
/**
* 根据传入ID查用户
* @param id
* @return
*/
User getUserById(int id);
/**
* 插入一个用户
* @param user
* @return
*/
int addUser(User user);
/**
* 修改用户
* @param user
* @return
*/
int updateUser(User user);
}
UserMapper.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">
<!--绑定一个对应的dao/mapper接口-->
<mapper namespace="com.kuang.dao.UserMapper">
<!--查询所有用户-->
<select id="getUserList" resultType="com.kuang.pojo.User">
select * from user
</select>
<!--根据传入ID查询用户-->
<select id="getUserById" resultType="com.kuang.pojo.User" parameterType="int">
select * from user where id = #{id}
</select>
<!--插入用户-->
<insert id="addUser" parameterType="com.kuang.pojo.User">
insert into user (id,name,pwd) values (#{id},#{name},#{pwd})
</insert>
<!--修改用户-->
<update id="updateUser" parameterType="com.kuang.pojo.User">
update user set name=#{name},pwd=#{pwd} where id=#{id}
</update>
</mapper>
测试
@Test
public void test04(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
userMapper.updateUser(new User(2,"法外狂徒张三","333333"));
// 提交事务
sqlSession.commit();
sqlSession.close();
}
注意点
增删改必须提交事务,否则sql执行不成功。
5、delete
UserMapper.java接口中新增一个方法
public interface UserMapper {
/**
* 获取所有用户
* @return
*/
List<User> getUserList();
/**
* 根据传入ID查用户
* @param id
* @return
*/
User getUserById(int id);
/**
* 插入一个用户
* @param user
* @return
*/
int addUser(User user);
/**
* 修改用户
* @param user
* @return
*/
int updateUser(User user);
/**
* 根据ID删除用户
* @param id
* @return
*/
int deleteUser(int id);
}
UserMapper.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">
<!--绑定一个对应的dao/mapper接口-->
<mapper namespace="com.kuang.dao.UserMapper">
<!--查询所有用户-->
<select id="getUserList" resultType="com.kuang.pojo.User">
select * from user
</select>
<!--根据传入ID查询用户-->
<select id="getUserById" resultType="com.kuang.pojo.User" parameterType="int">
select * from user where id = #{id}
</select>
<!--插入用户-->
<insert id="addUser" parameterType="com.kuang.pojo.User">
insert into user (id,name,pwd) values (#{id},#{name},#{pwd})
</insert>
<!--修改用户-->
<update id="updateUser" parameterType="com.kuang.pojo.User">
update user set name=#{name},pwd=#{pwd} where id=#{id}
</update>
<!--根据ID删除用户-->
<delete id="deleteUser" parameterType="int">
delete from user where id = #{id}
</delete>
</mapper>
测试
@Test
public void test05(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
int i = userMapper.deleteUser(10);
// 提交事务
sqlSession.commit();
System.out.println(i);
}
结果
1
Process finished with exit code 0
注意点
增删改必须提交事务,否则sql执行不成功。