MyBatis项目搭建
pom.xml
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.3.0</version>
</dependency>
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>sqljdbc4</artifactId>
<version>4.0</version>
</dependency>
1.mybatis配置文件
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE configuration 3 PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 4 "http://mybatis.org/dtd/mybatis-3-config.dtd"> 5 <configuration> 6 <properties resource="db.properties"> 7 </properties> 8 <environments default="development"> 9 <environment id="development"> 10 <transactionManager type="JDBC" /> 11 <dataSource type="POOLED"> 12 <property name="driver" value="${mydb.driverClassName}" /> 13 <property name="url" value="${mydb.url}" /> 14 <property name="username" value="${mydb.username}" /> 15 <property name="password" value="${mydb.password}" /> 16 </dataSource> 17 </environment> 18 </environments> 19 <!-- 加载 映射文件 --> 20 <mappers> 21 <!--通过resource方法一次加载一个映射文件 --> 22 <!-- 测试本例中的dao方式 --> 23 <!-- <mapper resource="sqlmap\User.xml"/> --> 24 25 <!-- 通过mapper接口加载单个 映射文件 遵循一些规范:需要将mapper接口类名和mapper.xml映射文件名称保持一致,且在一个目录 26 中 上边规范的前提是:使用的是mapper代理方法 --> 27 <!-- <mapper class="cn.itcast.mybatis.mapper.UserMapper"/> --> 28 29 <!-- 批量加载mapper 指定mapper接口的包名,mybatis自动扫描包下边所有mapper接口进行加载 遵循一些规范:需要将mapper接口类名和mapper.xml映射文件名称保持一致,且在一个目录 30 中 上边规范的前提是:使用的是mapper代理方法 --> 31 <package name="myproject.mybaties.mapper"/> 32 </mappers> 33 </configuration>
2.db.properties文件
mydb.username=sa mydb.password=123456 mydb.url=jdbc:sqlserver://localhost:1433;databaseName=JavaTestDB mydb.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver connection.initialSize=1 connection.maxActive=100 connection.maxIdle=30 connection.minIdle=5 connection.maxWait=5000 connection.removeAbandoned=true connection.removeAbandonedTimeout=3000 connection.logAbandoned=false
2.通过SqlSessionFactoryBuilder创建sqlSessionFactory
3.通过sqlSessionFactory创建sqlSession
加载方式:
String resource = "mybatis-config.xml" InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
4.通过Mapper代理方式创建接口相当于Dao接口:
注意xml 中namespace必须和class名称相同,sql id和mapper接口方法相同
<?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"> <!-- namespace命名空间,作用就是对sql进行分类化管理,理解sql隔离 注意:使用mapper代理方法开发,namespace有特殊重要的作用 --> <mapper namespace="myproject.mybaties.mapper.UserMapper"> <select id="findUserList" resultType="myproject.mybaties.beans.User"> SELECT * FROM testUser </select> </mapper>
调用方式:
SqlSession sqlSession = sqlSessionFactory.openSession(); UserMapper userMapper = sqlSession.getMapper(UserMapper.class); userMapper.findUserList()
5.MyBatis创建Dao
<?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"> <!-- namespace命名空间,作用就是对sql进行分类化管理,理解sql隔离 注意:使用mapper代理方法开发,namespace有特殊重要的作用 --> <mapper namespace="test"> <!-- 在 映射文件中配置很多sql语句 --> <!-- 需求:通过id查询用户表的记录 --> <!-- 通过 select执行数据库查询 id:标识 映射文件中的 sql 将sql语句封装到mappedStatement对象中,所以将id称为statement的id parameterType:指定输入 参数的类型,这里指定int型 #{}表示一个占位符号 #{id}:其中的id表示接收输入 的参数,参数名称就是id,如果输入 参数是简单类型,#{}中的参数名可以任意,可以value或其它名称 resultType:指定sql输出结果 的所映射的java对象类型,select指定resultType表示将单条记录映射成的java对象。 --> <select id="selectUserByName" parameterType="java.lang.String" resultType="myproject.mybaties.beans.User"> SELECT * FROM testUser where userName LIKE '%${value}%' </select> <select id="selectUserList" resultType="myproject.mybaties.beans.User"> SELECT * FROM testUser </select> </mapper>
调用方式:
SqlSession sqlSession = sqlSessionFactory.openSession();
List<User> list = sqlSession.selectList("test.selectUserList","小明");
浙公网安备 33010602011771号