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