zoukankan      html  css  js  c++  java
  • Spring Boot学习总结三

    1,mybatis在spring boot下的2种使用模式

    无配置文件注解版

    application.properties添加相关配置

    mybatis.type-aliases-package=com.neo.entity
    
    spring.datasource.driverClassName = com.mysql.jdbc.Driver
    spring.datasource.url = jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8
    spring.datasource.username = root
    spring.datasource.password = root
    

    springboot会自动加载spring.datasource.*相关配置,数据源就会自动注入到sqlSessionFactory中,sqlSessionFactory会自动注入到Mapper中,对了你一切都不用管了,直接拿起来使用就行了。
    在启动类中添加对mapper包扫描@MapperScan

    @SpringBootApplication
    @MapperScan("com.neo.mapper")
    public class Application {    
       public static void main(String[] args) {
            SpringApplication.run(Application.class, args);
        }
    }
    

    或者直接在Mapper类上面添加注解@Mapper,建议使用上面那种,不然每个mapper加个注解也挺麻烦的

    开发Mapper,第三步是最关键的一块,sql生产都在这里

    public interface UserMapper {    
        @Select("SELECT * FROM users")     
        @Results({        
           @Result(property = "userSex",  column = "user_sex", javaType = UserSexEnum.class),        
           @Result(property = "nickName", column = "nick_name")
        })   
        List<UserEntity> getAll();
        
        @Select("SELECT * FROM users WHERE id = #{id}")
        @Results({        
            @Result(property = "userSex",  column = "user_sex", javaType = UserSexEnum.class),
            @Result(property = "nickName", column = "nick_name")
        })    
        UserEntity getOne(Long id);    
        
        @Insert("INSERT INTO users(userName,passWord,user_sex) VALUES(#{userName}, #{passWord}, #{userSex})")    
        void insert(UserEntity user);    
        
        @Update("UPDATE users SET userName=#{userName},nick_name=#{nickName} WHERE id =#{id}")
        void update(UserEntity user);    
        
        @Delete("DELETE FROM users WHERE id =#{id}")    
        void delete(Long id);
    
    }
    

    @Select 是查询类的注解,所有的查询均使用这个
    @Result 修饰返回的结果集,关联实体类属性和数据库字段一一对应,如果实体类属性和数据库属性名保持一致,就不需要这个属性来修饰。
    @Insert 插入数据库使用,直接传入实体类会自动解析属性到对应的值
    @Update 负责修改,也可以直接传入对象
    @delete 负责删除

    极简xml版本

    极简xml版本保持映射文件的老传统,优化主要体现在不需要实现dao的是实现层,系统会自动根据方法名在映射文件中找对应的sql.
    application.properties新增以下配置

    mybatis.config-locations=classpath:mybatis/mybatis-config.xml
    mybatis.mapper-locations=classpath:mybatis/mapper/*.xml
    

    指定了mybatis基础配置文件和实体类映射文件的地址,mybatis-config.xml 配置,这里也可以添加一些mybatis基础的配置

    <configuration>
        <typeAliases>
            <typeAlias alias="Integer" type="java.lang.Integer" />
            <typeAlias alias="Long" type="java.lang.Long" />
            <typeAlias alias="HashMap" type="java.util.HashMap" />
            <typeAlias alias="LinkedHashMap" type="java.util.LinkedHashMap" />
            <typeAlias alias="ArrayList" type="java.util.ArrayList" />
            <typeAlias alias="LinkedList" type="java.util.LinkedList" />
        </typeAliases>
    </configuration>
    

    添加User的映射文件, 这下面的resultMap也可以不定义,像getAll方法那样直接使用类

    <mapper namespace="com.neo.mapper.UserMapper" >
        <resultMap id="BaseResultMap" type="com.neo.entity.UserEntity" >
            <id column="id" property="id" jdbcType="BIGINT" />
            <result column="userName" property="userName" jdbcType="VARCHAR" />
            <result column="passWord" property="passWord" jdbcType="VARCHAR" />
            <result column="user_sex" property="userSex" javaType="com.neo.enums.UserSexEnum"/>
            <result column="nick_name" property="nickName" jdbcType="VARCHAR" />
        </resultMap>
    
        <sql id="Base_Column_List" >
            id, userName, passWord, user_sex, nick_name
        </sql>
    
        <select id="getAll" resultMap="com.neo.entity.UserEntity"  >
           SELECT 
           *
           FROM users
        </select>
    
        <select id="getOne" parameterType="java.lang.Long" resultMap="BaseResultMap" >
            SELECT 
           <include refid="Base_Column_List" />
           FROM users
           WHERE id = #{id}
        </select>
    
        <insert id="insert" parameterType="com.neo.entity.UserEntity" >
           INSERT INTO 
                users
                (userName,passWord,user_sex) 
            VALUES
                (#{userName}, #{passWord}, #{userSex})
        </insert>
    
        <update id="update" parameterType="com.neo.entity.UserEntity" >
           UPDATE 
                users 
           SET 
            <if test="userName != null">userName = #{userName},</if>
            <if test="passWord != null">passWord = #{passWord},</if>
            nick_name = #{nickName}
           WHERE 
                id = #{id}   
         </update>
    
        <delete id="delete" parameterType="java.lang.Long" >
           DELETE FROM
                 users 
           WHERE 
                 id =#{id}    
        </delete>
        
    </mapper>
    
  • 相关阅读:
    PowerShell笔记
    Windows难民安装docker的注意事项
    minix3使用轻快入门
    gentoo(贱兔) Linux作业系统的基本使用
    Artix Linux作业系统的使用~
    CentOS7搭建sftp
    Hello Wolrd
    Android开发技术周报 Issue#1
    Android开发技术周报 Issue#4
    Android开发技术周报 Issue#3
  • 原文地址:https://www.cnblogs.com/ylzhang/p/9877939.html
Copyright © 2011-2022 走看看