IT评测·应用市场-qidao123.com技术社区

标题: Mybatis编写SQL [打印本页]

作者: 卖不甜枣    时间: 2024-8-29 17:09
标题: Mybatis编写SQL
两种写法是可以同时存在的
  一、用注解编写

1.1 增

普通增长

  1. @Mapper
  2. public interface UserInfoMapper {
  3.     @Insert("insert into userinfo (username, password, age, gender, phone)" +
  4.             "values(#{username}, #{password}, #{age}, #{gender}, #{phone})")
  5.     Integer insert(UserInfo userInfo);
  6. }
复制代码
获取自增ID

  1. @Options(useGeneratedKeys = true, keyProperty = "id")
  2. @Insert("insert into userinfo (username, password, age, gender, phone)" +
  3.         "values(#{username}, #{password}, #{age}, #{gender}, #{phone})")
  4. Integer insert(UserInfo userInfo);
复制代码
1.2 删和改

  1. @Delete("delete from userinfo where id = #{id}")
  2. Integer delete(Integer id);
复制代码
  1. @Mapper
  2. public interface UserInfoMapper {
  3.     @Update("update userinfo set age = #{age} where id = #{id}")
  4.     Integer update(UserInfo userInfo);
  5. }
复制代码
  1. @Slf4j
  2. @SpringBootTest
  3. class UserInfoMapperTest {
  4.     @Autowired
  5.     private UserInfoMapper userInfoMapper;
  6.     @Test
  7.     void update() {
  8.         UserInfo userInfo = new UserInfo();
  9.         userInfo.setAge(22);
  10.         userInfo.setId(11);
  11.         Integer res = userInfoMapper.update(userInfo);
  12.         //使用返回值判断【程序是否正确运行】
  13.         if (res > 0){
  14.             log.info("数据更新成功");
  15.         }
  16.     }
  17. }
复制代码
1.3 查

单表查询

  1. @Mapper
  2. public interface UserInfoMapper {
  3.     @Select("select * from userInfo")
  4.     List<UserInfo> selectAll();
  5. }
复制代码
参数匹配
  1. @Mapper
  2. public interface UserInfoMapper {
  3.     @Select("select * from userInfo where id = #{id}")
  4.     UserInfo selectUser(Integer id);
  5. }
复制代码
参数不匹配
  1. @Mapper
  2. public interface UserInfoMapper {
  3.     @Select("select * from userinfo where id = #{id}")
  4.     UserInfo selectUser(Integer id123);
  5. }
复制代码
多表查询


二、用xml编写

2.1 使用xml的流程

  1. spring:
  2.   datasource:
  3.     url: jdbc:mysql://127.0.0.1:3306/mybatis_test?characterEncoding=utf8&useSSL=false
  4.     username: root
  5.     password: 123456
  6.     driver-class-name: com.mysql.cj.jdbc.Driver
复制代码
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3. <mapper namespace="com.example.demo.mapper.UserInfoXMLMapper">
  4. </mapper>
复制代码
  1. @Mapper
  2. public interface UserInfoXMLMapper {
  3.     List<UserInfo> selectAll();
  4. }
复制代码
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3. <mapper namespace="com.example.demo.mapper.UserInfoXMLMapper">
  4.     <select id="selectAll" resultType="com.example.demo.model.UserInfo">
  5.        select * from userinfo        <!-->直接在这里写SQL语句即可<-->
  6.     </select>
  7. </mapper>
复制代码
2.2 增

普通增长

  1. @Mapper
  2. public interface UserInfoXMLMapper {
  3.     Integer insert(UserInfo userInfo);
  4. }
复制代码
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3. <mapper namespace="com.example.demo.mapper.UserInfoXMLMapper">
  4.     <insert id="insert">
  5.         insert into userinfo (username, password, age, gender, phone)
  6.         values(#{username}, #{password}, #{age},
  7.         #{gender}, #{phone})
  8.     </insert>
  9. </mapper>
复制代码
  1. @Mapper
  2. public interface UserInfoXMLMapper {
  3.    
  4.     Integer insert(@Param("user") UserInfo userInfo);
  5. }
复制代码
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3. <mapper namespace="com.example.demo.mapper.UserInfoXMLMapper">
  4.     <insert id="insert">
  5.         insert into userinfo (username, password, age, gender, phone)
  6.         values(#{user.username}, #{user.password}, #{user.age},
  7.         #{user.gender}, #{user.phone})
  8.     </insert>
  9. </mapper>
复制代码
获取自增ID

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3. <mapper namespace="com.example.demo.mapper.UserInfoXMLMapper">
  4.     <insert id="insert" useGeneratedKeys="true" keyProperty="id">
  5.         insert into userinfo (username, password, age, gender, phone)
  6.         values(#{username}, #{password}, #{age},
  7.         #{gender}, #{phone})
  8.     </insert>
  9. </mapper>
复制代码
2.3 删 和 改

  1. <delete id="delete">
  2.     delete from userinfo where id = #{id}
  3. </delete>
复制代码
  1. <update id="update">
  2.     update userinfo set age = #{age} where id = #{id}
  3. </update>
复制代码
2.4 查

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3. <mapper namespace="com.example.demo.mapper.UserInfoXMLMapper">
  4.     <select id="selectAll" resultType="com.example.demo.model.UserInfo">
  5.        select * from userinfo        <!-->直接在这里写SQL语句即可<-->
  6.     </select>
  7. </mapper>
复制代码
三、#{} 和 ${}

3.1 #{} 、${}

3.1 预编译 SQL 、即时编译SQL




免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 IT评测·应用市场-qidao123.com技术社区 (https://dis.qidao123.com/) Powered by Discuz! X3.4