标签:实体类 throws Nid 数据类型 变量 场景 ati print 情况下
类中属性的名称要和数据库的属性名称一致,不然找不到,但是开发中数据库属性命名用下划线,类中属性用驼峰,所以有时名称是不一样的。所有有了resultMap
resultMap使用场景,有映射,java实体类属性名与数据库字段名不同的情况下。
<?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"> <!-- namespace:映射文件的命名空间,内容规范就是映射文件的包名.此xml文件名 --> <mapper namespace="xxx.x.mapper.PersonTestMapper"> <!-- resultMap的type是实体类(实体数据类型),id随便起是resultMap唯一标识,下面原来的resultType去掉改成resultMap,值就是这个id 除了表里的id列用id表示外,其余都用result表示,所有属性都要写 column表示表里的字段名,property表示实体类中属性的名 --> <resultMap type="xxx.x.Person" id="BaseResultMap"> <id column = "person_id" property = "personId" /> <result column = "name" property = "name" /> <result column = "gender" property = "gender" /> <result column = "person_addr" property = "personAddr" /> <result column = "birthday" property = "birthday" /> </resultMap> <!-- parameterType是传递参数的类型,下面为整型写法 sql语句最后一个参数id是变量 resultType是查询后的结果,内容是需要输出到的地址,那个Person类里需要定义好那些需要接受数据的属性 #{}使用预编译的方式生成SQL,防止sql的注入 --> <select id="selectPersonByID" parameterType="java.lang.Integer" resultMap="BaseResultMap"> select * from person_test where id = #{id} </select> </mapper>
但resultType也不是没用,下面情况就需要用到,没有映射情况下:
<select id="selectPersonCount" resultType="java.lang.Integer" > select count(*) from person </select>
调用这个的java语句就是:
SqlSessionFactory sessionFactory; public void setUp() throws Exception { InputStream in = Resources.getResourceAsStream("sqlMapConfig.xml"); sessionFactory = new SqlSessionFactoryBuilder().build(in); } public void test() { //创建SqlSession SqlSession session = sessionFactory.openSession(); Integer count = session.selectOne("xxx.x.mapper.PersonTestMapper.selectPersonCount"); //查找到要执行的sql语句,用命名空间.id System.out.println(count); session.close(); }
标签:实体类 throws Nid 数据类型 变量 场景 ati print 情况下
原文地址:https://www.cnblogs.com/lonske/p/8979823.html