1 查询
使用select元素实现,必选属性sql的唯一标识id,返回值类型resultType或resultMap
1 传入一个值
同入门程序,需要注意,使用$的情况下,若当传入的参数为java的自有类型,int String等单个值,使用的情况下,要使用内置参数_parameter,或使用@Param进行指定。
select * from users where uid =#{_parameter}
2 传入多个值
同入门程序
3 返回List集合
List<User> findById(参数);
userMapper mapper = sqlSession.getMapper(userMapper.class);
List<User> user = mapper.findById(user1);
2 插入
使用insert元素
commint提交事务
接收返回的主键,KeyProperty = “接收主键值的属性名”,usegenerateKeys = “true”
<insert id="insertUser" useGeneratedKeys="true" keyProperty="uid">
insert users_info(uname, uage, uphone)
VALUES(#{uname},#{uage},#{uphone})
</insert>
@Test
public void test02(){
User user1 = new User();
user1.setUname("zzz");
user1.setUphone("13464515");
user1.setUage(12);
SqlSession sqlSession = MyBatisUtils.geSqlSession();
userMapper mapper = sqlSession.getMapper(userMapper.class);
int a = mapper.insertUser(user1);
System.out.println(user1);
sqlSession.commit();
sqlSession.close();
}
可以使用before After对demo进行进一步优化
import com.yiwu.mapper.userMapper; import com.yiwu.pojo.User; import com.yiwu.utils.MyBatisUtils; import org.apache.ibatis.session.SqlSession; import org.junit.After; import org.junit.Before; import org.junit.Test; import java.util.List; public class UserTest { private userMapper mapper; private SqlSession sqlSession; @Before public void init(){ sqlSession = MyBatisUtils.geSqlSession(); mapper = sqlSession.getMapper(userMapper.class); } @Test public void test01(){ User user1 = new User(); user1.setUid(1); user1.setUage(12); List<User> user = mapper.findById(user1); System.out.println(user); } @Test public void test02(){ User user1 = new User(); user1.setUname("zzz"); user1.setUphone("13464515"); user1.setUage(12); int a = mapper.insertUser(user1); System.out.println(user1); } @After public void destory(){ sqlSession.commit(); sqlSession.close(); } }
3 更新
使用update元素
update tableName set xxx = “xxx” , xxx = “xxx” where xxx = xxx
<update id="updateUserById">
update users_info
set uname = #{uname}
where uid = #{uid};
</update>
//int updateUserById(User user);
@Test
public void test03(){
User user = new User();
user.setUid(7);
user.setUname("hahhahaha");
mapper.updateUserById(user);
}
4 删除
delete from tableName where xxxx
<delete id="deleteUserById">
delete
from users_info
where uid = #{id};
</delete>
//int deleteUserById(int id);
@Test
public void test04(){
mapper.deleteUserById(7);
}
5 其他元素
sql
抽取相同sql语句中的重复部分
<sql id="cName">
users_info (uname, uage, uphone)
</sql>
<insert id="insertUser" useGeneratedKeys="true" keyProperty="uid">
insert
<include refid="cName"/>
VALUES(#{uname},#{uage},#{uphone})
</insert>
resultMap
解决变量名与表名不一致无法完成自动映射的问题。
public class User2 {
private int uid;
private String uname2;
private int uage2;
private String uphone;
}
<select id="findById2" resultMap="User2Map">
select * from users_info where uid = #{uid}
</select>
<resultMap id="User2Map" type="com.yiwu.pojo.User2">
<result column="uname" property="uname2"/>
<result column="uage" property="uage2"/>
</resultMap>
@Test
public void test05(){
User2 byId2 = mapper.findById2(3);
System.out.println(byId2);
}
mybatis基础教程【5小时36讲全套】
重录版-推荐(36讲,无法分享组,点击前往bilibili查看全集)
6 select操作
课堂实录版-时间长,不推荐。
mybatis简单增删改查
更正:40分钟左右sql注入举例,sql语句为 or