批量添加非常简单,用foreach标签就可以,具体实现如下:
mapper:
<!-- 批量增加,若使用自增主键,则设置useGeneratedKeys="true",keyProperty="id" -->
<insert id="insertUser" >
insert into USER (id,email,hope_job,name,personal_evaluation,personal_skills,phone_number,user_image) values
<foreach collection="list" item="user" separator=",">
(#{user.id},#{user.email},#{user.hopeJob},#{user.name},#{user.personalEvaluation},#{user.personalSkills},#{user.phoneNumber},#{user.userImage})
</foreach>
</insert>
测试代码:
@Test
public void insertBlobTest() throws IOException {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session = sqlSessionFactory.openSession();
// 会开启一个事务(也就是不自动提交)。
// 将从由当前环境配置的 DataSource 实例中获取 Connection 对象。
// 事务隔离级别将会使用驱动或数据源的默认设置。
// 预处理语句不会被复用,也不会批量处理更新。
UserDao mapper = session.getMapper(UserDao.class);
User user ;
List<User> userList = new ArrayList<User>();
user = new User();
user.setEmail("751566027@qq.com");
user.setHopeJob("java");
user.setId(String.valueOf(System.currentTimeMillis()));
user.setName("QWQ");
user.setPersonalEvaluation("spring");
user.setPersonalSkills("spring");
user.setPhoneNumber("38438");
byte[] bytes = {1,1,1,1,1,1,};
user.setUserImage(bytes);
userList.add(user);
mapper.insertUser(userList);
// 提交事务
session.commit();
session.close();
}
当我们要查询数据库的某些特定字段时,在每个查询SQL里写很多字段是非常麻烦且枯燥的,所以我们可以写个SQL片段,在每条SQL里引入该片段即可:
mapper
<!-- 引入sql片段 -->
<sql id="userColumns">
${table}.id,${table}.email,${table}.hope_job,${table}.name,${table}.personal_evaluation,${table}.personal_skills
</sql>
<select id="selectUser" parameterType="String" resultMap="userMap">
select
<!-- 引入sql片段,Id与片段ID相对应,值为$里的值 -->
<include refid="userColumns">
<property name="table" value="user"/>
</include>
from user where id = #{id}
</select>
测试代码:
@Test
public void jymTest() throws IOException {
String resource = "mybatis-config.xml";
InputStream resourceAsStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
UserDao mapper = (UserDao)sqlSession.getMapper(UserDao.class);
List<User> userList = mapper.selectUser("0");
System.out.println(userList.get(0).toString());
}
世界上有10种人,一种是懂二进制的,一种是不懂二进制的。
感谢您的收看,如有哪里写的不对 请留言,谢谢。
来源:CSDN
作者:jym12138
链接:https://blog.csdn.net/weixin_43326401/article/details/103964051