MyBatis初学
作者:互联网
为了更好地完成JavaWeb的搭建,做出更好的web,我们今天学习MyBatis。首先要知道什么是MyBatis。
Mybatis是优秀的持久层框架(把数据持久化)存到数据库里。把程序的数据在持久状态和瞬时状态转化。
它比起JDBC更方便,使用的模板更多,所以搭建速度也更快。
什么是持久层呢?
持久层:,例如dao层,service层,controller层等,是完成持久化工作的代码块,层界限十分明显。
为什么需要Mybatis?
方便,传统的JDBC太复杂了,于是出现了框架,自动化。帮助程序员将数据存入数据库中。sql和代码分离,更容易上手,且使用的人更多。
切记:技术没有高低之分,有高低之分的是程序员的操作。
思路:搭建环境,导入Mybatis,编写代码,测试
过程:1.编写数据库。
2.新建一个meaven项目。
3.删除src目录(当做一个父工程)
4.导入依赖(基础环境完成)
5.创建一个子模块,编写Mybatis核心配置文件,
6.写入核心配置文件
7.编写Mybatis
编写Mybatis过程:
1.先写工具类mybatisutils,工具类被迫需要一个配置文件,就去resource中写个配置文件。
每一个基于Mybatis的应用都是以sqlsessionfactory 的实例为核心的。它可以得到sqlsession,包含了sql命令的所有方法。
静态代码块(static)表示它一开始就加载,就不会报错了。
注:加入sqlsessionfactory,就可以加入session实例了。
首先要使用private static Sqlsessionfactory sqlsessionfactory提升作用域。
package com.utils; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.apache.ibatis.io.Resources; import java.io.IOException; import java.io.InputStream; public class MyBatisUtils { private static SqlSessionFactory sqlSessionFactory; static { try { String resource = "Mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource);
//把资源加载进来并且给他创建一个可以使用的对象。(类似connection) sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); } catch (IOException e) { e.printStackTrace(); } } public static SqlSession getSqlSession(){ return sqlSessionFactory.openSession(); } }
2.写配置文件
<?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核心配置文件--> <configuration> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/数据库名?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8"/> <property name="username" value="你的用户名"/> <property name="password" value="你的密码"/> </dataSource> </environment> </environments> <mappers> <mapper resource="userDaomapper.xml"></mapper> </mappers> </configuration>
3.写实体类pojo
实体类需要private 类型 名字,加上constructor和getter,setter,写在pojo层。
package com.Pojo; public class users { private String name; private String pwd; private String number; private String danweixinxi; public users(String name, String pwd, String number, String danweixinxi) { this.name = name; this.pwd = pwd; this.number = number; this.danweixinxi = danweixinxi; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPwd() { return pwd; } public void setPwd(String pwd) { this.pwd = pwd; } public String getNumber() { return number; } public void setNumber(String number) { this.number = number; } public String getDanweixinxi() { return danweixinxi; } public void setDanweixinxi(String danweixinxi) { this.danweixinxi = danweixinxi; } @Override public String toString() { return "users{" + "name='" + name + '\'' + ", pwd='" + pwd + '\'' + ", number='" + number + '\'' + ", danweixinxi='" + danweixinxi + '\'' + '}'; } }
4.写mapper(dao)和mapper.xml
dao接口写在dao层,选择interface类型。dao等价于mapper。
建立一个配置文件,可以建在任何地方,我们先把他放在resource里。名字是xxxxmapper.xml
这个文件的写法:
头文件加上namespace唯一定位,绑定需要使用sql语句的文件。
mapper中的id的就相当于原本的方法名字。
resultType是返回一个结果,resultMap是返回一个集合
注意点:每一个mapper.xml都需要在mybatis的核心配置文件中注册
package com.Dao; import com.Pojo.users; import java.util.List; public interface userDao { List<users> getUserlist(); }
<?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.Dao.userDao"> <select id="getUserlist" resultType="com.Pojo.users"> select * from jdbc1.users; </select> </mapper>
然后我们就可以进入测试,使用如下代码。
可能会遇到资源过滤问题,如果出现资源过滤,我们直接把上面的xml文件移下来。
最后测试用JUnit。在text文件夹里建立和上面一样的包,在里面写xxxDaoText,获取sqlsession对象。然后执行sql。
package com.Dao; import com.Pojo.users; import com.utils.MyBatisUtils; import org.apache.ibatis.session.SqlSession; import org.junit.Test; import java.util.List; public class userDaoTest { @Test public void test() { //获取sqlSesson对象 SqlSession sqlSession; sqlSession = MyBatisUtils.getSqlSession(); //方式一 建议使用 获取这个类 不需要进行强转,更安全 userDao mapper = sqlSession.getMapper(userDao.class); List<users> UserList = mapper.getUserlist(); //方式二 直接用类里面具体的方法 //List<users> UserList = sqlSession.selectList("com.Dao.userDao.getUserlist"); for (users users : UserList) { System.out.println(users); } sqlSession.close(); } }
测试成功,可以实现此功能。
mapperRegistry是在核心配置文件中注册mappers。
可能遇到的问题:
1.配置文件没有注册
2.绑定接口错误
3.方法名不对。
4.返回类型不对,
5.meaven导出资源问题。
这是我的项目目录,仅供参考。
最后不要忘记资源关闭!!!
标签:String,danweixinxi,number,初学,MyBatis,import,public,name 来源: https://www.cnblogs.com/jiankaitianmen/p/15974528.html