myBatis的学习之 ( 二 ) ----- myBatis的应用
一、基本用法
1.添加jar包
mybatis-3.2.8.jar
mysql-connector-java-5.1.7-bin.jar
添加配置文件
datasource.properties
1 jdbc.driverClassName=com.mysql.jdbc.Driver 2 jdbc.url=jdbc:mysql://localhost:3306/数据库名? useUnicode=true&characterEncoding=utf8 3 jdbc.username=root 4 jdbc.password=root
mb-config.xml
1 <!--2、设置日志--> 2 <settings> 3 <setting name="logImpl" value="log4j"/> 4 <!--还可使用mybatis官方提供的日志,不用添加log4j的jar包和配置文件--> 5 <!--<setting name="logImpl" value="org.apache.ibatis.logging.stdout.StdOutImpl"/>--> 6 </settings> 7 8 <!--3.给实体类起别名--> 9 <typeAliases> 10 <!-- <typeAlias type="day1.entity.User" alias="user"/> 某一个实体类--> 11 <!--推荐:包下所有类名(别名)--> 12 <package name="day1.entity"/> 13 </typeAliases> 14 15 <!--default用来选择使用哪一套配置--> 16 <environments default="mysql"> 17 <!--environment标签可以有多个,用来配置多个数据库支持,但其id不能重复--> 18 <environment id="mysql"> 19 <!-- 事务管理器 20 jdbc:使用jdbc的事务, 21 MANAGED:表示mybatis对于事务什么都不作,交给其他框架(Spring)处理--> 22 <transactionManager type="jdbc"></transactionManager> 23 <!-- 连接信息 24 1.type的值: 25 unpooled:不使用连接池,只用来打开和关闭连接 26 pooled:使用连接池 27 jndi:向其他框架获取连接--> 28 <dataSource type="unpooled"> 29 <property name="driver" value="${jdbc.driverClassName}"/> 30 <property name="url" value="${jdbc.url}"/> 31 <property name="username" value="${jdbc.username}"/> 32 <property name="password" value="${jdbc.password}"/> 33 </dataSource> 34 </environment> 35 36 </environments> 37 38 <!--映射器:配置mapper文件:本质上是接口的实现类 --> 39 <mappers> 40 <mapper resource="day1/mapper/UserMapper.xml"/> 41 <mapper resource="day1/mapper/UserDaoMapper.xml"/> 42 <mapper resource="day1/mapper/ResultMap_Mapper.xml"/> 43 </mappers>
在mapper配置文件里写sql语句
1 <!--2、设置日志--> 2 <settings> 3 <setting name="logImpl" value="log4j"/> 4 <!--还可使用mybatis官方提供的日志,不用添加log4j的jar包和配置文件--> 5 <!--<setting name="logImpl" value="org.apache.ibatis.logging.stdout.StdOutImpl"/>--> 6 </settings> 7 8 <!--3.给实体类起别名--> 9 <typeAliases> 10 <!-- <typeAlias type="day1.entity.User" alias="user"/> 某一个实体类--> 11 <!--推荐:包下所有类名(别名)--> 12 <package name="day1.entity"/> 13 </typeAliases> 14 15 <!--default用来选择使用哪一套配置--> 16 <environments default="mysql"> 17 <!--environment标签可以有多个,用来配置多个数据库支持,但其id不能重复--> 18 <environment id="mysql"> 19 <!-- 事务管理器 20 jdbc:使用jdbc的事务, 21 MANAGED:表示mybatis对于事务什么都不作,交给其他框架(Spring)处理--> 22 <transactionManager type="jdbc"></transactionManager> 23 <!-- 连接信息 24 1.type的值: 25 unpooled:不使用连接池,只用来打开和关闭连接 26 pooled:使用连接池 27 jndi:向其他框架获取连接--> 28 <dataSource type="unpooled"> 29 <property name="driver" value="${jdbc.driverClassName}"/> 30 <property name="url" value="${jdbc.url}"/> 31 <property name="username" value="${jdbc.username}"/> 32 <property name="password" value="${jdbc.password}"/> 33 </dataSource> 34 </environment> 35 36 </environments> 37 38 <!--映射器:配置mapper文件:本质上是接口的实现类 --> 39 <mappers> 40 <mapper resource="day1/mapper/UserMapper.xml"/> 41 <mapper resource="day1/mapper/UserDaoMapper.xml"/> 42 <mapper resource="day1/mapper/ResultMap_Mapper.xml"/> 43 </mappers>
Util工具类
1 public class Util { 2 static SqlSessionFactory factory; 3 static { 4 SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder(); 5 factory = builder. 6 build(Util.class.getClassLoader().getResourceAsStream("mb-config.xml")); 7 } 8 //获取连接对象 9 public static SqlSession getSession() { 10 return factory.openSession(); 11 } 12 //关闭session 13 public static void closeSession(SqlSession session) { 14 if (session != null) { 15 session.close();//关闭 16 } 17 } 18 }
测试类 test
1 //测试类 2 public class TestMapper { 3 //psvm 4 public static void main(String[] args) { 5 //1.创建sqlSessionFactoryBuilder对象,读取配置文件 6 SqlSessionFactoryBuilder builder =new SqlSessionFactoryBuilder(); 7 //2.连接对象工厂 8 SqlSessionFactory factory = builder.build(TestMapper.class. 9 getClassLoader().getResourceAsStream("mb-config.xml")); 10 //3.获取连接对象 11 SqlSession session =factory.openSession(); 12 //4.执行查询操作 13 // -->1.selectOne("方法名",实参) 14 User user = session.selectOne("test.selectUserById",1); 15 // -->2.selectList("方法名") 16 List<User> list = session.selectList("test.selectAllUsers"); 17 System.out.println("查询结果:"+list.toString()); 18 session.close(); 19 } 20 }