MyBatis项目创建
一、开发环境的准备
总览:
mybatis搭建过程:
1、导入jar
2、创建mybatis的核心(全局)配置文件mybatis-config.xml,并配置
3、创建映射文件XxxMapper.xml,并配置
4、创建mapper接口,实现两个绑定:
(1)接口全限定名要和映射文件的namespace保持一致
(2)接口中方法名和SQL语句的id保持一致
5、获取mybatis操作数据库的会话对象SqlSession,通过getMapper()获取接口的动态代理实现类
6、测试
详细过程:
0、STS选择Java视图,新建Java Project.
1、 导入MyBatis框架的jar包、Mysql驱动包、log4j的jar包
myBatis-3.4.1.jar
mysql-connector-java-5.1.37-bin.jar
log4j.jar
mysql-connector-java-5.1.37-bin.jar
log4j.jar
2、创建mybatis的核心(全局)配置文件mybatis-config.xml,并配置(如何连接数据库,直接由手册中复制粘贴)
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <environments default="development"> <!--environments: 设置连接数据库的环境,default:设置默认使用的数据库环境--> <environment id="development"> <!--environment: 设置某个具体的数据库环境,id:数据库环境的唯一标识--> <transactionManager type="JDBC" /> <!--之后会采用Spring的事务管理,type:JDBC或者MANAGED,JDBC表示最原始的方式处理事务--> <dataSource type="POOLED"> <!--之后会采用druid数据库连接池,此为数据源,POOLED|UNPOOLED|JNDI--> <property name="driver" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/ssm" /> <property name="username" value="root" /> <property name="password" value="123456" /> </dataSource> </environment> </environments>
<!--引入映射文件--> <mappers> <mapper resource="UserMapper.xml" /> </mappers> </configuration>
1)对于properties和一些不常用的设置:
<!-- <properties> <property name="jdbc.driver" value="com.mysql.jdbc.Driver"/> </properties> --> <!-- <properties>:设置或引入资源文件 resource:在类路径下访问资源文件 url:在网络路径或磁盘路径下访问资源文件 --> <properties resource="jdbc.properties"></properties> <!-- 将带下划线的变量转化为驼峰形式 user_Name -> userName --> <settings> <setting name="mapUnderscoreToCamelCase" value="true"/> </settings> <typeAliases> <!-- 为类型设置类型别名 type:Java 类型,若只设置type,默认的别名就是类型,且不区分大小写 --> <!-- <typeAlias type="com.atguigu.bean.User" alias="u"/> --> <package name="com.atguigu.bean"/> </typeAliases>
2)Mybatis的xml配置文件中标签的顺序不能出错
Content Model : (properties?, settings?, typeAliases?, typeHandlers?, objectFactory?,
objectWrapperFactory?, reflectorFactory?, plugins?, environments?, databaseIdProvider?, mappers?)
3)xml的提示功能:
-1)、联网
-2)、配置:preference->xml->xmlCatalog-->add
(1)PUBLIC ID:-//mybatis.org//DTD Config 3.0//EN
(2)URI:http://mybatis.org/dtd/mybatis-3-config.dtd
-2)、配置:preference->xml->xmlCatalog-->add
(1)PUBLIC ID:-//mybatis.org//DTD Config 3.0//EN
(2)URI:http://mybatis.org/dtd/mybatis-3-config.dtd
3、创建映射文件XxxMapper.xml,并配置(如何操作数据库,写的是SQL语句,处理实体对象Xxx和表关系)
4、创建mapper接口,实现两个绑定:
(1)接口全限定名要和映射文件的namespace保持一致
(2)接口中方法名和SQL语句的id保持一致
4、创建mapper接口,实现两个绑定:
(1)接口全限定名要和映射文件的namespace保持一致
(2)接口中方法名和SQL语句的id保持一致
例如:接口UserMapper,和映射文件UserMapper.xml(实现调用接口中的方法就执行相应的SQL语句,并得到返回值)
package com.atguigu.mapper; import com.atguigu.bean.User; public interface UserMapper { User getUserByUid(String uid); }
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.atguigu.mapper.UserMapper"> <!-- <select>:定义查询语句 id:设置SQL语句的唯一标示 resultType:结果类型,即实体类的全限定名 --> <select id="getUserByUid" resultType="com.atguigu.bean.User"> select uid,user_name,password,age,sex from user where uid = ${value} </select> </mapper>
5、获取mybatis操作数据库的会话对象SqlSession,通过getMapper()获取接口的动态代理实现类
package com.atguigu.mapper; import static org.junit.Assert.*; import java.io.IOException; import java.io.InputStream; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.junit.Test; import com.atguigu.bean.User; public class TestMybatis { @Test public void test() throws IOException { InputStream is = Resources.getResourceAsStream("mybatis-config.xml"); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is); SqlSession sqlSession = sqlSessionFactory.openSession(); //getMapper():会通过动态代理动态生成UserMapper的代理实现类 UserMapper mapper = sqlSession.getMapper(UserMapper.class); System.out.println(mapper.getClass().getName()); User user = mapper.getUserByUid("1"); System.out.println(user); //user_name ---> userName } }
6、测试