10.使用注解开发

1.select 注解:
    1.mybatis的主配置文件中的写法:
       <!--mybatis的数据库配置-->
        <configuration>
            <!--可以同时配置多个数据源,一个数据源等于一个environment-->
            <settings>
                <setting name="logImpl" value="STDOUT_LOGGING"/>
            </settings>
            <environments default="development">
                <environment id="development">
                    <!--事务-->
                    <transactionManager type="JDBC"/>
                    <dataSource type="POOLED">
                        <property name="driver" value="org.postgresql.Driver"/>
                        <property name="url" value="jdbc:postgresql://133.64.181.208:18921/wmd_test"/>
                        <property name="username" value="root"/>
                        <property name="password" value="Ustcinfo@2020"/>
                    </dataSource>
                </environment>
            </environments>
            重要点1:此处要绑定的是接口类,注意,如果是想xml文件和接口类同时使用呢?
                1.接口类和xml文件名称必须一致
                2.接口类和xml文件必须放在同一个文件夹下
                3.此处绑定的必须是接口类的路径
            <mappers>
                <mapper class="cn.com.wmd.dao.UserMapper"/>
            </mappers>
        </configuration>
        
    2.接口类的写法
        public interface UserMapper {
             /**
              * @param num:取多少数据
              * @param offest:开始取数据的下表
              * @return:查询的结果集合
              */
              重点2:select标签和@Param标签配合使用,此处有个问题:
              标签只适合简单语句,如果标中字段和实体类字段大多不一致时,使用标签比较繁琐!
              可以标签和xml文件配合使用!
             @Select("select * from public.user limit #{num} offset #{offset}" )
             List<User> getUserByList(@Param("num") int num,@Param("offset") int offest);
        }
    
    3.mybatis的工具类,获取sqlsession
        public class MybatisTools {
            //1:通过xml文件创建SqlSessionFactory
            private static SqlSessionFactory sqlSessionFactory;
            static {
                try {
                    String resource = "mybatis-config.xml";
                    InputStream inputStream = Resources.getResourceAsStream(resource);
                    sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            //2:获取SqlSession
            public static SqlSession getSqlSession(){
                return sqlSessionFactory.openSession();
            }
        }
    
    4.测试类代码
        public void test01(){
            SqlSession sqlSession= MybatisTools.getSqlSession();
            UserMapper mapper = sqlSession.getMapper(UserMapper.class);
            List<User> userByList = mapper.getUserByList(2,3);
            for (User user : userByList) {
                System.out.println(user);
            }
            sqlSession.close();
        }
        
        

增删改查的具体代码:
    接口层:
        增删改查的各种标签
        public interface PersonMapper {
        
            @Select("select * from person where name=#{name}")
            Map<String,Object> getPersonByName(@Param("name") String name);
            
            @Delete("delete from person where id=#{id}")
            int deletePersonByid(@Param("id") int id);
        
            @Update("update person set name=#{name} where id=#{id}")
            int updatePerson(@Param("id") int id,@Param("name") String name);
            
            重点1:如果是引用类型变量时不用使用@Param标签
            @Insert("insert into person values(#{id},#{person_name},#{age},#{message})")
            int insertPerson(Person person);
        }
        
    mybatis的主配置文件的写法:
        重点2:使用package标签注入接口和xml文件
          <mappers>
                <package name="cn.com.wmd"/>
            </mappers>
            使用改标签的重要点:
                1.接口类和xml文件必须同名
                2.接口类和xml文件必须放在同一文件夹下
      
                
  mybatis的工具类:
      public class MybatisUtil {
        private static SqlSessionFactory sqlSessionFactory;
    
        static {
            try {
                String resource = "mybatis-config.xml";
                InputStream inputStream = Resources.getResourceAsStream(resource);
                sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        public static SqlSession getsSqlSession(){
            重点3:传入的boolean值是自动提交设置,默认是false
            return sqlSessionFactory.openSession(true);
        }
    }          
    

关于@parm()注解

1.基本类型或者String类型需要加上
2.引用类型不用加
3.如果只有一个基本类型的话,可以忽略,但是建议大家加上
4.我们在sql中引用就是我们这里@parm()中设定的属性名

#{}和${}的区别

#{}是预编译处理,${}是字符串替换。
Mybatis 在处理#{}时,会将 sql 中的#{}替换为?号,调用 PreparedStatement 的 set 方法来赋值;
Mybatis 在处理${}时,就是把${}替换成变量的值。
使用#{}可以有效的防止 SQL 注入,提高系统安全性。

 

posted @ 2022-05-13 19:56  努力的达子  阅读(22)  评论(0编辑  收藏  举报