如何简易的上手mybatis
原创
©著作权归作者所有:来自51CTO博客作者demo123567的原创作品,请联系作者获取转载授权,否则将追究法律责任
前段时间发现了一个比较投机的方式来使用mybatis,这种方式可以让人觉得我确实是使用的mybatis啊的感觉,实际上又不是。我们都知道,Mybatis相比于直接用sql语句来查询写起来有点复杂,因为mybatis首先得有xml文件,然后映射到mapper,还得有Dto,最后在供service层调用,这样一套写下来,需要头脑比较清晰才不会出bug,否则不是这里写错了就是那里写错了。在这里,我给一个方法,使得大家似乎用了mybatis,但是实际上写的是纯sql语句的方法,这个方法本来是用来处理那种很长的sql语句的,但是前几天我在做一个简单项目的时候为了省事儿,就直接那样用了,实践证明,那种方法在头脑比较昏的时候也是可以使用的,因为难度较低,哈哈。废话说多了,直接上代码
// SqlMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.chaojilaji.secondhandshop.mapper.SqlMapper">
<select id="sql" parameterType="String" resultType="HashMap">
${sql}
</select>
<select id="sqlOne" parameterType="String" resultType="HashMap">
${sql}
</select>
</mapper>
对应的mapper
@Mapper
@Component(value = "sqlMapper")
public interface SqlMapper {
List<Map<String,Object>> sql(@Param("sql") String sql);
Map<String,Object> sqlOne(@Param("sql") String sql);
}
这个时候只需要注入到服务中
@AutoWired
SqlMapper sqlmapper;
public void demo(Integer uid){
String sql = String,format("select * from userinfo where uid = %d", uid);
List<Map<String,Object>> ans = sqlmapper.sql(sql);
}
就可以了。这种方式适合用于sql比较长的场景,用xml不好来描述。如果非要用在简单的sql中,就有点多此一举了。
这种写法容易引起sql注入,可以通过参数内绑定参数的方式避免sql注入,详情见我的另一篇博客: