mybatis配置开发
2024-10-20 01:43:27
以mysql为例:
一、需要的架包:mybatis.jar和mysql-connector-java.jar
二、一般会有两类配置文件:数据库配置文件和要执行的sql语句
数据库配置文件(配置文件中有关数据库的信息可以直接配置也可以通过properties文件进行配置):
- <?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>
- <properties resource="db.properties"/>
- <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/mydata" />
- <property name="username" value="root" />
- <property name="password" value="tian" /> -->
- <property name="driver" value="${driver}" />
<!--通过db.properties文件进行配置--> - <property name="url" value="${url}" />
- <property name="username" value="${name}" />
- <property name="password" value="${password}" />
- </dataSource>
- </environment>
- </environments>
- <mappers>
- <!-- 注册userMapper.xml文件,
- userMapper.xml位于me.gacl.mapping这个包下,所以resource写成me/gacl/mapping/userMapper.xml-->
- <mapper resource="infomap.xml"/>
- <mapper class="mybatis.BatisInfo"></mapper>
- </mappers>
- </configuration>
db.properties文件
- driver=com.mysql.jdbc.Driver
- url=jdbc:mysql://localhost:3306/mydata
- name=root
- password=tian
三、通过sql语句对数据库进行操作
(1)数据库表结构: id,name,password
(2)创建一个与表结构对应类
- package mybatis
- public class Info {
- private int id;
- private String name;
- private String password;
- public void setId(int id)
- {
- this.id=id;
- }
- public int getId()
- {
- return id;
- }
- public void setName(String name)
- {
- this.name=name;
- }
- public String getName()
- {
- return name;
- }
- public void setPassword(String password)
- {
- this.password=password;
- }
- public String getPassword()
- {
- return password;
- }
- public String toString()
- {
- return "name"+name+";password"+password;
- }
- }
(3)对表进行增删改查配置操作,有两种配置方法:xml和接口类
1)、xml方式:思想就是给每条sql语句设置一个id,然后一个参数的类型和一个返回值的类型以及一条sql语句
- <?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,namespace的值习惯上设置成包名+sql映射文件名,这样就能够保证namespace的值是唯一的
- 例如namespace="me.gacl.mapping.userMapper"就是me.gacl.mapping(包名)+userMapper(userMapper.xml文件去除后缀)
- -->
- <mapper namespace="me.gacl.mapping.userMapper">
- <!-- 在select标签中编写查询的SQL语句, 设置select标签的id属性为getUser,
- id属性值必须是唯一的,不能够重复使用parameterType属性指明查询时使用的参数类型,
- resultType属性指明查询返回的结果集类型resultType="me.gacl.domain.User"
- 就表示将查询结果封装成一个User类的对象返回User类就是users表所对应的实体类-->
- <!--根据id查询得到一个user对象-->
- <select id="getUser" parameterType="int"
- resultType="mybatis.Info">
- select * from info where id=#{id}
- </select>
- <insert id="addUser" parameterType="mybatis.Info">
- insert into info (name, password) values (#{name},#{password})
- </insert>
- <delete id="deleteUser" parameterType="int">
- delete from info where id=#{id}
- </delete>
- <update id="updateInfo" parameterType="mybatis.Info" >
- update info set name=#{name},password=#{password} where id=#{id}
- </update>
- <select id="getAllUsers" resultType="mybatis.Info">
- select * from info
- </select>
- </mapper>
通过xml对表进行增删改查
- @Test
- public void testAdd()
- {
- SqlSession sqlSession=BatisSession.getSqlSession(true);
- String statement="me.gacl.mapping.userMapper.addUser"; //xml中的namespace+id
- Info info=new Info();
- info.setName("tian");
- info.setPassword("tian");
- int result=sqlSession.insert(statement, info); //sql语句+参数,最后一个返回值
- sqlSession.close();
- System.out.println(result+"sjdjsjd");
- }
- @Test
- public void testDelete()
- {
- SqlSession sqlSession=BatisSession.getSqlSession(true);
- String statement="me.gacl.mapping.userMapper.deleteUser";
- int result=sqlSession.delete(statement,2);
- sqlSession.close();
- System.out.println(result);
- }
- @Test
- public void getAll()
- {
- SqlSession sqlSession=BatisSession.getSqlSession(true);
- String statement="me.gacl.mapping.userMapper.getAllUsers";
- List<Info> list=sqlSession.selectList(statement);
- sqlSession.close();
- System.out.println(list);
- }
2)采用接口注视方法:
接口类:
- public interface BatisInfo {
- //包括一个sql 语句,一个函数及函数的参数,函数返回值
- @Insert("insert into info(name,password) values(#{name},#{password})")
- public int add(Info info);
- @Delete("delete from info where id=#{id}")
- public int delete(int id);
- @Select("select * from info where id=#{id}")
- public Info getById(int id);
- @Select("select * from info")
- public List<Info> getAll();
- @Update("update info set name=#{name},password=#{password} where id=#{id}")
- public int update(Info info);
- }
通过接口类进行操作
- @Test
- public void testAdd()
- {
- SqlSession sqlSession=BatisSession.getSqlSession(true);
- BatisInfo batisInfo=sqlSession.getMapper(BatisInfo.class); //获得接口类
- Info info=new Info();
- info.setName("annotion");
- info.setPassword("annotion");
- int result=batisInfo.add(info);//调用函数,传入参数,获得操作结果
- sqlSession.close();
- System.out.println(result);
- }
- @Test
- public void testDelete()
- {
- SqlSession sqlSession=BatisSession.getSqlSession(true);
- BatisInfo batisInfo=sqlSession.getMapper(BatisInfo.class);
- int result=batisInfo.delete(4);
- sqlSession.close();
- System.out.println(result);
- }
- @Test
- public void testUpdate()
- {
- SqlSession sqlSession=BatisSession.getSqlSession(true);
- BatisInfo batisInfo=sqlSession.getMapper(BatisInfo.class);
- Info info=new Info();
- info.setName("annotiontest");
- info.setPassword("annotiontest");
- int result=batisInfo.update(info);
- sqlSession.close();
- System.out.println(result);
- }
- @Test
- public void testGetAll()
- {
- SqlSession sqlSession=BatisSession.getSqlSession(true);
- BatisInfo batisInfo=sqlSession.getMapper(BatisInfo.class);
- List<Info> list=batisInfo.getAll();
- sqlSession.close();
- System.out.println(list);
- }
最新文章
- aliyun ubuntu mysql
- IE firefox 兼容性整理
- 【转载】Android通过ksoap2调用.net(c#)的webservice
- [PHP]利用XAMPP搭建本地服务器, 然后利用iOS客户端上传数据到本地服务器中(三. PHP端代码实现)
- 前端必会html知识整理
- c:翻转一个长句中的每个单词
- java日期转化
- TensorFlow 常用函数汇总
- Python一行代码实现快速排序
- excel身份证验证(附带防止粘贴导致校验失效的函数)
- Error: Cannot find module &#39;babel-helpers&#39;
- WINDOWS SERVER 2008 R2安装指南
- SpringBoot 实现前后端分离的跨域访问(CORS)
- node.js实现WebSocket
- Django Model._meta API
- bzoj1151 动物园
- Qwe中的数值结算
- Java并发编程笔记—摘抄—基础知识
- 最长公共子序列(DP)
- activiti基础环境搭建创建数据库表及策略