首页 > 其他分享 >mybatis -- 续集

mybatis -- 续集

时间:2022-11-29 18:33:24浏览次数:34  
标签:map 续集 name -- 数据源 blog BlogAdminMapper mybatis id

map

interface BlogAdminMapper

int addBlogAdmin1(Map<String,Object> map);

BlogAdminMapper.xml

<!--  map  -->
    <insert id="addBlogAdmin1" parameterType="map">
        insert into blog_admin (id,name,password) value (#{id},#{name},#{pwd});
    </insert>

Test

   @Test
    /**
     * map
     */
    public void AddBlogAdmin1(){
        SqlSession sqlSession = MybatisUtils.getsqlSession();
        BlogAdminMapper mapper = sqlSession.getMapper(BlogAdminMapper.class);
        Map<String,Object> map = new HashMap<String,Object>();
        map.put("id",4);
        map.put("name","test1");
        map.put("pwd","123");
        mapper.addBlogAdmin1(map);
        sqlSession.commit();

        sqlSession.close();
    }

模糊查询

interface BlogAdminMapper

List<BlogAdmin> getLikeList(String value);

BlogAdminMapper.xml

<!-- 控制死,避免出现SQL注入安全问题 -->
<select id="getLikeList" parameterType="String" resultType="com.depressiom.Pojo.BlogAdmin">
        select * from blog_admin where name like "%"#{name}"%"
    </select>

Test

 public void getLikeList(){
        SqlSession sqlSession = MybatisUtils.getsqlSession();
        BlogAdminMapper mapper = sqlSession.getMapper(BlogAdminMapper.class);
        List<BlogAdmin> list = mapper.getLikeList("test");
        for (BlogAdmin blogAdmin : list) {
            System.out.println(blogAdmin);
        }
        sqlSession.close();
    }

配置详解

环境配置(environments)

MyBatis 可以配置成适应多种环境。例如,开发、测试和生产环境需要有不同的配置;或者想在具有相同 Schema 的多个生产数据库中使用相同的 SQL 映射。还有许多类似的使用场景。

不过要记住:尽管可以配置多个环境,但每个 SqlSessionFactory 实例只能选择一种环境
每个数据库对应一个 SqlSessionFactory 实例

<?xml version="1.0" encoding="UTF8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>
    <environments default="test">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/blog"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
        <environment id="test">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/blog"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="com/depressiom/dao/BlogAdminMapper.xml"/>
    </mappers>
</configuration>

事务管理器(transactionManager) 默认 type = JDBC

在 MyBatis 中有两种类型的事务管理器(也就是 type="[JDBC|MANAGED]")

  • JDBC – 这个配置直接使用了 JDBC 的提交和回滚功能,它依赖从数据源获得的连接来管理事务作用域。默认情况下,为了与某些驱动程序兼容,它在关闭连接时启用自动提交。然而,对于某些驱动程序来说,启用自动提交不仅是不必要的,而且是一个代价高昂的操作。因此,从 3.5.10 版本开始,你可以通过将 "skipSetAutoCommitOnClose" 属性设置为 "true" 来跳过这个步骤。例如:
<transactionManager type="JDBC">
  <property name="skipSetAutoCommitOnClose" value="true"/>
</transactionManager>
  • MANAGED – 这个配置几乎没做什么。它从不提交或回滚一个连接,而是让容器来管理事务的整个生命周期(比如 JEE 应用服务器的上下文)。 默认情况下它会关闭连接。然而一些容器并不希望连接被关闭,因此需要将 closeConnection 属性设置为 false 来阻止默认的关闭行为。例如:
<transactionManager type="MANAGED">
  <property name="closeConnection" value="false"/>
</transactionManager>

数据源(dataSource)默认 type="POOLED"

dataSource 元素使用标准的 JDBC 数据源接口来配置 JDBC 连接对象的资源。

  • UNPOOLED– 这个数据源的实现会每次请求时打开和关闭连接。
  • POOLED– 这种数据源的实现利用“池”的概念将 JDBC 连接对象组织起来,避免了创建新的连接实例时所必需的初始化和认证时间。 这种处理方式很流行,能使并发 Web 应用快速响应请求。
  • JNDI – 这个数据源实现是为了能在如 EJB 或应用服务器这类容器中使用,容器可以集中或在外部配置数据源,然后放置一个 JNDI 上下文的数据源引用。

属性(properties)

可以使用properties属性来实现 引用配置文件(这些属性可以在外部进行配置,并可以进行动态替换。你既可以在典型的 Java 属性文件中配置这些属性,也可以在 properties 元素的子元素中设置。)

编写一个配置文件 db.properties

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/blog
username=root
password=root

在核心配置文件中引入

<?xml version="1.0" encoding="UTF8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>
    <properties resource="db.properties">
        <property name="username" value="admin"/>
        <property name="password" value="123456"/>
    </properties>
  <!-- 引入外部文件 -->
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="com/depressiom/dao/BlogAdminMapper.xml"/>
    </mappers>
</configuration>

注意:
1.可直接引入外部文件,不加property
2.可在引入之后添加,property属性
3.如果两种方式重名,引入外部的文件优先级高于property属性

类型别名(typeAliases)

类型别名可为 Java 类型设置一个缩写名字。 它仅用于 XML 配置,意在降低冗余的全限定类名书写。

<?xml version="1.0" encoding="UTF8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>
    <!--  引入属性  -->
    <properties resource="db.properties">
        <property name="username" value="admin"/>
        <property name="password" value="123456"/>
    </properties>
    <!--  给实体类取别名  -->
    <typeAliases>
        <typeAlias type="com.depressiom.pojo.BlogAdmin" alias="admin" />
    </typeAliases>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="com/depressiom/dao/BlogAdminMapper.xml"/>
    </mappers>
</configuration>
  • 也可以指定一个包名,MyBatis 会在包名下面搜索需要的 Java Bean,比如:
<typeAliases>
        <package name="com.depressiom.pojo"/>
    </typeAliases>
  • 每一个在包 domain.blog 中的 Java Bean,在没有注解的情况下,会使用 Bean 的首字母小写的非限定类名来作为它的别名。 比如 domain.blog.Author 的别名为 author;若有注解,则别名为其注解值
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.depressiom.dao.BlogAdminMapper">
    <select id="getAdminList" resultType="admin">
        select * from blog_admin
    </select>

    <select id="getAdminId" parameterType="int" resultType="admin">
        select * from blog_admin where id = #{id}
    </select>
    <!-- Properties of the object type can be retrieved directly -->
    <insert id="addBlogAdmin" parameterType="admin">
        insert into blog_admin (id,name,password) value (#{id},#{name},#{password});
    </insert>

    <update id="UpdateBlogAdmin" parameterType="admin">
        update blog_admin set password = #{password} where id = #{id};
    </update>

</mapper>

如果实体类较少,建议第一种,如果实体类较多,建议第二种,第一种可以DIY别名,第二种要改只能通过实体类注解

标签:map,续集,name,--,数据源,blog,BlogAdminMapper,mybatis,id
From: https://www.cnblogs.com/depressiom/p/16935466.html

相关文章