MyBatis简单使用和入门理解(5)

<select id="findRoleByParam" parameterType="chapter2.pojo.RoleParam" resultMap="roleMap"> select id,role_name,note from t_role where role_name like concat('%', #{roleName},'%') and note like concat('%',#{note},'%') </select>

RoleMapper.java接口方法:

public List<Role> findRoleByParam(RoleParam role);

客户端调用执行:

RoleParam rp = new RoleParam(); rp.setNote("note"); rp.setRoleName("test"); List<Role> roles = roleMapper.findRoleByParam(rp);

批量插入操作:

RoleMapper.xml配置文件里面的定义的SQL语句:

<insert id="insertBatch" useGeneratedKeys="true" parameterType="java.util.List"> insert into t_role(role_name, note) values <foreach collection="list" item="item" index="index" separator=","> (#{item.roleName},#{item.note}) </foreach> </insert>

useGeneratedKeys="true" 表明使用数据库表中自带的主键自增策略。在文章所述的t_role表的结构中, id 是自增的主键,但是这里的批量插入操作,并不需要显示的插入 id 的值。

待插入的每条记录值 放在 java.util.List 对象中保存,通过 foreach 循环遍历,"item"代表遍历到的每条记录---即每个Role对象, 通过 #{item.roleName} 和 #{item.note} 取出Role对象属性值---即每个表的字段值。


RoleMapper.java接口方法:

public void insertBatch(List<Role> roleList);

客户端调用执行:(记得最终 调用 commit() 方法进行提交)

sqlSession = SqlSessionFactoryUtil.openSqlSession(); RoleMapper roleMapper = sqlSession.getMapper(RoleMapper.class); Role role = new Role(); role.setRoleName("testName"); role.setNote("testNote"); Role role2 = new Role(); role2.setRoleName("xx"); role2.setNote("notexx"); List<Role> roleList = new ArrayList<>(); roleList.add(role2); roleList.add(role2); roleMapper.insertBatch(roleList); System.out.println("insert finished"); sqlSession.commit();

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/9e13ef7fd50a4256e36217c7f5b18702.html