<mapper namespace="com.liu.dao.UserMapper">
操作语句…………
</mapper>
(1)编写接口
//通过id查询用户
User getUserById(int id);
(2)编写对应的mapper中的sql语句
<select id="getUserById" parameterType="int" resultType="com.liu.enity.User">
select * from mybatis.user where id = #{id}
</select>
(3)测试(注意:增删改必须要提交事务,sqlSession.commit() ; )
@Test
public void getUserById(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User userById = mapper.getUserById(1);
System.out.println(userById);
sqlSession.close();
}
<insert id="addUser" parameterType="com.liu.enity.User">
insert into mybatis.user(id,name,pwd) value (#{id},#{name},#{pwd})
</insert>
<update id="updateUser" parameterType="com.liu.enity.User">
update mybatis.user set name = #{name},pwd = #{pwd} where id = #{id}
</update>
<delete id="deleteUser" parameterType="int">
delete from mybatis.user where id = #{id}
</delete>
特别注意点:增删改一定要提交事务(在测试类中)才可以成功。
例:
@Test
public void getUserById(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User userById = mapper.getUserById(1);
System.out.println(userById);
//提交事务
sqlSession.commit();
sqlSession.close();
}
SQL片段:(将公用的sql提出来用来公用),通过include引用到需要的地方。
但是不推荐使用
<sql id="stuColumn">sid ,sname,sex</sql>
<select id = "search" resultType="student">
select
<include refid="stuColumn"/> from student where sname……
</select>
方法一:假设,我们的实体类,或者数据库中的表,字段或者参数过多,我们应该考虑用Map
//使用Map插入一个用户
int addUser2(Map<String,Object> map);
<insert id="addUser2" parameterType="map">
insert into mybatis.user (id,name,pwd) value (#{userId},#{userName},#{password})
</insert>
//使用Map插入数据
@Test
public void testAddUser2(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
Map<String, Object> map = new HashMap<String, Object>();
map.put("userId",5);
map.put("userName","客行");
map.put("password","0510");
mapper.addUser2(map);
sqlSession.commit();
sqlSession.close();
}
Map传递参数,直接在sql中取出key即可!【parameterType=“map”】
对象传递参数,直接在sql中取出属性即可!【parameterType=“Object”】
只有一个参数的情况下,可以直接在sql中取出!
多个参数用Map,或者注解
方法二:实体类对象传参
@org.junit.Test
public void select() {
try {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
Student student = new Student();
student.setId(1);
Student select = sqlSession.selectOne("select", student);
System.out.println(select);
} catch (Exception e) {
e.printStackTrace();
}
}
<select id="select" resultType="com.liu.pojo.Student">
select * from student where id = #{id}
</select>
方式一:java代码执行时,传递通配符(%,%)
//模糊查询
List<User> getUserList2(String value);
<select id="getUserList2" resultType="com.liu.enity.User">
select * from mybatis.user where name like #{value}
</select>
//模糊查询
@Test
public void getUserList(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<User> userList = mapper.getUserList2("%老%");
for (User user : userList) {
System.out.println(user);
}
sqlSession.close();
}
方式二:在sql中拼接使用通配符
<select id="getUserList2" resultType="com.liu.enity.User">
select * from mybatis.user where name like "%"#{value}"%"
</select>
好了,Mybatis的增删改查以及拓展内容的分享到这里就结束了,希望可以对大家有帮助。
2月23日消息 据外媒 Windows Latest 今日报道,借助 Windows 10 Sun Valley 更新...
Greediness(贪婪型):最大匹配 X、X*、X+、X{n,} 是最大匹配。例如你要用 “....
ajax 实现三级联动,相当于写了一个小插件,用的时候直接拿过来用就可以了,这里...
1 . 目标 演示下图的git reset 各选项的效果。 2. Git Reset操作说明 图中说明:...
橡皮擦一个逗趣的互联网高级网虫。 观前提醒本篇文章涉及知识点巨大建议先收藏再...
从另一台机器上复制过来的项目,由于两台机器的库目录不一致,导致了stdio.h等很...
这些日子一直在简书上使用markdown写作,已经渐渐的痴迷于这种简洁纯粹的写作方...
本文实例讲述了正则表达式中的操作符及说明。分享给大家供大家参考,具体如下: ...
Go原生就支持连接数据库,所以在使用 Golang 开发时,当需要数据库交互时,即可...
3月22日消息 外媒 Winfuture 报道,此前微软面向 Insider 预览用户公布了 Window...