1、外围配置文件
- mybatis-config.xml
Mybatis的配置文件蕴含了会深深的影响Mybatis行为的设置和属性信息
configuration(配置)properties(属性)settings(设置)typeAliases(类型别名)typeHandlers(类型处理器)objectFactory(对象工厂)plugins(插件)environments(环境配置)environment(环境变量)transactionManager(事务管理器)dataSource(数据源)databaseIdProvider(数据库厂商标识)mappers(映射器)
1.1、新建maven我的项目
编写工具类
package com.jialidun.utils;//sqlSessionFactory--->sqlSessionpublic class MybatisUtils{private static SqlSessionFactory sqlSessionFactory;static{try{ //应用mybatis第一步:获取sqlSessionFactory对象 String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); }catch(IOException e){ e.printStackTrace(); }}//既然有了 SqlSessionFactory,顾名思义,咱们能够从中取得 SqlSession 的实例。//SqlSession 提供了在数据库执行 SQL 命令所需的所有办法。public static SqlSession getSqlSession(){ return sqlSessionFactory.openSession();}}
实体类
package com.jialidun.pojo;@Datapublic class User{private int id;private String name;private String pwd;}
接口
package com.jialidun.dao;public interface UserDao{ //查问全副用户List<User> getUserList();//依据id查问用户User getUserById(int id);//insert 一个用户int addUser(User user);//批改用户int updateUser(User user);//删除用户int deleteUser(int id);}
mapper.xml映射文件
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><!--namespace=绑定一个对应的Dao/Mapper接口--><mapper namespace="com.jialidun.dao.UserDao"> <!--select查问语句--><select id="getUserList" resultType="com.jialidun.pojo.User">select * from mybatis.user</select><select id="getUserById" parameterType="int" resultType="user">select * from mybatis.user where id = #{id}</select><!--对象中的属性,能够间接取出来--><insert id="addUser" parameterType="com.jialidun.pojo.User"> insert into mybatis.user(id,name,pwd) values(#{id},#{name},#{pwd});</insert><update id="updateUser" parameterType="com.jialidun.pojo.User"> update mybatis.user set name=#{name},pwd=#{pwd} where id=#{id};</update><delete id="deleteUser" parameterType="int"> delete from mybatis.user where id=#{id};</delete></mapper>
测试
package com.jialidun.dao;public class UserDaoTest{@Testpublic void test(){ //第一步:取得SqlSession对象 SqlSession sqlSession = MybatisUtils.getSqlSession(); try{ UserDao userDao= sqlSession.getMapper(UserDao.class); List<User> userList = userDao.getUserList(); //形式二: //List<User> userList = sqlSession.selectList("com.jialidun.dao.UserDao.getUserList"); for(User user:userList){ System.out.println(user); } }catch(Exception e){ e.printStackTrace(); }finally{ //敞开SqlSession sqlSession.close(); } }@Testpublic void getUserById(){ SqlSession sqlSession = MybatisUtils.getSqlSession(); UserMapper mapper = sqlSession.getMapper(UserDao.class); User user = mapper.getUserById(1); System.out,println(user); sqlSession.close();}@Testpublic void addUser(){ SqlSession sqlSession = MybatisUtils.getSqlSession(); UserMapper mapper = sqlSession.getMapper(UserDao.class); int num = mapper.addUser(4,"沙和尚","444555"); if(num>0){ System.out.println("增加用户胜利!"); } //提交事务 sqlSession.commit(); sqlSession.close();}@Testpublic void updateUser(){ SqlSession sqlSession = MybatisUtils.getSqlSession(); UserMapper mapper = sqlSession.getMapper(UserDao.class); mapper.updateUser(new User(4,"悟净","666666")); //提交事务 sqlSession.commit(); sqlSession.close();}@Testpublic void deleteUser(){ SqlSession sqlSession = MybatisUtils.getSqlSession(); UserMapper mapper = sqlSession.getMapper(UserDao.class); mapper.deleteUser(4); //提交事务 sqlSession.commit(); sqlSession.close();}}
2、环境配置(encironments)
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><!--configuration外围配置文件--><configuration> <!--引入内部配置文件--> <properties resource="db.properties"> <property name="username" value="root"/> <property name="password" value="1111"/> </properties> <!--能够给实体类起别名--> <typeAliases> <package name="com.jialidun.pojo"/> </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/jialidun/dao/UserMapper/xml"/></mappers></configuration>
Mybatis能够配置成适应多种环境
不过要记住:只管能够配置多个环境,但每个 SqlSessionFactory 实例只能抉择一种环境。
学会应用配置多套运行环境!
Mybatis默认的事务管理器就是JDBC,连接池:POOLED
3、属性(properties)
咱们能够通过properties属性来实现援用配置文件
这些属性能够在内部进行配置,并能够进行动静替换。你既能够在典型的 Java 属性文件中配置这些属性,也能够在 properties 元素的子元素中设置。【db.properties】
driver=com.mysql.cj.jdbc.Driverurl=jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC%2B+8username=rootpassword=root
在外围配置中引入
<!--引入内部配置文件--> <properties resource="db.properties"> <property name="username" value="root"/> <property name="password" value="1111"/> </properties>
- 能够间接引入内部文件
- 能够在其中减少一些属性配置
- 如果两个文件有同一个字段,优先应用内部配置文件的!
4、typeAliases(类型别名)
- 类型别名可为 Java 类型设置一个缩写名字
- 意在升高冗余的全限定类名书写
<!--能够给实体类起别名--> <typeAliases> <tyoeAlias type="com.jialidun.pojo.User" alias="User"/> </typeAliases>
也能够指定一个包名,MyBatis 会在包名上面搜寻须要的 Java Bean,比方:
死奥秘实体类的包,它的默认别名就为这个类的类名,首字母小写!
<!--能够给实体类起别名--> <typeAliases> <package name="com.jialidun.pojo"/> </typeAliases>
在实体类比拟少的时候,应用第一种形式
如果实体类非常多,倡议应用第二种
第一种能够自定义别名,然而第二种不能够自定义,如果非要改,须要在实体类上增加@Alias("xxx")注解
@Alias("user")public class User{ private int id; private String name; private String pwd;}
5、settings(设置)
这是 MyBatis 中极为重要的调整设置,它们会扭转 MyBatis 的运行时行为。
6、其余配置
- typeHandlers(类型处理器)
- objectFactory(对象工厂)
plugins(插件)
mybatis-generator-core
mybatis-plus
通用mapper7、映射器(mappers)
MapperRegistry:注册绑定咱们的Mapper文件
形式一:【举荐应用】<mappers><mapper resource="com/jialidun/dao/UserMapper/xml"/></mappers>
形式二:
<mappers><mapper class="com.jialidun.dao.UserMapper"/></mappers>
形式三:应用扫描包进行注入绑定
<mappers><package name="com.jialidun.dao"/></mappers>
留神点:
- 接口和他的Mapper配置文件必须同名
- 接口和他的Mapper配置文件必须在对立包下
将数据库配置文件内部引入
实体类别名
保障UserMapper接口和UserMapper.xml改为统一!并且在同一个包下!