本节要点:学习框架的导入,框架的设置,框架的使用
1.
在项目中创建一个 lib 文件夹放入 mybatis 框架的 jar 包,并导入项目中
2.
在 src 中创建 com.chen.bean 包,然后创建 User 实体类。改查等操作。public class User {private Integer uid ;private String username ;private String password ;private String phone ;private String address ;...
3.接口
在 src 中创建 com.chen.dao 包,然后创建 UserDao 的接口,然后在接口中定义针对数据库的增删改查等操作。public interface UserDao {/*** 查询所有用户信息* @return*/List < User > selectAll ();}
4.创建一个file
在dao接口的同目录下创建跟接口名字一样的配置文件。
<?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 :把配置文件和接口进行映射 --><mapper namespace = "com.chen.dao.UserDao" ><!-- 通过 select 标签进行查询id: 映射接口的方法名parameterType: 指定参数的类型 ( 如果是集合类型只需要指定集合元素的类型即可 )resultType: 指定返回值的类型--><select id = "selectAll" resultType = "com.chen.bean.User" >select * from t_user;</select></mapp
5.核心配置
在 src 中创建一个文件,命名为 SqlMapConfig.xml ,在该配置文件中配置连接数据库的参数。<?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><!-- 配置环境信息 === 就是配置连接数据库的参数default :指定配置的环境信息的 id ,表示默认连接该环境--><environments default = "mysql" ><environment id = "mysql" ><!-- 配置事务的处理方式:模式使用 JDBC 的事务处理 --><transactionManager type = "jdbc" ></transactionManager><!-- 数据源的默认 type 设置为 pooled ,表示使用连接池 --><dataSource type = "pooled" ><property name = "driver" value = "com.mysql.cj.jdbc.Driver" /><property name = "url" value = "jdbc:mysql://127.0.0.1:3306/mydb" /><property name = "username" value = "root" /><property name = "password" value = "123" /></dataSource></environment><environment id = "oracle" ><transactionManager type = "" ></transactionManager><dataSource type = "" ></dataSource></environment></environments><!-- 加载 mapper 配置文件 --><mappers><mapper class = "com.chen.dao.UserDao" /></mappers
6.使用mybatis框架需要按照框架的步骤进行
public class UserTest {@Testpublic void testSelectAll () throws IOException {//1. 加载核心配置文件的字节输入流InputStream stream = Resources . getResourceAsStream ( "mybatis.xml" );//2. 创建 SqlSessionFactory 的构建对象 -- 框架使用的是构建者模式SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder ();//3. 通过构建对象加载配置文件的输入流获取 SqlSessionFactorySqlSessionFactory factory = builder . build ( stream );//4. 通过工厂对象获取 SqlSession 对象 ---- 执行 JDBC 操作的SqlSession sqlSession = factory . openSession ();//5. 通过 SqlSession 对象获取接口对应的代理对象UserDao userDao = sqlSession . getMapper ( UserDao . class );//6. 通过代理对象执行查询方法List < User > userList = userDao . selectAll ();//7. 遍历集合for ( User user : userList ) {System . out . println ( user );}}}
7.已经完成功能
1.
public interface Daoo { List<Emp> selectAll(); //根据id查询 Emp selectByid(int eid); //增加SELECT*FROM aww WHERE eid=1 int add(Emp user); //删除 int del(int gid); int update(Emp emp); }
sql语句:
<mapper namespace="dao.Daoo"> <select id="selectAll" resultType="bean.Emp"> SELECT * FROM aww </select> <insert id="add" parameterType="bean.Emp"> insert into aww(ename,dept,job,sal,phone,address) values(#{ename},#{dept},#{job},#{sal},#{phone},#{address}); </insert> <delete id="del" parameterType="bean.Emp"> delete from aww where eid=#{eid} </delete> <select id="selectByid" parameterType="int" resultType="bean.Emp"> SELECT*FROM aww WHERE eid=#{eid} </select> <update id="update" parameterType="bean.Emp"> update aww set ename=#{ename},dept=#{dept},job=#{job},sal=#{sal},phone=#{phone},address=#{address} where eid=#{eid} </update> </mapper>
方法:
public class Tset {
InputStream stream = null;
SqlSessionFactoryBuilder builder = null;
SqlSessionFactory factory = null;
SqlSession sqlSession = null;
Daoo userDao=null;
//简约版
@Before
public void init() throws IOException {
stream = Resources.getResourceAsStream("mybatis.xml");
builder = new SqlSessionFactoryBuilder();
factory = builder.build(stream);
sqlSession = factory.openSession();
userDao = sqlSession.getMapper(Daoo.class);
}
@Test
public void testSelectAll() throws IOException {
List<Emp> userList = userDao.selectAll();
for (Emp user : userList) {
System.out.println(user);
}
}
@Test
public void add() throws IOException {
Emp dao = new Emp();
dao.setEname("刑天");
dao.setDept("9898");
dao.setJob("远古巨神");
dao.setSal("5979");
dao.setPhone("159796349");
dao.setAddress("北京");
int add = userDao.add(dao);
//判断
if (add > 0) {
System.out.println("成功进入,虚空");
}
}
@Test
public void del() throws IOException {
int del = userDao.del(2);
//判断
if (del > 0) {
System.out.println("成功进入,虚空消失");
}
}
@Test
public void sel() throws IOException {
Emp emp = userDao.selectByid(1);
System.out.println(emp);
}
@Test
public void updeat() {
Emp emp = userDao.selectByid(1);
System.out.println("修改前"+emp);
emp.setEname("耨你");
emp.setDept("大碗大碗的");
userDao.update(emp);
Emp newemp = userDao.selectByid(1);
System.out.println("修改后"+newemp);
}
}