# mybatis-study **Repository Path**: xiyounote/mybatis-study ## Basic Information - **Project Name**: mybatis-study - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-07-12 - **Last Updated**: 2021-07-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 1、准备数据库环境 ```sql CREATE DATABASE `mybatis`; USE `mybatis`; CREATE TABLE `user` ( `id` INT(20) NOT NULL PRIMARY KEY, `name` VARCHAR(30) DEFAULT NULL, `pwd` VARCHAR(30) DEFAULT NULL )ENGINE=INNODB DEFAULT CHARSET=utf8; INSERT INTO `user`(`id`, `name`, `pwd`) VALUES (1, '张三', '1235'), (2, '里斯', '1232'), (3, '王武', '1237') ``` ## 2、创建项目 ### 2.1 导入依赖 ```xml mysql mysql-connector-java 8.0.25 org.mybatis mybatis 3.5.7 junit junit 4.13 ``` - Dao接口 - 接口实现类由原来的Impl转换为一个Mapper配置文件 - 测试 ```xml mapper--> src/main/resources **/*.properties **/*.xml true src/main/java **/*.properties **/*.xml true ``` ## 3. CRUD ### 3.1 namespace 包名要和mapper中的包名一致 ### 3.2 select - id: 对应namespce中的方法名 - resultType: sql执行的返回值 - paramType: 参数类型 根据id查用户 select * from mybatis.user where id = #{id} 1, 接口添加方法 2,xml写sql; 3, 测试 插入 int addUser(User user); insert into 对象中的属性取: #{id}, #{name}, #{pwd} //**增、删改需要提交事务**; if(res >0){} sqlsession.commit(); ```xml INSERT INTO mybatis.user (id, name, pwd) VALUES (#{id},#{name}, #{pwd}) DELETE from mybatis.user WHERE id = #{id} update mybatis.user set name=#{name}, pwd=#{pwd} where id=#{id}; ``` ### 3.3 map ```java int updateUserByMap(Map map); ``` ```xml int updateUserByMap(Map map); ``` ```java @Test public void updateByMap(){ SqlSession sqlSession = MybatisUtils.getSqlSession(); UserMapper userMapper = sqlSession.getMapper(UserMapper.class); Map map = new HashMap(); map.put("userName", "张五"); map.put("passWord", "111111"); map.put("id",1); userMapper.updateUserByMap(map); sqlSession.commit(); sqlSession.close(); } ``` ### 3.4 like模糊查询 ```xml List getUserLike(Map map); public void getUserLike(){ //1,获取sqlSession SqlSession sqlSession = MybatisUtils.getSqlSession(); //2,执行SQL UserMapper userDao = sqlSession.getMapper(UserMapper.class); Map map = new HashMap(); map.put("userName","%李%"); List userList = userDao.getUserLike(map); for (User user : userList) { System.out.println(user.toString()); } //3,关闭sqlSession sqlSession.close(); } ``` 模糊查询防止sql注入 ``sql like "%"#{value}xx% //sql中使用通配符会导致sql注入 `` ## 4,配置 ```xml properties(属性) settings(设置) typeAliases(类型别名) typeHandlers(类型处理器) objectFactory(对象工厂) plugins(插件) environments(环境配置) environment(环境变量) transactionManager(事务管理器) dataSource(数据源) databaseIdProvider(数据库厂商标识) mappers(映射器) ``` 新建项目步骤:1,复制mybatis配置文件;2,拷贝工具类,3,实体类,接口 ### 4.2 环境配置(environments) 可配置多种环境,尽管可以配置多个环境,但每个 SqlSessionFactory 实例只能选择一种环境。 默认事务管理器是JDBC, 连接池: POOLED ### 4.3 属性(properties) db.properties 1,编写 db.properties ```properties driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/mybatis username=root password=root ``` 2,在核心配置文件中引入,顺序要求 ### 4.4 类型别名(typeAliases) 设置一个缩写名字,意在降低冗余的全限定类名书写 1, 给实体类起别名,可以自定义别名 ```xml ``` 2,给包起别名, 类别为首字母小xie直接用,使用注解给类写别名 @Alias("helloUser") _int为int, int为Integer别名 ```xml ```