Mybatis的CRUD操作

0. 名词说明

1.namespace

namespace中的包名要和Dao/Mapper接口名一致

2.select

id:命名空间中唯一的标识符,接口中的方法名与映射文件中的SQL语句ID一一对应

resultType:SQL语句返回值类型。【万能的Map】

parameterType:传入SQL语句返回值类型【完整的类名或者别名】

1.Mybatis增删改查的基本实现

0.select 查

0. 编写mybatis-config.xml文件连接数据库

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE configuration
 3         PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 4         "http://mybatis.org/dtd/mybatis-3-config.dtd">
 5 <configuration>
 6     <environments default="development">
 7         <environment id="development">
 8             <transactionManager type="JDBC"/>
 9             <dataSource type="POOLED">
10                 <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
11                 <property name="url"
12                           value="jdbc:mysql://localhost:3306/mybatis?serverTimezone=GMT%2B8&amp;useSSL=true&amp;useUnicode=true&amp;characterEncoding=UTF-8"/>
13                 <property name="username" value="root"/>
14                 <property name="password" value="root"/>
15             </dataSource>
16         </environment>
17     </environments>
18     <mappers>
19         <mapper resource="com/dz/dao/UserMapper.xml" />
20     </mappers>
21 
22 </configuration>

 

1.在UserMapper接口中添加对应方法

1 public interface UserMapper {
2     //查询全部用户
3     List<User> getUserList();
4     //根据id查询用户
5     User getUserById(Integer id);
6 }

 

2.在UserMapper.xml中添加select语句

1 <mapper namespace="com.dz.dao.UserMapper">
2     <!-- 返回值类型为:全限定类名-->
3     <select id="getUserList" resultType="com.dz.pojo.User">
4         select * from mybatis.user
5   </select>
6     <select id="getUserById" resultType="com.dz.pojo.User" parameterType="int">
7         select * from mybatis.user where id=#{id}
8     </select>
9 </mapper>

 

3.测试类中测试

1   @Test
2     public void getUserById(){
3         //获取SqlSession连接
4         SqlSession sqlSession = MybatisUtils.getSqlSession();
5         UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
6         User user = userMapper.getUserById(1);
7         System.out.println(user);
8         sqlSession.close();
9     }

1.insert 增

步骤与select标签差不多:

1.编写接口

1 Integer addUser(User user);

2. 编写对应UserMapper.xml中的sql语句

1  <insert id="addUser" parameterType="com.dz.pojo.User">
2       insert into mybatis.user id,name,pwd values (#{id},#{name},#{pwd});
3  </insert>

3. 测试

 1 @Test
 2     public void addUser(){
 3         SqlSession sqlSession =MybatisUtils.getSqlSession();
 4         UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
 5         int res = userMapper.addUser(new User(4,"dz","1213"));
 6         if(res>0){
 7             System.out.println("添加成功");
 8         }
 9         //提交事务
10         sqlSession.commit();
11         sqlSession.close();
12     }

注:增删改需要提交事务

2.delete 删

1.编写接口

1 Integer deleteUser(Integer id);

2.编写对应的sql语句

1    <delete id="deleteUser" parameterType="int">
2         delete from mybatis.user where id=#{id}
3     </delete>

3. 测试

1  public void deleteUser(){
2         SqlSession sqlSession =MybatisUtils.getSqlSession();
3         UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
4         userMapper.deleteUser(4);
5         sqlSession.commit();
6         sqlSession.close();
7     }

3.万能的Map(问题)

题:根据密码和用户名查询用户

1.在接口方法中,参数直接传递Map

1 public interface UserMapper {
2     User getUserById2(Map<String,Object> map);
3 }

 

2.编写sql语句的时候,需要传递参数类型,参数类型为map

1 <select id="getUserById2" resultType="com.dz.pojo.User" parameterType="map">
2         select * from user where name=#{username} and pwd=#{pwd}
3     </select>

 

3.使用方法的时候,Map的key为sql中驱动值即可,没有顺序要求

 1   @Test
 2     public void selectUserById2(){
 3         SqlSession sqlSession = MybatisUtils.getSqlSession();
 4         UserMapper mapper = sqlSession.getMapper(UserMapper.class);
 5         Map<String, Object> map = new HashMap<String,Object>();
 6         map.put("username","张三");
 7         map.put("pwd","12345");
 8         User user = mapper.getUserById2(map);
 9         sqlSession.close();
10     }

 

posted @ 2020-08-04 20:00  罗晓峥  阅读(141)  评论(0编辑  收藏  举报